none
Programm als 64-bit Applikation schneller RRS feed

  • 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

    Samstag, 10. September 2011 11:55

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.

     

    Samstag, 10. September 2011 12:14
  • 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.

      http://social.msdn.microsoft.com/Forums/de-DE/visualbasicde/thread/67bb4653-4a83-43b7-afb9-512878d761c2

     


    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
    Sonntag, 11. September 2011 11:28
    Moderator

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.

     

    Samstag, 10. September 2011 12:14
  • Hi Thomas,

    danke für die schnelle Info.

    Nun werde ich wohl doch nicht umhin kommen, mein Programm selbst zu otimieren.

    Gruß, Thomas

    Sonntag, 11. September 2011 08:22
  • 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.

      http://social.msdn.microsoft.com/Forums/de-DE/visualbasicde/thread/67bb4653-4a83-43b7-afb9-512878d761c2

     


    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
    Sonntag, 11. September 2011 11:28
    Moderator
  • Hallo ThomasPeterSN,

    Ich gehe davon aus, dass die Antworten Dir weitergeholfen haben.
    Solltest Du noch "Rückfragen" dazu haben, so gib uns bitte Bescheid.

    Grüße,
    Robert

    Freitag, 23. September 2011 14:27
    Moderator