Delphi - Důvěryhodnost GetTickCount
Dobrý den,
snažím se optimalizovat program psaný v jazyce Pascal. Jedná se o konzolovou aplikaci. Na počátku zjistím čas systému pomocí GetTickCount a na konci provedu odečet od konečného času získaného opět GetTickCount. Je tato metoda zjišťování délky trvání algoritmů důvěryhoná, je systémový čas lineární?
Důvod otázky:
Program využívá funkce Random(), ale ne funkci Randomize, takže měření by mělo probíhat se stejnou tabulkou náhodných čísel. Používal jsem 4 lokální proměnné Boolean. Po nějaké době jsem je přestal používat v programu, ale nechal jsem je nadeklarované. Prováděl jsem měření pomocí výše uvedené metody.
Měření s nevyužívanými proměnnými: 4875, 4859 (Tyto dvě hodnoty se střídají)
Měření bez nevyužitých proměnných: 4968, 5000, 5109, 4969, 4984, atd. (Téměř každé měření jinou hodnotu)
Děkuji
Máš to nějaké pomalé... Java 1.6.0, stará E6300.
Pomale to ma proto, ze decrementuje primo ten extended. Pokud to, stejne jako ty, pretypuje na LongInt (v Delphi na Int64), pak to trva stejne jako u tebe
Zkousel jsem, jestli se nejak projevi Do While a Repeat - Until a ne
A kdyz I nadeklaruju jako LongInt misto Int64 (protoze to uz je hodne velky kalibr), tak jsem s casem na 437ms.
Jaký máš HW?
V Javě vlastně stačí normal int. Teď jsem na 850ms, níž už to na mojem HW asi nesrazím...
Hardware? Lenovo ThinkPad T61
Stejné výsledky jsem na tom notebooku dostal i ve VirtualBoxu.
Pokud si to chces zkusit spustit u sebe, zde je zkompilovany EXE vcetne zdrojaku:
qqq-rar
358 na i5-2410M