Załóżmy, że wiem, iż dana funkcja wykonuje się 11213 razy na sekundę. Jak mogę obliczyć ilość milisekund przypadającą na 1 operację?
1s = 1000 ms
czy to będzie 11213 / 1000 ? Czy to mi da ilość milisekund przypadającą na pojedynczą operację?
Załóżmy, że wiem, iż dana funkcja wykonuje się 11213 razy na sekundę. Jak mogę obliczyć ilość milisekund przypadającą na 1 operację?
1s = 1000 ms
czy to będzie 11213 / 1000 ? Czy to mi da ilość milisekund przypadającą na pojedynczą operację?
musisz użyć timera tzn przed wywołaniem tej funkcji co chcesz obliczyć jej czas sprawdzasz bieżący czas po wywołaniu tejże funkcji też sprawdzasz czas i później te 2 wartości odejmujesz od siebie i masz czas jednego wywołania
To ci da ŚREDNIĄ ilość operacji na milisekundę
Tak właśnie robię, ale pojedyncze wywołanie daje mi czas 0.0, czy to sekund, czy milisekund. Dlatego zastanawiam się, jak zmierzyć to w inny sposób.
Możesz użyć profilera, on ci takie informacje poda.
f = 11213 Hz
T = 1/f = 1/11213 s =~ 0,00008918219 s = 0,08918219 ms
czy to będzie 11213 / 1000 ?
nie, 1000/11213
(czyli 1/11213 * 1000)
mamy załóżmy procesor 3.4 GHz czyli jest on w stanie wykonać 3400000000 cykli na sekundę. Jedynym wyjściem by było policzenie jakoś(nie wiem czy to w ogóle możliwe) ile cykli procesora zajmuje dana funkcja. teraz pytanie skoro procesor jest w stanie wykonać 3400000000 cykli na sekundę to ile mu zajmie wykonanie cykli od całej funkcji. Załóżmy dla przykładu ,że dana funkcja zajmuje 1000 cykli procesora.
Teraz z proporcji:
3400000000 - 1
1000 - x
3400000000x = 1000
1000 / 3400000000 = 2,9411764705882352941176470588235e-7
czyli wykonanie funkcji będzie wynosiło:
0,00000029411764705882352941176470588235 sekundy
Jak obliczysz ile cykli zajmuje dana funkcja to będziesz w stanie wyliczyć także czas jej wykonania dość dokładnie znając oczywiście taktowanie procesora.
Poprawcie mnie jeśli się mylę
//edit
chociaż w sumie procek cały czas nie pracuje na tej samej częstotliwośći jest ona czasem obniżana w zależności od zapotrzebowania, więc musiałbyś jakoś zdobyć aktualną częstotliwość z jaką pracuje procek. Wtedy będziesz miał najdokładniejszy z możliwych wyników