Geschwindigkeit, die stark variiert, wenn derselbe Code auf Intel i7 ausgeführt wird

371
Jayeon Yi

Ich habe eine Intel i7-5500U-CPU (2,40 GHz), und ich verwende derzeit ein paar fast gleiche Codes (mit c codiert) hintereinander. Ich schaute auf den Task-Manager (und mein Programm) und bemerkte, dass etwas Bizzare passiert.

Ich muss wahrscheinlich zuerst erwähnen, dass hier mehr CPU-Auslastung in allen Fällen zu einer schnelleren Berechnung führt.  Etwa 30% der CPU-Nutzung führen zu einer etwa viermal schnelleren Berechnung als etwa 9%. Wenn es um 9% zu laufen beginnt, bleibt es bis zum Ende auf diesem Wert. Gleich mit 30%.

Zum Beispiel lief gestern ein Code mit etwa 30% CPU-Auslastung, aber heute habe ich nur etwa 9% verwendet. 9% waren das übliche, ich hatte fast 30% 0-mal.

Dies bedeutet, dass auf meinem Laptop ein Code, der 4x-Geschwindigkeit als üblich ausführen kann, die meiste Zeit nicht so schnell läuft, übrigens auf dem Laptop einer anderen Person, er läuft immer 4x-Geschwindigkeit.

Ich finde den vierfachen Geschwindigkeitsunterschied im selben System sehr seltsam, vor allem, wenn in beiden Fällen nur das Programm und der Editor im Hintergrund liefen.

Was ich also tun möchte, ist, dass ich bei jeder Ausführung des Codes schnell Berechnungen durchführen möchte.  Ist das möglich?

Das Erhöhen der Priorität über den Task-Manager hat nicht funktioniert. Auch die Einstellung 'Echtzeit' hat nichts geändert.

Das Programm ist Single-Threading und ist nicht E / A-intensiv.

Wenn weitere Informationen benötigt werden, teilen Sie mir dies bitte mit. Ich werde es hier schreiben. Natürlich außer Sachen wie "post den ganzen Code".

Vielen Dank für Ihre Zeit im Voraus.

UPDATE: Ich habe heute morgen den Task-Manager angesehen und etwas Bizzare passiert. Kurz nachdem ich die Maus bewegt hatte und der Bildschirm wieder angezeigt wurde (Sie wissen, wie sich der Bildschirmschoner und der schwarze Bildschirm nach etwa 15 Minuten zeigen?), Sank die CPU-Auslastung schnell von etwa 30% auf etwa 9% (Taskmanager) war auch die ganze Zeit) und als ich mir den Fortschritt anschaute, war er ein paar Mal schneller gelaufen, als er hätte sein sollen. Es hätte ungefähr 17 Stunden gedauert, um den Vorgang abzuschließen, aber es waren nur 10 Stunden vergangen, und das Programm hatte mehr als 5/6 der Arbeit geleistet.

UPDATE2: Ja, ich weiß, dass die CPU-Auslastung kein guter Weg ist, um die Leistung zu messen. In diesem Fall lief der Code jedoch in allen Fällen, in denen die CPU-Auslastung 30% betrug, einige Male schneller als bei einer CPU-Auslastung von 9%. Ich verwende die Ausdrücke "ungefähr 30%" und "ungefähr 9%", um nur zu sagen, dass die Geschwindigkeit unterschiedlich war und auf dem Task-Manager sichtbar war. Wenn Sie bezweifeln, dass es mit 30% schneller lief, müsste ich Ihnen sagen, dass der Code immer etwa 4000 Sekunden lief, wenn er 30% zeigte, und immer etwa 16.000, wenn er 9% zeigte. Ja. jedes Mal.

UPDATE3: Ich habe diesen Code im Laufe eines Monats ausgeführt (mit einigen sehr einfachen Bearbeitungsschritten, wie zum Beispiel dem Ändern einiger Variablen), und ich habe meinen Laptop im Laufe des Monats mehrmals neu gestartet.

UPDATE4: Der Code läuft jedes Mal mit der gleichen Geschwindigkeit (und 4-mal schneller als meine "normale" Geschwindigkeit (9%)) auf dem Intel i5 meines Kollegen (4. Generation M).

0
Wenn Sie schnellere Berechnungen wünschen, machen Sie Ihre Frage nicht wirklich klar. Sie erwähnen 4x, verraten uns aber nicht, was Sie auch vergleichen Ramhound vor 7 Jahren 0
Ein Code läuft 1x (die übliche Geschwindigkeit), aber gelegentlich 4x, so dass ich es so machen möchte, dass er immer 4x Geschwindigkeit von dem macht, was ich jetzt am meisten erlebe, wenn ich den Code ausführte. Ich weiß, dass dies eine bizarre Situation ist, aber es passiert ... Übrigens, ich habe das korrigiert, worauf Sie hingewiesen haben! Ist es jetzt klarer? Jayeon Yi vor 7 Jahren 0
Was macht das Programm? Auf welchem ​​Betriebssystem läuft es? Dave vor 7 Jahren 0
200 Spiele des Brettspiels Pylos mit der Monte-Carlo-Baumsuche. Hmm .... wie soll ich das erklären ... Im läuft das Programm unter Win 8.1. Jayeon Yi vor 7 Jahren 0
Ihre Frage ist nicht klar. Derselbe Code benötigt die gleichen Ressourcen. Etwas anderes ist los Ramhound vor 7 Jahren 0
Das "etwas anderes" sollte dann der Fall sein. Ich wiederhole immer wieder, dass derselbe Code aus irgendeinem Grund gelegentlich mehr Ressourcen benötigt. Ich weiß, dass es keinen Sinn macht, aber es passiert. Aber was könnte das "etwas anderes" sein? Eine Art Malware? Antivirus? Jayeon Yi vor 7 Jahren 0
"CPU-Auslastung in%" ist keine sehr gute Möglichkeit, die Leistung eines Programms zu messen. Die Leistung kann je nach Cache-Nutzung, Planungsfehler und anderen Prozessen unter Verwendung der CPU variieren. dirkt vor 7 Jahren 1
@ JayeonYi ohne den Code konnte ich nicht sagen. Ramhound vor 7 Jahren 0
Ihre CPU (i7-5500U) ist eine extrem stromsparende CPU auf einem Laptop. Diese -u-CPUs werden meistens in Ultrabooks verwendet. Primäres Design ist Tragbarkeit und Akkulaufzeit, nicht Berechnungen. Daraus ergeben sich folgende Fragen: 1) Können Sie die CPU-Temperatur überwachen (z. B. um festzustellen, ob eine thermische Drosselung vorliegt) 2) Ist der Laptop immer angeschlossen? (Einige verlangsamen sich im Akkubetrieb und werden nicht alle wieder hergestellt, wenn Sie die Stromversorgung wieder anschließen.) 3) Was ist die Leistungseinstellung in der Startsteuerung? Hennes vor 7 Jahren 0
4) Ist das Programm rein CPU-gebunden? (In diesem Fall könnten Daten von der Festplatte gewartet werden, was bedeutet, dass die CPU weniger zu tun hat, obwohl ich davon ausgehen würde, dass die CPU-Prozent in diesem Fall variieren würden, statt 9% zu bleiben.) ?). Gleiches Verhalten nach einem sauberen Neustart? Hennes vor 7 Jahren 0
Zuletzt haben Sie die Einstellungen für hohe Priorität oder Echtzeit erwähnt. Es gibt keinen Grund, warum das Programm in Ihrem Fall schneller laufen würde. Wenn die CPU mehr Arbeit hat als sie verarbeiten kann, gibt der Scheduler möglicherweise mehr Zeit für Ihre Aufgabe, wenn sie eine höhere Priorität hat. Da Sie derzeit nicht an eine CPU gebunden sind und keine anderen Prozesse zu konkurrieren scheinen, wird dies nicht helfen. Hennes vor 7 Jahren 0
Danke, dass Sie geantwortet haben, Hannes. Ja, mein Laptop ist immer eingesteckt. Die Leistungseinstellung wurde immer auf "Hochleistung" gesetzt. Ich halte es so. Es ist keine Eingabe erforderlich, damit das Programm überhaupt ausgeführt werden kann, daher glaube ich nicht, dass # 4 der Fall ist. Obwohl es nicht bei soliden 9% bleibt, ist es wahr, dass es ungefähr 8 bis 11% bleibt. Über das Booten, nein, das ist nicht der Fall. Wenn Sie denken, dass dies von Anfang an ein CPU-Problem war, erscheint die Situation natürlicher. Weitere Details wurden der obigen Frage hinzugefügt. Jayeon Yi vor 7 Jahren 0
Ich habe gerade die CPUID installiert, um meine CPU-Temperatur zu überwachen. Über die CPU-Temperatur, nur mit Google Chrome und dem Texteditor, werden etwa 50 Grad Celsius angezeigt, sowohl die Kerne als auch das Paket. Gleich nach dem Start des Programms stieg die Temperatur für beide Kerne und das Paket schnell auf etwa 65 bis 77 Grad. Ich denke, das könnte das Problem sein. Es ist zwar etwas verwirrend für mich, dass die Temperatur beider Kerne gestiegen ist, auch wenn das Programm überhaupt nicht multithreading ist. Oh, warten Sie, es zeigt jetzt eine Auslastung von 30%. Uuugh .... Jayeon Yi vor 7 Jahren 0
Ich empfehle ProcessExplorer für die weitere Analyse der CPU-Nutzung. Es wäre auch hilfreich, wenn Sie einen anderen Laptop mit identischer Hardware hätten, damit Sie sehen, ob die Hardware die Ursache ist. Nächste Sache: Überprüfen Sie alle Details des aktiven Energieprofils, deaktivieren Sie alle Energiesparoptionen. Vergleichen Sie Ihre Einstellungen mit denen des Computers Ihres Kollegen. Tritt das Verhalten auch bei anderen CPU-intensiven Programmen auf, wie Dateikomprimierung oder Image-Operationsgebiet? Tobias Knauss vor 7 Jahren 0

0 Antworten auf die Frage