Programmgeschwindigkeit Lazarus vs Delphi
Programmgeschwindigkeit Lazarus vs Delphi
Hallo,
ich hätte zwei Fragen. Bin neulich wegen der Notwendigkeit eines 64-Bit-compilers von Delphi auf Lazarus umgestiegen.
Dabei fiel mir sofort folgendes auf:
1. Die ausführbare Programmdatei (.exe) eines meiner Projekte war bei Delphi stets nur 2-3 MB groß. Wenn ich das selbe Projekt mit Lazarus kompiliere, ist die .exe über 30 MB groß!! Wie kommt das???
2. Die Performance ist nach Kompilierung mit Lazarus viel schlechter als nach Kompilierung mit Delphi. Es handelt sich um ein Projekt, bei dem sehr viele aufwendige Gleitkommaoperationen und Exponentialfunktionen berechnet werden.
Betriebssystem: Windows 7, 64 Bit; Lazarus-64-Bit-Verison 0.9.28.2 Beta
ich hätte zwei Fragen. Bin neulich wegen der Notwendigkeit eines 64-Bit-compilers von Delphi auf Lazarus umgestiegen.
Dabei fiel mir sofort folgendes auf:
1. Die ausführbare Programmdatei (.exe) eines meiner Projekte war bei Delphi stets nur 2-3 MB groß. Wenn ich das selbe Projekt mit Lazarus kompiliere, ist die .exe über 30 MB groß!! Wie kommt das???
2. Die Performance ist nach Kompilierung mit Lazarus viel schlechter als nach Kompilierung mit Delphi. Es handelt sich um ein Projekt, bei dem sehr viele aufwendige Gleitkommaoperationen und Exponentialfunktionen berechnet werden.
Betriebssystem: Windows 7, 64 Bit; Lazarus-64-Bit-Verison 0.9.28.2 Beta
- af0815
- Lazarusforum e. V.
- Beiträge: 6773
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
Re: Programmgeschwindigkeit Lazarus vs Delphi
Wie wäre es mit der Forumsuche oder ein Blick in die Wiki von Lazarus oder auch Google oder auch englische LazarusForum . DIESER Punkt ist ein Wiederkäuer, Er stösst auf und wird immer wieder durchgekaut. Zusätzlich sollte man sich in der Wiki auch mit dem Punkt umstieg von Delphi zu Lazarus vertraut machen.xcs123 hat geschrieben:1. Die ausführbare Programmdatei (.exe) eines meiner Projekte war bei Delphi stets nur 2-3 MB groß. Wenn ich das selbe Projekt mit Lazarus kompiliere, ist die .exe über 30 MB groß!! Wie kommt das???
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
Re: Programmgeschwindigkeit Lazarus vs Delphi
danke für den Hinweis bzgl der Größe der .exe
Was die Geschwindigkeit der Rechenoperationen betrifft:
Ist ein Lazaruskompilat grundsätzlich langsamer oder liegt es daran, dass es eine 64-Bit-Anwendung ist?
Insbesondere ist der Programmteil, in dem viele Exponentialfunktionen berechnet werden, cirka 2mal so langsam wie das mit Delphi kompilierte Programm.
Was die Geschwindigkeit der Rechenoperationen betrifft:
Ist ein Lazaruskompilat grundsätzlich langsamer oder liegt es daran, dass es eine 64-Bit-Anwendung ist?
Insbesondere ist der Programmteil, in dem viele Exponentialfunktionen berechnet werden, cirka 2mal so langsam wie das mit Delphi kompilierte Programm.
-
- Beiträge: 2013
- Registriert: Do 16. Okt 2008, 10:22
- OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
- CPU-Target: x86,x64,ARM
Re: Programmgeschwindigkeit Lazarus vs Delphi
Dass 64bit nicht unbedingt schneller als 32bit sondern öfters sogar langsamer ist, daran musst du dich gewöhnen. Selbstverständlich predigen die Marketingabteilungen der Prozessor- und Betriebssystemhersteller etwas anderes und viele Entwickler lassen sich von dem Gedröhn beeinflussen. Da 64bit Programme den Cache-Speicher viel stärker belasten, sind sie gegenüber 32bit Äquivalenten benachteiligt. Bei FPC kommt dazu, dass der 64bit Compiler (noch) nicht so gut optimiert als der 32bit Bruder, auch für Optimierung der Fliesskomma-Berechnungen bietet FPC noch viel Raum.xcs123 hat geschrieben: Ist ein Lazaruskompilat grundsätzlich langsamer oder liegt es daran, dass es eine 64-Bit-Anwendung ist?
Ich würde das Thema mal auf der Mailinglist aufs Tapet bringen:
http://www.freepascal.org/maillist.var
Martin
Re: Programmgeschwindigkeit Lazarus vs Delphi
Irgendwie ist die 64 bit Computerei noch nicht so recht angekommen.
Oft hat man den Eindruck, gewisse Dinge seien mit den 64bit Versionen noch nie getestet worden.
Z.B. Android SDK auf Windows 7 64bit mit JDK 6 64bit lässt sich erst mal gar nicht installieren.
Oft hat man den Eindruck, gewisse Dinge seien mit den 64bit Versionen noch nie getestet worden.
Z.B. Android SDK auf Windows 7 64bit mit JDK 6 64bit lässt sich erst mal gar nicht installieren.
-
- Lazarusforum e. V.
- Beiträge: 3178
- Registriert: Di 22. Jul 2008, 19:27
- OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
- CPU-Target: 32bit x86 armhf
- Wohnort: Köln
- Kontaktdaten:
Re: Programmgeschwindigkeit Lazarus vs Delphi
Vielleicht sollte man auf der Mailing-Liste mal anregen, standardmäßig die Debugging-Symbole in eine externe Datei auzulagern. Bei mir hat das bisher wunderbar geklapt, und jeder, der besondere Anforderungen (z.B. Remote-Debuggin) hat, sollte eh, wissen, was er da tut. Klar, das ist dann immer noch keine Release-Version (-> Optimierungen), aber immerhin haben wir nicht mehr die ganzen Anfragen dazuaf0815 hat geschrieben:DIESER Punkt ist ein Wiederkäuer, Er stösst auf und wird immer wieder durchgekaut. Zusätzlich sollte man sich in der Wiki auch mit dem Punkt umstieg von Delphi zu Lazarus vertraut machen.

