Autor Beitrag
Hochhaus
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 662
Erhaltene Danke: 8

Windows 7
Delphi XE2
BeitragVerfasst: Sa 03.07.10 11:03 
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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4808
Erhaltene Danke: 1061

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: 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?

Für diesen Beitrag haben gedankt: Hochhaus
Hochhaus Threadstarter
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 662
Erhaltene Danke: 8

Windows 7
Delphi XE2
BeitragVerfasst: Sa 03.07.10 16:43 
user profile iconTh69 hat folgendes geschrieben Zum zitierten Posting springen:
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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: 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.

Für diesen Beitrag haben gedankt: Hochhaus
Martok
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 3661
Erhaltene Danke: 604

Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
BeitragVerfasst: So 04.07.10 02:02 
user profile iconHochhaus hat folgendes geschrieben Zum zitierten Posting springen:
Vor allem mathematische Anwendungen: Quadratwurzel auf 1'000'000 Nachkommastellen und mehr, Berechnung der Zahl Pi etc. Danke für die Antwort !

user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
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.

user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
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.

_________________
"The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."
j.klugmann
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: 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.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: 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: tirania.org/blog/archive/2008/Nov-03.html

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
j.klugmann
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: So 04.07.10 11:26 
Obwohl SIMD ja eher für 3D-Mathematik geeignet ist.
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: So 04.07.10 11:46 
Wenn man seine Daten clever ablegt, kann man das auch für anderes benutzen ;-)

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Boldar
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1555
Erhaltene Danke: 70

Win7 Enterprise 64bit, Win XP SP2
Turbo Delphi
BeitragVerfasst: So 04.07.10 21:10 
Also wenns wirklich schnell sein soll, kann man auch mit C++ und Cuda ran gehen.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: 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.

Für diesen Beitrag haben gedankt: Hochhaus