.K.I.L.L.U.A.
Neuling
Hallo Forum,
mir geht es nur um eine kleine Klasse, die ich geschrieben habe um die Leistung meines Prozessors zu testen.
Ich wäre für Anregungen bzgl des Klassendesigns dankbar.
Um allen unnötigen Ballast loszuwerden habe ich mich für C++ als Sprache entschieden und da dies nur ein kleiner Test sein soll muss die Konsolenanwendung reichen (vielleicht kommt noch ne GUI mit QT).
Kompiliert habe ich mit MSVC 2010. Da jedoch mit /MT bzw. /MTd kompiliert wurde sollte das ganze auch ohne .Net Framework 4 laufen.
In der 7-Zip Datei findet Ihr zwei Projektordner "Cpu_Performance_Test" und "Cpu_Performance_Test_AVX" wie der Name schon sagt wurden die Release Versionen des zweiten Projekts mit /arch:AVX kompiliert. In dem x64 Ordner der Projekte findet Ihr die 64bit Versionen. Die Debug Versionen sind ohne Optimierungen kompiliert worden. Alle Release Versionen sind mit /arch:SSE2 /O2 /Ob2 /Oi /Ot /fp: precise kompiliert.
Leider konnte ich die AVX Versionen nicht testen, da ich keinen Sandy habe.
Zur Klasse an sich:
Die Zeitmessung findet mit boost::timer statt.
Es werden Integeroperationen, Bitoperationen, Gleitkommaoperationen einfacher und doppelter Genauigkeit sowie Logischeoperationen in Loops gezählt bis 0.01s vergangen ist. (Ich habe das Gefühl, dass der Kompilier in den Release Versionen die Operationen wegoptimiert, da diese die selben Ausdrücke sind?)
Momentan ist die Klasse singlethreaded. Eine Erweiterung der Klasse mit boost::thread ist geplant. Ich habe mir allerdings noch nicht überlegt wie das ganze ablaufen soll. -> Wahrscheinlich werde ich einfach soviele Threads erstellen wie es logische Prozessoren/Hardwarethreads gibt und den Test in jedem Thread laufen lassen und dann die Ergebnisse addieren.
edit:
Ich habe die Tests verändert. Der Kompiler kann jetzt nicht mehr optimieren.
Außerdem wird der Test 7 mal durchgeführt. Anschleißend die jeweils höchsten und niederigsten Werte gelöscht und von den restlichen 5 Werten der Mittelwert gebildet.
Download:
15.38 MB
CpuTest_2.7z
mir geht es nur um eine kleine Klasse, die ich geschrieben habe um die Leistung meines Prozessors zu testen.
Ich wäre für Anregungen bzgl des Klassendesigns dankbar.
Um allen unnötigen Ballast loszuwerden habe ich mich für C++ als Sprache entschieden und da dies nur ein kleiner Test sein soll muss die Konsolenanwendung reichen (vielleicht kommt noch ne GUI mit QT).
Kompiliert habe ich mit MSVC 2010. Da jedoch mit /MT bzw. /MTd kompiliert wurde sollte das ganze auch ohne .Net Framework 4 laufen.
In der 7-Zip Datei findet Ihr zwei Projektordner "Cpu_Performance_Test" und "Cpu_Performance_Test_AVX" wie der Name schon sagt wurden die Release Versionen des zweiten Projekts mit /arch:AVX kompiliert. In dem x64 Ordner der Projekte findet Ihr die 64bit Versionen. Die Debug Versionen sind ohne Optimierungen kompiliert worden. Alle Release Versionen sind mit /arch:SSE2 /O2 /Ob2 /Oi /Ot /fp: precise kompiliert.
Leider konnte ich die AVX Versionen nicht testen, da ich keinen Sandy habe.
Zur Klasse an sich:
Die Zeitmessung findet mit boost::timer statt.
Es werden Integeroperationen, Bitoperationen, Gleitkommaoperationen einfacher und doppelter Genauigkeit sowie Logischeoperationen in Loops gezählt bis 0.01s vergangen ist. (Ich habe das Gefühl, dass der Kompilier in den Release Versionen die Operationen wegoptimiert, da diese die selben Ausdrücke sind?)
Momentan ist die Klasse singlethreaded. Eine Erweiterung der Klasse mit boost::thread ist geplant. Ich habe mir allerdings noch nicht überlegt wie das ganze ablaufen soll. -> Wahrscheinlich werde ich einfach soviele Threads erstellen wie es logische Prozessoren/Hardwarethreads gibt und den Test in jedem Thread laufen lassen und dann die Ergebnisse addieren.
edit:
Ich habe die Tests verändert. Der Kompiler kann jetzt nicht mehr optimieren.
Außerdem wird der Test 7 mal durchgeführt. Anschleißend die jeweils höchsten und niederigsten Werte gelöscht und von den restlichen 5 Werten der Mittelwert gebildet.
Download:
15.38 MB
CpuTest_2.7z
Zuletzt bearbeitet: