Geschwindigkeitsvergleich PB 5 --> 6
Geschwindigkeitsvergleich PB 5 --> 6
Hallo,
seit über 14 Jahren setzte ich Purebasic fast täglich im Beruf und Zuhause ein. Eine wirklich tolle Sprache.
Zur Zeit verwende ich immernoch die PB Version 5.24. Hin und wieder habe ich die neueren Versionen getestet.
Was mir aufgefallen ist, ab der PB 6.x sind die erstellen Exe-Dateien viel langsamer.
Ich kann den Sourcecode leider nicht posten. Er umfasst über 21000 Codezeilen.
Wen ich den gleichen Code mit der PB 5.24 kompalieren benötigt die Exe für die Aufgabe ca. 30 Sekunden.
Das Gleiche mit PB 6.03 um 45-50 Sekunden. Das sind ca. 50% Geschwindigkeitsverlust.
Das Programm bearbeitet Strings und zwischendurch Dateioperationen. Also nichts großartiges.
Kann jemand das gleiche Verhalten bestätigen ?
Liebe Grüße
Lite
seit über 14 Jahren setzte ich Purebasic fast täglich im Beruf und Zuhause ein. Eine wirklich tolle Sprache.
Zur Zeit verwende ich immernoch die PB Version 5.24. Hin und wieder habe ich die neueren Versionen getestet.
Was mir aufgefallen ist, ab der PB 6.x sind die erstellen Exe-Dateien viel langsamer.
Ich kann den Sourcecode leider nicht posten. Er umfasst über 21000 Codezeilen.
Wen ich den gleichen Code mit der PB 5.24 kompalieren benötigt die Exe für die Aufgabe ca. 30 Sekunden.
Das Gleiche mit PB 6.03 um 45-50 Sekunden. Das sind ca. 50% Geschwindigkeitsverlust.
Das Programm bearbeitet Strings und zwischendurch Dateioperationen. Also nichts großartiges.
Kann jemand das gleiche Verhalten bestätigen ?
Liebe Grüße
Lite
Re: Geschwindigkeitsvergleich PB 5 --> 6
Ohne genauer welche Operationen durchgeführt werden kann man das nicht so genau sagen woran es liegt.
Kann mir aber vorstellen das es an mehr Überwachung und Auswertung von internen Funktionen und neuen ASM compiler liegen kann.
- Als X86 oder X64 Kompiliert.
- Internen Aufruf anderen OS API Funktionen.
Kann mir aber vorstellen das es an mehr Überwachung und Auswertung von internen Funktionen und neuen ASM compiler liegen kann.
- Als X86 oder X64 Kompiliert.
- Internen Aufruf anderen OS API Funktionen.
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Re: Geschwindigkeitsvergleich PB 5 --> 6
Könnte vielleicht mit dem neuen C -backend ab Version 6.00 zu tun haben.
Added: a new C backend compiler for all PureBasic versions.
C ist anscheinend doch nicht so schnell, wie ASM. Die Unterschiede sind aber auch
nur marginal.
Ich habe auch noch die Version 5.61 installiert, da ich mir damals nicht so sicher war.
Und für mich neue gravierende, interessante Funktionen gab es bisher auch nicht.
Das betrifft auch die Bug-Beseitigungen.
Solange keine Top-Neuerungen, die mich interessieren, dabei sind, behalte
ich diese ältere Version auch noch bei.
Added: a new C backend compiler for all PureBasic versions.
C ist anscheinend doch nicht so schnell, wie ASM. Die Unterschiede sind aber auch
nur marginal.
Ich habe auch noch die Version 5.61 installiert, da ich mir damals nicht so sicher war.
Und für mich neue gravierende, interessante Funktionen gab es bisher auch nicht.
Das betrifft auch die Bug-Beseitigungen.
Solange keine Top-Neuerungen, die mich interessieren, dabei sind, behalte
ich diese ältere Version auch noch bei.
PB 6.10
- HeX0R
- Beiträge: 3040
- Registriert: 10.09.2004 09:59
- Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win11 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 + 3 - Kontaktdaten:
Re: Geschwindigkeitsvergleich PB 5 --> 6
Na ja, der C-Compiler ist by default gar nicht aktiviert, aber ich denke schon, dass der mit PB5.24 locker mithalten könnte.
Wenn denn die Optimierung in den Compileroptionen auch angehakt ist.
Wenn denn die Optimierung in den Compileroptionen auch angehakt ist.
{Home}.:|:.{Codes}.:|:.{Downloads}.:|:.{History Viewer Online}.:|:.{Bier spendieren}
Re: Geschwindigkeitsvergleich PB 5 --> 6
Verwende hauptsächlich den x86 Compiler, auch in diesem Fall und der Debugger ist aus.
Re: Geschwindigkeitsvergleich PB 5 --> 6
Der Schritt von PB 5.24 nach PB 6.0 ist ja schon ein ziemlich großer, da liegen immerhin 9 Jahre dazwischen.
Du kannst im PB-Museum auch die Versionen dazwischen noch immer runterladen und mal mit denen Kompilieren.
Dann siehst du vielleicht besser, ab welcher Version oder mit welchem Update diese Geschwindigkeitsabnahme kam.
Generell ist es aber nicht ausgeschlossen, dass mit einem Update ein Programm langsamer läuft, wenn z.B. ein Bug gefixed wurde, der zu Memory-Leaks oder Abstürzen geführt hat und nun durch eine zusätzliche Routine behoben wurde.
Du kannst im PB-Museum auch die Versionen dazwischen noch immer runterladen und mal mit denen Kompilieren.
Dann siehst du vielleicht besser, ab welcher Version oder mit welchem Update diese Geschwindigkeitsabnahme kam.
Generell ist es aber nicht ausgeschlossen, dass mit einem Update ein Programm langsamer läuft, wenn z.B. ein Bug gefixed wurde, der zu Memory-Leaks oder Abstürzen geführt hat und nun durch eine zusätzliche Routine behoben wurde.
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
- juergenkulow
- Beiträge: 188
- Registriert: 22.12.2016 12:49
- Wohnort: :D_üsseldorf-Wersten
Re: Geschwindigkeitsvergleich PB 5 --> 6
Warum muß der gesamten Quellcode in EINE Datei PureBasic.obj zusammen gequescht werden? Was wäre wenn nur noch der geänderten Teil in jeweils eine OBJ-Datei compiliert würde um lästige Wartezeit zu sparen? Der Linker würde sich dann um die vielen OBJ-Dateien kümmern.
- NicTheQuick
- Ein Admin
- Beiträge: 8807
- Registriert: 29.08.2004 20:20
- Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti - Wohnort: Saarbrücken
Re: Geschwindigkeitsvergleich PB 5 --> 6
Damit liegst du komplett daneben. Natürlich ist das C-Backend um Welten schneller. Immerhin haben in den C-Compiler ganze Entwicklerteams ihre Zeit investiert um zu optimieren, was optimierbar ist. Das ASM-Backend von Fred mit dem Peephole-Optimierer kann da kein bisschen mithalten. Das schreibt Fred auch selbst im Blog, siehe hier: https://www.purebasic.fr/blog/?p=502H.Brill hat geschrieben: 11.11.2023 16:26 Könnte vielleicht mit dem neuen C -backend ab Version 6.00 zu tun haben.
Added: a new C backend compiler for all PureBasic versions.
C ist anscheinend doch nicht so schnell, wie ASM. Die Unterschiede sind aber auch
nur marginal.
Meine Vermutung zum Thema ist die Umstellung von Ascii auf Unicode per Default. Da lite offensichtlich viel mit Strings arbeitet, kann das etwas ausmachen, wenn per Zeichen zwei Bytes statt nur einem benutzt werden.
Re: Geschwindigkeitsvergleich PB 5 --> 6
Wenn Textdateien (Ascii oder UTF8) eingelesen werden, werde diese intern nach Unicode gewandelt.
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Re: Geschwindigkeitsvergleich PB 5 --> 6
Ja mir scheint auch die Executables werden bei jeder größeren PB Version etwas mehr aufgebläht und etwas langsamer. Liegt das bei den Strings am Unicode Format? Wenn die Strings 2x so viel Speicher benötigen kann das auch etwas die Performance drosseln beim Alloziieren / Kopieren etc.
Du solltest bei PB 6 Executables immer "optimize Code" ankreuzen; in der Regel ist der C Compiler mehr up-to-date mit Optimierungen, meine Programme sind mit C Backend im Durchschnitt 3 mal schneller als Assembler Backend, und manchmal sogar noch schneller.
Ich habe aber eher den Eindruck, daß es irgendwo im Assembler Backend klemmt. Kann nicht genau darauf deuten aber so einige Sachen sind unverständlich langsam wie z.B. auf ein Array zugreifen.
Du solltest bei PB 6 Executables immer "optimize Code" ankreuzen; in der Regel ist der C Compiler mehr up-to-date mit Optimierungen, meine Programme sind mit C Backend im Durchschnitt 3 mal schneller als Assembler Backend, und manchmal sogar noch schneller.
Ich habe aber eher den Eindruck, daß es irgendwo im Assembler Backend klemmt. Kann nicht genau darauf deuten aber so einige Sachen sind unverständlich langsam wie z.B. auf ein Array zugreifen.