Dies ist eine spekulative Vermutung, aber Ihr Code funktioniert mit der Datenträger- und Datenträger-E / A, und ich gehe davon aus, dass dies Ihr Engpass ist - Sie haben erwähnt, dass er auf dem Computer mit 500 GB Flashspeicher schneller läuft als auf dem mit 250 GB-Flash-Speicher: Dies ist logisch sinnvoll, da Flash-Speicher im Wesentlichen ein Raid-0 von kleineren (32/64 GB) Flash-Speicherchips ist und mehr Chips / Festplatten in einem Raid-0-Array die Leistung erheblich steigern. Ich kenne die bestimmte Marke / das Modell / die Firmware / den Controller des Speichers nicht. Ich vermute jedoch, dass Sie bei einem Datenträger-E / A-Test eine ähnliche Diskrepanz in Bezug auf die Leistung der beiden Maschinen feststellen würden. Ein solcher Leistungstest kann am besten mit XBench durchgeführt werden .
Warum wird ein C ++ - Code auf einem Computer wesentlich länger ausgeführt als auf einem anderen?
Der Code ist genau derselbe - ich habe ihn von einem Computer auf einen anderen kopiert. Der Code wird mit g ++ - 4 (4.9.1) kompiliert, das von fink unter OSX auf beiden Computern abgerufen wird, und wird nicht parallel ausgeführt.
Compiler-Optionen sind "-O2", und die Computer machen im Grunde nichts anderes (geringe CPU- und Speicherauslastung). Code ist ein 2400-Zeilen-Forschungscode- Link .
Maschine 1:
- Ende 2013 MacBook Pro Retina,
- 2,8 GHz i7-4558U,
- 16 GB 1600 MHz DDR3,
- 500 GB Flash-Speicher
Maschine 2:
- Ende 2013 MacPro Workstation,
- 3,5 GHz Intel Xeon E5-1650 mit 6 Kernen
- 32 GB 1867 MHz DDR3
- 251 GB Flash-Speicher
- 3 TB externes SATA-Laufwerk
Laufzeit:
Maschine 1: mit einer Leistung von 200 Sekunden, ohne 18 Sekunden.
Maschine 2: (/ Verzeichnis - sollte Flash-Laufwerk sein): mit 2230 Sek. Ohne 2075 Sek.
Maschine 2: (~ Verzeichnis - sollte externes Laufwerk sein): mit 2262 Sek. Ohne 2080 Sek.
Irgendwelche Ideen, wie Sie die Laufzeit auf dem MacPro verbessern können?
2 Antworten auf die Frage
Der richtige Weg, sich der Frage zu nähern, "warum dauert dieser Code so lange", ob "long" absolut oder relativ ist, ist die Verwendung eines Werkzeugs, das als Profiler bezeichnet wird.
Grundsätzlich führen Sie das Programm über den Profiler oder mit angehängtem Profiler aus, und der Profiler zeichnet auf, wie viel Zeit das Programm in verschiedenen Funktionen verbringt. Diese Informationen werden Ihnen dann in einer Form präsentiert, mit der Sie die Teile des Programms ermitteln können, die während dieser Ausführung am längsten ausgeführt wurden. Häufig ist es auch möglich, zusätzliche Informationen aus diesem Bericht zu erhalten, z. B. welche Teile des Programms am häufigsten aufgerufen werden, und solche Dinge, die auch auf Bereiche hinweisen können, die einer gewissen Prüfung bedürfen.
Basierend auf diesen Daten ist es in der Regel leicht zu erkennen, welche Teile optimiert werden müssen, damit das Programm schneller abläuft, ohne das Ratespiel, das als "vorzeitige Optimierung" bezeichnet wird, oder sich auf die Einzelheiten bestimmter Hardware zu verlassen.
Verwandte Probleme
-
3
Beschleunigung der Bootzeiten von OS X bei einem Jahr alten MBP
-
3
Wie ordnen Sie ein Airport Time Machine-Backup nach der Migration auf einen neuen Mac wieder zu?
-
6
Wie können Sie den Startton auf einem Mac stummschalten?
-
5
Warum wird mein Macbook bei der Verwendung von Boot Camp extrem heiß?
-
7
Gibt es unter Mac OS X ein Strg + Tab-Äquivalent?
-
6
Weg, um Time Machine-Daten auf eine neue Festplatte zu migrieren
-
13
Setzen Sie die Windows-Position von Mac OS X nach dem Abnehmen des externen Monitors zurück
-
10
Sicherungssoftware für Mac OS X
-
5
Wie kann ich unter Mac OS X einen .kext deinstallieren und entfernen?
-
4
Wie kann ich die Auswurftaste auf der MacBook-Tastatur erneut "löschen"?