Benutzer mit den meisten Antworten
Programm als 64-bit Applikation schneller

Frage
-
Hi,
ich habe ein VB-Programm geschrieben, das das Temperaturfeld im Erdreich berechnet (Finite-Elemente-Methode). Da ein großer Bereich über einen langen Zeitraum berechnet werden soll, rechnet das Programm sehr lange (mehrere Wochen für zwei Jahre Simulationszeit). Das Programm ist eine 32-bit-Applikation.
Meine Frage ist, ob es als 64-bit-Applikation schneller laufen würde (bei gleicher Hardware-Ausstattung). Dass unter 64-bit mehr Arbeitsspeicher verfügbar ist, sollte m.E. keinen Vorteil darstellen, denn der Arbeitsspeicher wurde unter 32-bit nie knapp. Das Problem bei dem Programm ist ja, dass viele Operationen nacheinander ablaufen müssen, da sie auf das Ergebnis der vorhergehenden Operation angewiesen sind.
Gibt es ansonsten Aspekte, die eine größere Performance unter 64 bit erwarten lassen? Ich bin für jeden Hinweis dankbar.
Gruß, Thomas
Antworten
-
Hallo Thomas
die aktuelle x64-Prozessorarchitektur bietet primär mehr Addressraum für Arbeitsspeicher (was durchaus auch etwas der Performance helfen kann). Zusätzlich werden Prozessorregister auch auf native 64-Bit erweitert (und die Anzahl Register selber auch noch erhöht). Daneben gibt es neuere OP-Codes usw, meist mit wenig realen Nutzen für 'normale' Apps.
Nun, Windows 64-Bit nutzt die 64-Bit Architektur auch nicht ganz vollständig (eine Art Kompatibilitäts-Modell: LLP64), was aber in der Praxis wohl wenig messbare Nachteile hat.
Nun zu .NET: hier ist ja noch der sog JITer dazwischen, der im Prinzip auch die Möglichkeit hätte, etwa die (mehr) 64-Bit Register auch voll zu nutzen. Nur, bis und mit .NET 4.0 ist der x64-JITer leider (immer noch) nicht sonderlich auf x64 optimiert, daher bringt eine 64-Bit App auf demselben Rechner meist leider kaum markant mehr Performance.
Durch die nun doppelt breiten Addresszeiger braucht eine 64-Bit App etwas mehr RAM (grob +30%), was auf gewissen Rechnern negativ auf Performance wirkt (zB wg kleinem Cache).Generell darf man also meist kaum mehr Performance erwarten, ausser zB für spezifische Rechen-OPs.
- Als Antwort vorgeschlagen Stefan FalzModerator Sonntag, 11. September 2011 11:19
- Als Antwort markiert Robert BreitenhoferModerator Freitag, 23. September 2011 14:27
-
Hallo Thomas,
Du schreibst zwar, dass viele Operationen auf das Ergebnis anderer Operationen warten müssen, das heißt aber doch anscheinend auch, dass es eben auch Sachen gibt, die man parallel ausführen kann. .NET 4 bietet gerade in dem Bereich doch erhebliche Verbesserungen, die es einem Entwickler leichter machen, das einzusetzen.
http://msdn.microsoft.com/de-de/library/dd460693.aspx
http://www.codeproject.com/KB/Parallel_Programming/NET4ParallelIntro.aspx
http://code.msdn.microsoft.com/Samples-for-Parallel-b4b76364
...
Je nach Anforderung bzw. den einzelnen Berechnungen könntest Du hier evtl. auch die GPU die Berechnungen durchführen lassen, das ist in einigen Fällen erheblich performanter. Schau dir mal diesen Thread hier an, da findest Du wertvolle Hinweise.
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community- Als Antwort markiert Robert BreitenhoferModerator Freitag, 23. September 2011 14:27
Alle Antworten
-
Hallo Thomas
die aktuelle x64-Prozessorarchitektur bietet primär mehr Addressraum für Arbeitsspeicher (was durchaus auch etwas der Performance helfen kann). Zusätzlich werden Prozessorregister auch auf native 64-Bit erweitert (und die Anzahl Register selber auch noch erhöht). Daneben gibt es neuere OP-Codes usw, meist mit wenig realen Nutzen für 'normale' Apps.
Nun, Windows 64-Bit nutzt die 64-Bit Architektur auch nicht ganz vollständig (eine Art Kompatibilitäts-Modell: LLP64), was aber in der Praxis wohl wenig messbare Nachteile hat.
Nun zu .NET: hier ist ja noch der sog JITer dazwischen, der im Prinzip auch die Möglichkeit hätte, etwa die (mehr) 64-Bit Register auch voll zu nutzen. Nur, bis und mit .NET 4.0 ist der x64-JITer leider (immer noch) nicht sonderlich auf x64 optimiert, daher bringt eine 64-Bit App auf demselben Rechner meist leider kaum markant mehr Performance.
Durch die nun doppelt breiten Addresszeiger braucht eine 64-Bit App etwas mehr RAM (grob +30%), was auf gewissen Rechnern negativ auf Performance wirkt (zB wg kleinem Cache).Generell darf man also meist kaum mehr Performance erwarten, ausser zB für spezifische Rechen-OPs.
- Als Antwort vorgeschlagen Stefan FalzModerator Sonntag, 11. September 2011 11:19
- Als Antwort markiert Robert BreitenhoferModerator Freitag, 23. September 2011 14:27
-
Hallo Thomas,
Du schreibst zwar, dass viele Operationen auf das Ergebnis anderer Operationen warten müssen, das heißt aber doch anscheinend auch, dass es eben auch Sachen gibt, die man parallel ausführen kann. .NET 4 bietet gerade in dem Bereich doch erhebliche Verbesserungen, die es einem Entwickler leichter machen, das einzusetzen.
http://msdn.microsoft.com/de-de/library/dd460693.aspx
http://www.codeproject.com/KB/Parallel_Programming/NET4ParallelIntro.aspx
http://code.msdn.microsoft.com/Samples-for-Parallel-b4b76364
...
Je nach Anforderung bzw. den einzelnen Berechnungen könntest Du hier evtl. auch die GPU die Berechnungen durchführen lassen, das ist in einigen Fällen erheblich performanter. Schau dir mal diesen Thread hier an, da findest Du wertvolle Hinweise.
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community- Als Antwort markiert Robert BreitenhoferModerator Freitag, 23. September 2011 14:27