2016-05-11 6 views
0

Meiner Meinung nach testen, ich habe zwei Möglichkeiten, dies zu tun:
One ist eine Schleife zu verwenden:
Wie die CPU mit einem einfachen C++ Programm

t1 = getTime(); 
for(int i = 0; i < 9999999; i++) 
{} 
t2 = getTime(); 

Und jetzt kann ich t2 - t1 überprüfen.

Die andere ist es, viele Threads zu erstellen, jeder Thread macht die gleiche Schleife oben.

Ich weiß nicht, ob der zweite Weg besser ist als der erste.

Oder gibt es vielleicht bessere Möglichkeiten, CPU zu testen?

+0

Testen Sie die CPU für was? – jaket

+0

@Jaket Ich denke, es ist eine schlechte Formulierung. Es sieht so aus, als wären sie neugierig auf das Timing der Ausführung von Code. –

+0

Ein moderner Optimierer wird Ihre gesamte Schleife wegwerfen. Und was willst du mit diesem Test erreichen, wie @jet sagt? Wie testen Sie ein Fahrrad? Heben Sie das Hinterrad an und drehen Sie die Pedale mit einer Hand und wenn das Rad schnell dreht, schließen Sie, dass das Fahrrad gut sein muss? – 5gon12eder

Antwort

4

Diese Schleife macht nichts und wird von jedem vernünftigen Compiler optimiert.

Um vernünftige Benchmark-Ergebnisse zu erhalten, müssen Sie (etwas) vernünftige Probleme lösen, wie die Berechnung vieler Ziffern von pi, die Suche nach großen Primzahlen oder andere Aufgaben, auf die Sie Ihre Definition von schnell aufbauen möchten. mit guten Implementierungen von effizienten Algorithmen.

-2
t1 = getTime(); 
int n=0; 
for (int i = 0; i < 1000000000; i++) 
    n += i; 
t2 = getTime(); 
cout << n << endl; 
+0

a) Dies wird zumindest auf den gängigsten Plattformen "int" überlaufen. b) Immer noch optimiert auf eine O (1) -Operation: http://coliru.stacked-crooked.com/a/a585579144bf54eb –

+0

a) ja, also was – user31264

+0

b) überprüfte es mit g ++ -O3; zumindest g ++ ist nicht so schlau – user31264

Verwandte Themen