Im Bereich der Privat-Anwender hast du da auf jeden Fall Recht. 64 Bit Speicherbreite zahlen sich erst aus, wenn man mit vielen Daten hantiert und sehr viel Arbeitsspeicher braucht. Bei großen Datenbanken kommt man mittlerweile ohne 64-Bit-Architektur nicht mehr wirklich weit. Auch lassen sich hier schneller große Zahlen (44-64bit) mit der ALU berechnen (anderer Co-Prozessoren können natürlich noch schneller noch größere Zahlen berechnen).theo hat geschrieben:Irgendwie ist die 64 bit Computerei noch nicht so recht angekommen.
Fazit: 64-Bit ist nicht für schneller sondern für mehr.
Edit/Übrigens: Auch in FreePascal-Programm wird nicht immer Architektur-unabhängig programmiert. Zum Beispiel wird die Länge eines Strings in einem SizeInt-Typen abgelegt (32/64 Bit, je nach CPU); Lazarus empfiehlt für Length(String) aber unter i386 Longint als Variablentypen, was zusätzlichen Aufwand bei der Portierung mit sich bringt.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
Re: Programmgeschwindigkeit Lazarus vs Delphi
Das ist mir schon klar.Socke hat geschrieben: Fazit: 64-Bit ist nicht für schneller sondern für mehr.
Was mich als "late adopter" einfach erstaunt ist, dass nachdem ich nun auf meinem neuen NetBook (ziemlich gut das Teil für < CHF 500.- http://shop.stegcomputer.ch/shop.asp?prodid=759165" onclick="window.open(this.href);return false;)
mit Win7 64bit zwangsbeglückt wurde, und nach all den Jahren endlich mal die 64bit Windows-Schiene teste, feststellen muss, dass die Programme immer noch nicht so recht funzen wollen und sich offenbar "die grosse Masse" nicht wirklich darum kümmert.
Ich gehe bis auf weiteres wieder auf 32bit Tauchstation.
-
- Beiträge: 657
- Registriert: Sa 9. Jan 2010, 17:32
- OS, Lazarus, FPC: Linux 2.6.x, SVN-Lazarus, FPC 2.4.0-2
- CPU-Target: 64Bit
Re: Programmgeschwindigkeit Lazarus vs Delphi
Den Grund kann ich dir nennen,xcs123 hat geschrieben: 2. Die Performance ist nach Kompilierung mit Lazarus viel schlechter als nach Kompilierung mit Delphi. Es handelt sich um ein Projekt, bei dem sehr viele aufwendige Gleitkommaoperationen und Exponentialfunktionen berechnet werden.
er liegt im Sourcecode des FPC: compiler/x86_64/aoptcpu.pas enthält einfach nur ein leeres Klassengestell
Der 64-bit Compiler hat keinen Peephole-Optimizer, der Compiler erzeugt manchmal sogar Sprünge auf das nächste Byte.
Da sich aber x86 und x86_64 kaum unterscheiden, bin ich mir sicher, dass man die Optimierung aus dem x86 einfach so kopieren könnte. Warum das bis jetzt niemand gemacht hat, ist mir ein Rätsel. Ich habe auch öfters danach gefragt.
Die FPC-Entwickler meinen nur, es sollte sich mal jemand ransetzen und das Ding komplett neu schreiben.
-
- Lazarusforum e. V.
- Beiträge: 3178
- Registriert: Di 22. Jul 2008, 19:27
- OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
- CPU-Target: 32bit x86 armhf
- Wohnort: Köln
- Kontaktdaten:
Re: Programmgeschwindigkeit Lazarus vs Delphi
Könnte daran liegen, dass wirklich zu wenig Interesse daran besteht. Auf der anderen Seite übernimmt ein kompletter Rewrite keine alten Fehler (bringt dafür neue mitcarli hat geschrieben:Warum das bis jetzt niemand gemacht hat, ist mir ein Rätsel. Ich habe auch öfters danach gefragt.
Die FPC-Entwickler meinen nur, es sollte sich mal jemand ransetzen und das Ding komplett neu schreiben.

MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
Re: Programmgeschwindigkeit Lazarus vs Delphi
Dann mach doch mal, du kennst dich ja anscheinend prima aus damit.carli hat geschrieben: Die FPC-Entwickler meinen nur, es sollte sich mal jemand ransetzen und das Ding komplett neu schreiben.
-
- Beiträge: 657
- Registriert: Sa 9. Jan 2010, 17:32
- OS, Lazarus, FPC: Linux 2.6.x, SVN-Lazarus, FPC 2.4.0-2
- CPU-Target: 64Bit
Re: Programmgeschwindigkeit Lazarus vs Delphi
Zumindest würde ich auch direkten Nutzen davon tragen.theo hat geschrieben:Dann mach doch mal, du kennst dich ja anscheinend prima aus damit.carli hat geschrieben: Die FPC-Entwickler meinen nur, es sollte sich mal jemand ransetzen und das Ding komplett neu schreiben.
Mal überlegen. Fakt ist, dass der FPC außer "read the Source Code" ziemlich schlecht dokumentiert ist. Wenigstens die verwendeten Datentypen und das Konzept hinter der internen Coderepräsentation würde mich mal interessieren