AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Warum delphi lahmer als c++?

Ein Thema von jmd anders · begonnen am 14. Dez 2006 · letzter Beitrag vom 20. Dez 2006
Antwort Antwort
Seite 1 von 4  1 23     Letzte »    
jmd anders

Registriert seit: 13. Mai 2004
84 Beiträge
 
#1

Warum delphi lahmer als c++?

  Alt 14. Dez 2006, 20:45
Alle sagen ja, dass c++ schneller sein soll als delphi, dabei frage ich mich, in welchen fällen das zutrifft.
Also bei welchen Schleifen oder sonstigen Anweisungen ist delphi lahmer?

Des weiteren wollte ich wissen, warum dies so ist. Beides wird ja nach asm übersetzt, warum erzeugt der delphi compiler "schlechteren" assembler code?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Warum delphi lahmer als c++?

  Alt 14. Dez 2006, 20:47
Es gab vor einiger Zeit mal ein Test in der c't. Darin war Delphi teilweise schneller als c++.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.195 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: Warum delphi lahmer als c++?

  Alt 14. Dez 2006, 21:08
Zitat von jmd anders:
Alle sagen ja, dass c++ schneller sein soll als delphi, dabei frage ich mich, in welchen fällen das zutrifft.
Alle sagen ja das Java langsam ist aber ich kenne mindestens ein Beispiel indem eine Java-Implementierung viel schneller als eine C/C++-Implementierung ist

Zitat von jmd anders:
Also bei welchen Schleifen oder sonstigen Anweisungen ist delphi lahmer?
So einfach kann man einen Vergleich nichts machen.

Zitat von jmd anders:
Des weiteren wollte ich wissen, warum dies so ist. Beides wird ja nach asm übersetzt, warum erzeugt der delphi compiler "schlechteren" assembler code?
Schon mal überlegt wieviel unterschiedliche Instruktionserweiterungen und Prozessortypen es gibt. Und jeder will seine Instruktionsreihenfolge haben damits schnell geht. Und für C++ gibt es Hunderte wenn nicht gar tausende Ingenieure die für jeden Prozessortyp einen neuen Compilerschalter erfinden um für den Prozessor xyz das Optimum herauszuholen. Delphi erzeugt dagegen (mit der Codebasis von Borland) "Einheitsbrei" welcher nur für "normale" Pentiums gute Performance erziehlt aber nicht die neuesten Tricks von Core (2) Duo kennt.

Aber diese Optimierungen sind eigentlich vernachlässigbar wenn die Programmlogik nicht passt. Man kann mit hochoptimierten C++-Code langsameren Code erzeugen als z.B. mit VB (noch kein .NET) wenn der Algorithmus und die Programmlogik nicht passt.

In einem Artikel der Zeitschrift c't wurden mal ein Vergleich gemacht:

a, Reines Nummer-Crunshing: Dort ist C++ einsame Spitze. Nirgends kann man (sinnlose) Schleifen so gut optimieren wie unter C/C++

b, Objektorientierte Konzepte wie Vererbung, Methoden-Überladung etc: Hier ist das Sprachkonzept das hinter C/C++ steckt nicht sehr optimal so das sowohl Delphi und C# als auch Java hier die Nase vorne haben.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Nils_13

Registriert seit: 15. Nov 2004
2.647 Beiträge
 
#4

Re: Warum delphi lahmer als c++?

  Alt 14. Dez 2006, 21:53
Bernhard Geyer kann ich da nur zustimmen. Man muss aber auch dazusagen, dass wir uns hier in ganz anderen Dimensionen bei diesen Vergleichen bewegen und der Unterschied zwischen Delphi und Cpp nicht gerade groß ist (wir spüren ihn oft garnicht, falls er überhaupt existieren sollte). Ich arbeite mit beiden Sprachen und bin mit beiden zufrieden, weil beide eine gute Geschwindigkeit haben. Für objektorientierte Programmierungs sollte man C++ aber wirklich nicht benutzen, das ist mit Delphi schon einfacher. Ich habe von meinem Bruder gehört (muss wegen Studium Java machen), dass er Java mitlerweile gut findet, weil es garnicht so lahm ist, wie es immer gesagt wird.

Nachtrag: Die Codeoptimierung von Delphi schafft manchmal Codes, die ein Mensch nicht hinbekommen würde Es hängt also bestimmt nicht mit den Assemblercodes zusammen. Es ist nichts als ein Konkurrenzkampf, bei dem Cpp den Vorteil hat, dass der Compiler (GNU) kostenlos ist.
  Mit Zitat antworten Zitat
bigg
(Gast)

n/a Beiträge
 
#5

Re: Warum delphi lahmer als c++?

  Alt 14. Dez 2006, 22:01
moin moin,

C++ und Object Pascal sind Programmiersprachen.
Die Sprachen an sich können nicht schneller sein, da "Quellcodes" erst übersetzt werden müssen, in eine Sprache, die ein Prozessor versteht, um diese Befehle dann auszuführen. So gesehen ist deine Frage falsch formuliert.

Und um's kurz zu machen: Weder noch! Man kann deine Frage weder mit ja noch mit nein beantworten. Die Ausführungsgeschwindigkeit des übersetzten Programms hängen von vielen Faktoren ab.

