![]() |
Re: Warum delphi lahmer als c++?
Und dieser fiktive Prozessor ist die Virtuelle Maschine. Der Bytecode ist objektorientiert und unterscheiset sich doch von den realen Prozessoren. MS nennt das .Net Gegenstück CLR ( Common Langauge Runtime)
|
Re: Warum delphi lahmer als c++?
Hallo,
Zitat:
Gruß xaromz (der auch mal Fußnoten verwendet) [1] So gesehen ist natürlich auch eine CPU nur ein Maschinencode-Interpreter. [2] wobei der Block auch das ganze Programm sein kann. |
Re: Warum delphi lahmer als c++?
Delphi leidet ein bischen darunter das der Codegenerator nicht so weiterentwickelt wurde wie es beim Visual Studio und dem GNU Compiler der Fall ist. Zusaetzlich wurden auch die Basisfunktionen (siehe System und SysUtils) nicht weiterentwickelt. Das ist zum Teil der Grund warum DelphiSpeedUp die IDE so beschleunigen kann.
Insgesamt bedeutet das aber nicht das man mit Delphi nicht Programme schreiben kann die so schnell wie C++ Programme sind. Es ist dafuer sowieso auf beiden Seiten sorgfaeltigste Optimierung noetig und da gibt es kaum einen Unterschied in den Schwierigkeiten. |
Re: Warum delphi lahmer als c++?
Zitat:
![]() |
Re: Warum delphi lahmer als c++?
Wie schon oft wiederholt, zählt in erster Linie das Verfahren, also der Algorithmus.
Ich beschäftige mich gerade mit String-Matching-Algorithmen, und hier scheint es hingegen so zu sein, das C(++) die generischen Schleifen und Vergleiche vielleicht doch besser in Maschinencode abbilden kann. Es ist nämlich so, das sich die offensichtlich besten Algorithmen nicht als Ebensolche in Delphi umsetzen lassen. Hier hat bisher (bei meinen Ansätzen), ein sehr kompakter Algorithmus (QS) die Nase bei weitem vorn. Vermutlich vor Allem deshalb, weil die zentrale Funktion (vergleich von zwei Teilstrings) als 'CompareMem' abgebildet ist. Bei dem Algorithmus, der derzeit die Nase vorn hat (FJS), wird der Vergleich über eine generische C-Schleife abgebildet. Wenn ich diesen FJS in Delphi übersetze, ist er um ein vielfaches langsamer als der QS-Algorithmus. Und ich glaube, es liegt an der Verwendung des CompareMem im QS-Algorithmus. Von der Komplexität ('Big Oh') ist der FJS einfach besser. Nebenbei: Auch Boyer-Moore, Horspool etc. können dem QS (QuickSearch von Daniel Sunday) unter Delphi nicht das Wasser reichen. Ich meine, bei diesen generischen Schleifen und Vergleichen dürften die hier beschriebenen CPU-abhängigen Optimierungsmöglichkeiten in den C-Kompilern greifen. Auf Applikationsebene entscheidet jedoch fast ausschließlich das verwendete Verfahren. Nach meiner Einschätzung ist C für die Implementierung generischer Algorithmen (String-Matching, Hash, Listen, etc.) besser geeignet. Auf OOP-Ebene sollte man imho auf C++ verzichten. Zitat:
Zitat:
|
Re: Warum delphi lahmer als c++?
Zitat:
|
Re: Warum delphi lahmer als c++?
hoho, :)
[ot] Zitat:
Nichts. Aber vielleicht ist die Aussage von Bernhard nicht ganz richtig. ;-) Zitat:
[/ot] |
Re: Warum delphi lahmer als c++?
Hi,
erstmal zu der eigentlichen Frage, man sollte immer die Quellen hinterfragen. Pauschale Aussagen wie X ist immer besser/schneller/schöner als Y sind im Prinzip nie richtig. 99% davon sind Anssichtssache. Gerade was die Geschwindigkeit angeht, so mag es hier durchaus mal stimmen, dass eine Sprache schnelleren Code erzeugt als eine andere. Aber man sollte sich a) darüber im klaren sein, dass eine fempto-Sekunde mehr oder weniger bei gleichem Code kaum ins Gewicht fällt. Kommen genügend solcher f Sek. zusammen, so wird jeder Zugriff auf die Festplatte immer noch deutlich mehr ausmachen, auch wenn das eine Programm schneller ist. Wichtiger ist heute eher, wie leicht du was in der Sprache umsetzen kannst. Ein paar Dinge (insbesondere Benutzereingaben) lassen sich nicht beliebig beschleunigen. Natürlich gibt es gebiete, in denen dürfte die reine Perfomance wichtig sein, in anderen ist es eher die Sicherheit oder Robustheit. Man sollte hier eine Sprache nie nach nur einer Aussage beurteilen. Wenn es rein um die Perfomance geht, dann ist rein imperativer C Code wohl wieder schneller als Objekt Orientierter C++ Code, da einfach schon die Möglichkeit der Indirektion fehlt (dürfte auch für Pascal vs. ObjectPascal/Delphi) gelten. Hinzu kommt auch noch, dass man mit Makros oder den Verzicht auf Funktionen den Overhead erspart, der nun mal mit jedem Funktionsaufruf statt findet. Allerdings dürfte kaum ein sinnvolles Projekt entstehen, wenn man hier einfach mal den ganzen Code in eine einzelne Anweisung schreibt. Da wird die Fehleranfälligkeit und die fehlende Wartbarkeit bei weitem den vermeintlichen Geschwindigkeitsvorteil überwiegen. Ja, dann ist auch objektiv die Geschwindigkeit sehr viel leichter zu messen, als es subjektiv der Fall ist. Nimm einfach zwei Anwendungen, die beiden 1 min lang irgendwas berechnen. Hat nur eine davon eine Fortschrittsanzeige, würde ich sagen, werden viele Leute die als schneller arbeitend empfinden (einfach weil etwas passiert!). Je nachdem wie du dann noch den Fortschritt anzeigst kann das für solche Projekte zu einer gefühlten Steigerung (unabhängig von der Berechnung und Sprache) führen. Natürlich wird sowas in einem DBMS wohl kaum benötigt, aber wie gesagt, man muss schon differenzieren, worin etwas schneller ist oder eben nicht. [OT] Zitat:
Ich denke, dass man bei einem JIT nicht mehr von Interpreation sprechen kann, da hier Optmierungen statt finden. Genau das passiert halt dadurch, dass gleich ganze Codeblöcke eingelesen werden. Ein reiner (einfacher) Interpreter würde einfach dumm Zeile für Zeile in eine fremde Umgebung überführen. Natürlich ist und bleibt Objekt Code und seine Übersetzung/Ausführung eine Sache, die man nicht so einfach als einordnen kann, aber der reine Interpreter kommt wohl so wenig zum Einsatz wie die native Ausführung (die aber auf einer Java-CPU/Architektur ohne weiteres möglich ist). Zudem gibt es auch immer mehr CPUs (nicht alle müssen ja in einem normalen PC stecken!) mit eigenen Java-Co-Prozessoren, die wirklich nativ Java Code ausführen. [/OT] |
Re: Warum delphi lahmer als c++?
Zitat:
|
Re: Warum delphi lahmer als c++?
Nope, heißt durch die Standardisierung nun CIL :zwinker: .
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:50 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz