Entwickler-Ecke
Programmierwerkzeuge - Geschwindigkeit der compilierten Programme ... ...
Hochhaus - Sa 03.07.10 11:03
Titel: Geschwindigkeit der compilierten Programme ... ...
Hallo allerseits !
seit einiger Zeit verwende ich Delphi 6 PE. Nun stellt sich mir die Frage, welche Programmiersprache die beste Performance/Geschwindigkeit der compilierten EXE-Dateien aufweist. Welche der folgenden Programmiersprachen ist die Schnellste:
Visual C#
Visual Basic
Visual C++
Delphi 1-8
Java
...
Besten Dank im Voraus für die Antworten! Das Wort Performance soll die Geschwindigkeit der Rechenoperationen bedeuten.
Th69 - Sa 03.07.10 11:23
Da von den aufgezählten Sprachen nur Delphi und C++ nativen Code erzeugen (C# und Java benötigen eine virtuelle Maschine und VB.NET ebenso), kommt es eher auf deine persönliche Präferenz an, welche der beiden Sprachen du eher magst...
Je nach konkretem Programm (bzw. entsprechenden Optimierungen der Compiler) kann die Performance zugunsten Delphi oder C++ ausfallen.
Performance sollte aber generell nicht das oberste Kriterium bei der Auswahl einer Sprache sein...
Welche Programme möchtest du denn entwickeln?
Hochhaus - Sa 03.07.10 16:43
Th69 hat folgendes geschrieben : |
Da von den aufgezählten Sprachen nur Delphi und C++ nativen Code erzeugen (C# und Java benötigen eine virtuelle Maschine und VB.NET ebenso), kommt es eher auf deine persönliche Präferenz an, welche der beiden Sprachen du eher magst...
Welche Programme möchtest du denn entwickeln? |
Vor allem mathematische Anwendungen: Quadratwurzel auf 1'000'000 Nachkommastellen und mehr, Berechnung der Zahl Pi etc. Danke für die Antwort !
jaenicke - Sa 03.07.10 18:22
Für so viele Nachkommastellen bieten die Sprachen ohnehin wenig Fertiges. Insofern ist da durchaus auch Assembler, z.B. eingebettet in einem Delphiprogramm, eine Option. Das ist zwar auch ein etwas höherer Aufwand, aber vermutlich die schnellste Option.
Auch eine gute Umsetzung in einer der genannten Sprachen ist nicht so viel langsamer. Bei so umfangreichen Berechnungen ist es aber vermutlich dennoch spürbar langsamer.
Dabei sehe ich keine so großen Unterschiede zwischen Delphi, Delphi Prism, C++ oder C# was die Geschwindigkeit angeht. Eine Optimierung mit Assembler bei Delphi oder C++ kann natürlich einen Vorteil bringen, der mit den .NET Sprachen nicht möglich ist.
Martok - So 04.07.10 02:02
Hochhaus hat folgendes geschrieben : |
| Vor allem mathematische Anwendungen: Quadratwurzel auf 1'000'000 Nachkommastellen und mehr, Berechnung der Zahl Pi etc. Danke für die Antwort ! |
jaenicke hat folgendes geschrieben : |
| Für so viele Nachkommastellen bieten die Sprachen ohnehin wenig Fertiges. |
Aber: es gibt sehr gute Bibliotheken von diversen Herstellern. Mir fällt grade mal so Intel ein. Die sind dann hochoptimiert, meistens aber nur aus C(++) sinnvoll nutzbar.
jaenicke hat folgendes geschrieben : |
| Eine Optimierung mit Assembler bei Delphi oder C++ kann natürlich einen Vorteil bringen, der mit den .NET Sprachen nicht möglich ist. |
ASM-Optimierungen sind immer plattformspezifisch, wenn man sie von Hand macht. Das geht dann auf CPU A, aber nicht auf CPU B etc.
Man denke an die länglichen Listen beim FastCodeProject, für welches Target eine Funktion gedacht ist.
Hier ist .NET mit JIT potentiell schneller. Gut, soweit ich weiß generiert die CLR da keinen so hoch optimierten Code, aber es wäre zumindest
möglich.
EDIT: was ich vergessen hab: sowohl Java als auch .NET kennen BigNum, die aber beide nicht wirklich schnell sind.
Delete - So 04.07.10 10:54
Für extrem große Zahlen ist Haskell auch sehr gut geeignet. Ich würde dir Vorschlagen, dir es mal anzugucken und dann zu entscheiden. Allgemein habe ich bis jetzt nur gute Erfahrungen mit Haskell gemacht und auch nur gute Sachen gehört. Falls du schon funktionale Sprachen wie Erlang kennst, sollte Haskell kein Problem sein, wenn du noch nie funktionale Sprachen verwendet hast, solltest du unbedingt mal einen Blick drauf werfen. :P
Und für alle, die meinen, dass funktionale Sprachen generell langsamer sind, das war vor 20 Jahren mal so, heute schon lange nicht mehr. :P
Christian S. - So 04.07.10 11:02
Ich möchte hier auch noch einwerfen, dass Mono (also die freie .NET-Implementation) die Möglichkeit bietet, SIMD-Anweisungen sehr bequem zu benutzen. Siehe z.B. hier:
http://tirania.org/blog/archive/2008/Nov-03.html
Delete - So 04.07.10 11:26
Obwohl SIMD ja eher für 3D-Mathematik geeignet ist.
Christian S. - So 04.07.10 11:46
Wenn man seine Daten clever ablegt, kann man das auch für anderes benutzen ;-)
Boldar - So 04.07.10 21:10
Also wenns wirklich schnell sein soll, kann man auch mit C++ und Cuda ran gehen.
jaenicke - So 04.07.10 21:53
Da benutze ich lieber DirectCompute, da ich damit nicht auf einen bestimmten Hersteller festgelegt bin. Ich muss aber sagen, dass es mir bisher nicht viel gebracht hat, das kann man nur bei recht speziellen Berechnungen wirklich gut benutzen.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!