1. Welche Compiler (Übersetzer) verwendet man, um das fertige Programm zu erstellen?
Unter C++ gibt es massenweise Compiler, Pascal-Compiler gibt es nur wenige.
2. Wie gut optimieren diese Übersetzer?
3. Auf welchem Prozessor läuft die übersetzte Anwendung letztendlich?
4. Benutzt man vorgeschriebene Programmabläufe, die von anderen entwickelt wurden? Klassen, Komponenten, Funktionen?
All das kann eine Ursache dafür sein, das das Programm nicht effizient genug arbeitet.
5. ...

Und bei Java ist es nochmal ganz anders, den dort werden Programme erzeugt, die nicht direkt auf die Hardware zugreifen, sondern über eine Schnittstelle, dem Interpreter.

PS: Wenn du dich wirklich für die Programmierung interessierst, dann lern am besten beide Sprachen entwickel ein paar Projekte und fäll dann dein Urteil.


Gruß Stefan

edit: Das waren vielleicht viele Rechtschreibfehler...
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.195 Beiträge
 
Delphi 10.4 Sydney
 
#6

Re: Warum delphi lahmer als c++?

  Alt 14. Dez 2006, 22:38
Zitat von bigg:
Und bei Java ist es nochmal ganz anders, den dort werden Programme erzeugt, die nicht direkt auf die Hardware zugreifen, sondern über eine Schnittstelle, dem Interpreter.
Interpretiert wird bei Java schon lange nichts mehr. Hier sind JIT-Compiler am Werk die benötigte Programmabschnitte übersetzen und die dann "native" ausgeführt werden. Ähnliches wird auch bei .NET gemacht, wobei AFAIK hier ein Versprechen von MS selbst in der .NET 3.0-Version noch nicht eingelöst wird: Optimiertes Compilieren nach verwendeten Prozessor.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
bigg
(Gast)

n/a Beiträge
 
#7

Re: Warum delphi lahmer als c++?

  Alt 14. Dez 2006, 22:42
Ist dann die Aussage des Wikipedia falsch?

Zitat:
JIT-Compilierung ist eine Technik aus der Praktischen Informatik, um die Performance von Anwendungssoftware, die als Bytecode vorliegt, zu verbessern. Der JIT-Compiler übersetzt während der Laufzeit bei Bedarf den Bytecode in einen nativen Maschinen-Code (also ein Code, den der Prozessor direkt verarbeiten kann).

Der JIT-Compiler oder Just-in-Time-Compiler ist (neben dem Interpreter) ein Teil einer modernen Virtuellen Maschine (z.B. JVM bei Java oder CLR bei .NET) und beschleunigt die Programmausführung. Just In Time bedeutet "gerade rechtzeitig".

Hochentwickelte JIT-Compiler können speziell für dynamische Sprachen schnelleren Code als herkömmliche Compiler generieren, da sie Closed-World-Annahmen treffen können und Dynamische Optimierungen durchführen.

Typische Beispiele findet man bei Java, .NET, Perl6 sowie in kommerziellen Smalltalk-Versionen.

Im Gegensatz zum Just-In-Time-Compiler werden herkömmliche Compiler auch als AOT-Compiler (Ahead-of-Time-Compiler) bezeichnet, weil sie den Programm-Code vor Ausführung des Programms übersetzen. Ahead of time bedeutet "vorzeitig".
Bytecode, Virtuelle Maschine, Übersetzung während der Laufzeit?
  Mit Zitat antworten Zitat
xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#8

Re: Warum delphi lahmer als c++?

  Alt 14. Dez 2006, 22:59
Hallo,
Zitat von bigg:
Ist dann die Aussage des Wikipedia falsch?
Was soll daran falsch sein?

Gruß
xaromz
I am a leaf on the wind - watch how I soar
  Mit Zitat antworten Zitat
Elvis

Registriert seit: 25. Nov 2005
Ort: München
1.909 Beiträge
 
Delphi 2010 Professional
 
#9

Re: Warum delphi lahmer als c++?

  Alt 14. Dez 2006, 23:33
Zitat von xaromz:
Hallo,
Zitat von bigg:
Ist dann die Aussage des Wikipedia falsch?
Was soll daran falsch sein?
Ist halt ein "Äpfel und Birnen" - Vergleich.
Interpretiren ist halt irgendwo ein fester Begriff und steht für die Art der Übersetzung, die in Skriptsprachen wie PHP, Pearl oder VB Verwendung findet.
Also die zeilen-/statement- weise Übersetzung von Code.
Robert Giesecke
I’m a great believer in “Occam’s Razor,” the principle which says:
“If you say something complicated, I’ll slit your throat.”
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#10

Re: Warum delphi lahmer als c++?

  Alt 14. Dez 2006, 23:37
Wenn ich mich nicht irre, dann ist Java Bytecode sowas ähnliches wie Maschinencode, nur für einen "fiktiven" Prozessor, sodass man es leicht portieren kann.

Ob da jetzt der Begriff "interpretieren" angebracht ist oder nicht, ist eigentlich Ansichtssache.
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 4  1 23     Letzte »    


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:03 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz