Przeliczanie milisekundy na operacje

0

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ę?

0

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

0

To ci da ŚREDNIĄ ilość operacji na milisekundę

0

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.

0

Możesz użyć profilera, on ci takie informacje poda.

0
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)

0

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

0

@Shalom: fajne rozwiązanie, ale odpada, muszę zrobić to w kodzie

@Azarien: ok, więc wzór to 1/11213 * 1000, dzięki :)

@robcio: ilość cykli liczę za pomocą rdtsc - zawsze da to jakiś ~ wynik

1 użytkowników online, w tym zalogowanych: 0, gości: 1