Witam,
Piszę konsolowy programik mierzący czas wykonywania się kodu w asemblerze oraz w C++. Program składa się z czterech "etapów", których czasy wykonania są mierzone. Są to kolejno:
- Krótka pętla we wstawce asemblerowej
- Jej odpowiednik w C++
- Wywołanie programu .com (napisanego wcześniej w asemblerze - pomiar czasu jest wykonywany w tym podprogramie)
- Wywołanie funkcji która wykonuje to samo co program .com (wielokrotne obliczanie silni)
Wszystko było dobrze, gdy kompilowałem program w trybie debug - czasy pierwszych dwóch kroków wynosiły bodajże odpowiednio 0,016 oraz 0,045 sekund, etap 3 - około 50 sekund, etap 4 - około dwie minuty. Chciałbym jednak odpalić program na innym komputerze, żeby porównać wyniki - kompiluję w trybie release i okazuje się że czasy kroków 2 i 4 wynoszą jakieś śmieszne małe wartości - w obu przypadkach około jednej miliardowej sekundy - niezależnie od tego czy odpalam program u siebie czy na tym drugim komputerze.
Czasy wykonywania się kodu asemblerowego oraz programiku .com są (mniej więcej) takie same).
Dlaczego? Oczywiście zdaję sobie sprawę, że program powinien się wykonywać szybciej po kompilacji w trybie release, ale... żeby z dwóch minut zjechać do prawie zera??
Do pomiaru czasu używam funkcji QueryPerformanceCounter() (oprócz kroku 3 oczywiście). Używam VC++ 2005 Express.
Z góry dzięki za jakąkolwiek pomoc :)