- 1'000'000 sowie 10'000'000x WaitForSingleObject() und ReleaseMutex()
- 1'000'000x sowie 10'000'000x AcquireFastMutex() und ReleaseFastMutex()
- 10'000'000x CLI und STI => Interrupts de- und aktivieren
- 10'000'000x PUSHF; POP; CLI; PUSH; POPF => Flags speichern, Interrupts deaktivieren, Flags wiederherstellen
- 1'000'000x MOV EAX, CR3; MOV CR3, EAX => Kontextwechsel
- 10'000'000x NOP => Nullbefehl
- 10'000'000x X: JMP X => Endlosschleife
- 10'000'000x Aufruf einer Funktion mit nur einem Return-Befehl.
Dann der Kontextwechsel: Diese sind auf der x86-Plattform als sehr langsam bekannt. Und auf meinem P4 sind sie nur knapp die Hälfte schneller als auf einem P1/100 - hier hat Intel regelrecht gepfuscht.
Der Nullbefehl ist interessanterweise unter VirtualPC schneller als auf dem echten PC. Möglicherweise erkennt VirtualPC die Schleife und überspringt sie. Ebenfalls erstaunlich ist, dass die Funktionsaufrufe in der Regel schneller sind als JMPs.
Auch wenn euch das Zeugs von oben nicht wirklich interessiert, probiert den Benchmark einmal aus, am besten auf dem richtigen PC, aber auch in Emulatoren - und postet die Resultate Thx!
>> Download: Hier
Das File ist ein (RAR-komprimiertes) bootfähiges Diskettenimage und kann mit RawWrite auf eine Diskette geschrieben oder im Emulator direkt verwendet werden.
Dieser Beitrag wurde von Dimension bearbeitet: 27. März 2004 - 17:48