Czas wykonania funkcji
Ostatnio zmodyfikowano 2015-10-15 16:48
SocrateZ Temat założony przez niniejszego użytkownika |
» 2015-08-18 23:32:03 Do czego ci ta wartość..? |
Do porównania? Więc co? Po prostu nic nie robić? Nie sprawdzać która szybsza? Po prostu olać to? A jeżeli sprawdzać to co i jak to robić efektywnie? Dać do pętli i mierzyć czas wykonania funkcją clock()? |
|
1aam2am1 |
» 2015-08-18 23:51:35 Nie znam najlepszej metody liczenia czasu wykonania funkcji ale ja bym nieliczył czasu wykonania jednej funkcji ale np tysiąca lub więcej w pętli. Co dawało by mi zauważalne różnice. Edit. Zamiast for( counter = 0; counter < 10; ++counter ) { testdbl = counter * 9.3; timer[ counter ] = __rdtsc(); sumx += ms_lsdc10( testdbl, 5 ); timer[ counter ] = __rdtsc() - timer[ counter ]; printf( "- Pass %d: %ld\n", counter + 1, timer[ counter ] ); }
Dałbym: for( counter = 0; counter < 10; ++counter ) { testdbl = counter * 9.3; timer[ counter ] = __rdtsc(); for( int32_t i = 0; i < 10000; ++i ) { sumx += ms_lsdc10( testdbl, 5 ); } timer[ counter ] = __rdtsc() - timer[ counter ]; printf( "- Pass %d: %ld\n", counter + 1, timer[ counter ] ); } |
|
pekfos |
» 2015-08-19 17:11:02 Więc co? Po prostu nic nie robić? Nie sprawdzać która szybsza? Po prostu olać to? |
Tak. Nie sprawdzaj wydajności pojedynczych klocków, bo to zależy od kontekstu. Odpal profiler na większej ilości swojego kodu, czyli kiedy będziesz mieć faktyczny, realny kontekst i będziesz mógł wprowadzić faktyczne optymalizacje. W testowym programie jedno może działać szybciej, w innym już wcale niekoniecznie. A gdy będziesz mieć właściwy program, to takie optymalizacje rzadko kiedy mają sens. Lepiej optymalizować złożoność, a nie oszczędzać kilka cykli tu i tam - różnic w takich groszowych sprawach nikt i tak nie odczuje. |
|
C-Objective |
» 2015-10-15 16:48:54 Wygeneruj plik gmon.out i przeleć programikiem do sprawdzania to ci wyswietli |
|
1 « 2 » |