Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Szybkość funkcji ze wskaźnikami i bez

Ostatnio zmodyfikowano 2016-10-27 18:28
Autor Wiadomość
mateczek
» 2016-10-25 20:28:19
masz takie same czasy bo wyświetlasz tą samą zmienną. Aczkolwiek wątpię by różnice były podyktowane algorytmem najwolniejsze z tego wszystkiego jest cout :P

C/C++
int main()
{
    char ostrzezenie[ 80 ] = { "Alarm trzeciego stopnia" };
    cout << setprecision( 20 );
   
    cout << "wersja tablicowa \n";
    tp start = std::chrono::system_clock::now();
    przedzielacz_tabl( ostrzezenie );
    duration d = std::chrono::system_clock::now() - start;
    cout << endl << d.count();
   
    cout << "\nwersja wskaznikowa \n";
    tp start1 = std::chrono::system_clock::now();
    przedzielacz_wsk( ostrzezenie );
    duration d1 = std::chrono::system_clock::now() - start1;
    cout << endl << d.count(); // powinno być d1.count();
   
    return 0;
P-152917
carlosmay
» 2016-10-25 21:52:27
Aczkolwiek wątpię by różnice były podyktowane algorytmem najwolniejsze z tego wszystkiego jest cout :P
... i to też można przyspieszyć.
P-152922
Lich555
Temat założony przez niniejszego użytkownika
» 2016-10-25 22:14:25
@mateczek
Dzięki wielki. Jak zwykle najprostszy (najgłupszy) błąd...
Widać różnicę, widać :P
W Symfonii pisze, że używanie wskaźników jest szybsze. Nie pisze, że w tym konkretnym przypadku tak jest. Ja to chciałem po prostu sprawdzić na własną rękę.
P-152924
pekfos
» 2016-10-26 00:37:53
W Symfonii pisze, że używanie wskaźników jest szybsze.
Szybsze od czego?
P-152928
mateczek
» 2016-10-26 06:45:11
Nawet jeśli w przypadku tablic inkrementowana jest zmienna, A potem do początku tablicy dodawana wartość tej zmiennej po by policzyć adres elementu. Nie jest to coś czym należało by zaprzątać sobie głowę. Różnice w czasie są niezauważalne.
P-152932
Monika90
» 2016-10-26 16:25:07
Widać różnicę, widać :P
Może nie włączyłeś optymalizacji.




C/C++
void przedzielacz_tabl( char tab[] )
{
    int i = 0;
   
    while( tab[ i ] )
    {
        cout << tab[ i++ ] << "-";
    }
}

Wg deklaracji typem parametru tab jest tablica o nieznanym rozmiarze, ale reguły C i C++ nakazują kompilatorom przekształcić taką deklarację w char* tab, więc tab to jest wskaźnik, dokładnie taki sam jak w w funkcji void przedzielacz_wsk(char * w);
P-152947
Lich555
Temat założony przez niniejszego użytkownika
» 2016-10-27 18:28:07
Czyli jest to wskaźnik to tab [0]?
Co masz na myśli mówiąc o optymalizacji? Z tego co widziałem to ludziom w takiej sytuacji zawsze druga pętla (u mnie ta "wskaźnikowa") wykonuje się szybciej.
P-152985
1 « 2 »
Poprzednia strona Strona 2 z 2