Szybkość funkcji ze wskaźnikami i bez
Ostatnio zmodyfikowano 2016-10-27 18:28
Lich555 Temat założony przez niniejszego użytkownika |
Szybkość funkcji ze wskaźnikami i bez » 2016-10-24 21:52:44 Witam. Zrobiłem ostatnio taki mini programik mierzący czas wykonywania funkcji bez i z użyciem wskaźników. Jest taki problem, że czas jest identyczny w obu przypadkach. Czyżby funkcje były za małe, żeby widać było różnice? Funkcja wykonywana z pomocą wskaźników nie powinna się cechować szybszym wykonaniem? #include <iostream> #include <chrono> #include <iomanip>
using namespace std; using tp = std::chrono::time_point < std::chrono::system_clock >; using duration = std::chrono::duration < float >;
void przedzielacz_tabl( char tab[] ); void przedzielacz_wsk( char * w );
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(); return 0; }
void przedzielacz_tabl( char tab[] ) { int i = 0; while( tab[ i ] ) { cout << tab[ i++ ] << "-"; } }
void przedzielacz_wsk( char * w ) { while( * w ) { cout << *( w++ ) << "-"; } }
|
|
Gibas11 |
» 2016-10-24 21:58:14 Musiałbyś zrobić straszne cuda z kompilatorem, żeby te 2 funkcje wygenerowały różny kod maszynowy. Bo zdziwię się, jeśli w ramach optymalizacji kompilator nie sprowadził obu do czegoś dokładnie takiego samego. |
|
carlosmay |
» 2016-10-24 22:02:51 Można wiedzieć jakie masz wyniki? |
|
Lich555 Temat założony przez niniejszego użytkownika |
» 2016-10-24 22:40:37 Wyniki nie zawsze są takie same, co mnie lekko zdziwiło (tzn. w stosunku do siebie, to czasy funkcji są identyczne, po prostu zmieniają się z każdym odpaleniem programu). Przykładowy wynik dla 10 miejsc po przecinku (dalej są takie same liczby, ale nie chce mi się przepisywać, napiszę tylko czasy wykonania, reszta zapewne dla Ciebie nieważna): |
|
pekfos |
» 2016-10-24 22:46:52 Obie funkcje używają wskaźnika. |
|
Lich555 Temat założony przez niniejszego użytkownika |
» 2016-10-24 23:04:34 Jest to przykład z Symfonii C++, wg której poruszanie się po tablicy za pomocą wskaźnika jest szybsze. |
|
pekfos |
» 2016-10-24 23:12:23 W tak prostym scenariuszu, bzdura. |
|
Gibas11 |
» 2016-10-24 23:27:24 >Symfonia c++ >2016 Wybierz jedno? Ta książka najwyraźniej nie tłumaczy już dobrze nawet podstaw. |
|
« 1 » 2 |