Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Performance von Pascal-Compilern (https://www.delphipraxis.net/17392-performance-von-pascal-compilern.html)

Chewie 4. Mär 2004 13:23


Performance von Pascal-Compilern
 
Ich plane z.Z. ein etwas größeres Projekt, das sowohl auf Linux als auch auf Windows lauffähig sein soll, und zwar mit der größtmöglichen Geschwinddigkeit. Die Sprache wird ObjectPascal sein.

Nun die Frage: Hat jemand Information über die Geschwindigkeit der erzeugten Programme von verschiedenen ObjectPascal-Compilern (Delphi/Kylix, FreePascal, GNUPascal) auch mit Berücksichtigung der unterschiedlichen OS (Windows, Linux)? Speziell Daten zu Listenverwaltungen und zum Umgang mit Objekten wären für mich interessant.

Und inwiefern ist GNUPascal kompatibel zur DL? FreePascal hab ich bereits getestet und bin zufrieden damit, doch wie sieht es mit GNUPascal und Konsorten aus?

Wäre nett, wenn mir jemand Infos geben könnte.

jbg 4. Mär 2004 16:55

Re: Performance von Pascal-Compilern
 
Zitat:

Zitat von Chewie
GNUPascal

Zitat:

Object Pascal
Das passt nicht zusammen. GNUPascal ist ein ANSI-Pascal Compiler. Ich habe den zwar schon länger (mehr als ein Jahr) nicht mehr angeschaut, aber ich denke nicht, dass der jetzt Borland's Erweiterungen beherscht.

Chewie 4. Mär 2004 17:11

Re: Performance von Pascal-Compilern
 
Laut deren Homepage werden inzwischen einige der Delphi-Erweiterungen unterstützt. Leider ist dazu kein Beispiel da. Ich werd den Compiler mal mir herunterladen und testen, ob er class und Konsorten versteht.

olf 4. Mär 2004 18:54

Re: Performance von Pascal-Compilern
 
ich wollte Free-Pascal und den GNU auch gestern mal testen, weil ich consolen programme unter linux schreiben will. und vielleicht auhc GUI's, mit einem anderen Toolkit.

jedoch hab ich son paar download probleme.

ich würde dir Kylix empfehlen, es gibt ne kostenlose Personal Version auf borland.com , der sollte doch class kennen^^

Sanchez 4. Mär 2004 19:22

Re: Performance von Pascal-Compilern
 
also ich kann dir Freepascal empfehlen.
Ich verwende es für kleine Linux-Consolen-Anwendungen und für CGIs

Minz 4. Mär 2004 21:05

Re: Performance von Pascal-Compilern
 
sorry leutz, ich will ja nicht schlechte Stimmung verbreiten, aber lest Euch die Ausgangsfrage nochmal durch und dann Eure Antworten! Dann könnte Ihr mal selber überlegen, obs das nun war!

Chewie 5. Mär 2004 14:08

Re: Performance von Pascal-Compilern
 
Danke, Minz ;)

Nei, dass es Kylix gibt, ist schon klar, aber leider hab ich noch keine Geschwindigkeitsvergleiche von Kylix und Delphi gesehen.

NicoDE 5. Mär 2004 15:32

Re: Performance von Pascal-Compilern
 
Zitat:

Zitat von Chewie
mit der größtmöglichen Geschwinddigkeit.

Dabei werden eher die verwendeten Algorithmen als die Optimierung durch den Compiler eine Rollen spielen.
Zitat:

Zitat von Chewie
Geschwindigkeitsvergleiche von Kylix und Delphi

Die DL-Compiler von Kylix3 und Delphi6 sind nahezu identisch.

Chewie 5. Mär 2004 15:44

Re: Performance von Pascal-Compilern
 
Zitat:

Zitat von NicoDE
Dabei werden eher die verwendeten Algorithmen als die Optimierung durch den Compiler eine Rollen spielen.


Ich habs zwar nicht dazu geschrieben, aber ich meinte die Geschwindigkeit der gleichen Algorithmen nach der Compilierung durch unterschiedliche Compiler. Und da ich erstens nicht alle ObjectPascal-Compiler kenne und zweitens wenig Ahnung und Erfahrung von solchen Benchmarks habe, hab ich hier mal gefragt.

Zitat:

Zitat von NicoDE
Die DL-Compiler von Kylix3 und Delphi6 sind nahezu identisch.

Danke, das hilft mir schon mal sehr. Ich hab mal gehört, dass der DL-Compiler, der den schnellsten Code erzeugt, der von D5 ist. Sind da die Unterschiede groß zu D6?
Und mich würden halt speziell Benchmarks in Bezug auf die Objektverwaltung interessieren, da ich bisher nur eine Gegenüberstellung von verschiedenen OP-Compilern gefunden hab. Dort schneidet zwar Delphi am besten ab, aber es geht halt nur um Arithmetik und solche Sachen.

NicoDE 5. Mär 2004 16:12

Re: Performance von Pascal-Compilern
 
Zitat:

Zitat von Chewie
Ich hab mal gehört, dass der DL-Compiler, der den schnellsten Code erzeugt, der von D5 ist. Sind da die Unterschiede groß zu D6?

Kann ich weder bestätigen noch widerlegen.
Zumindest unterstützt der Compiler von Delphi6 einige Inline-Assembleranweisungen 'neuerer' (MMX/SSE/SSE2?) IA32-Prozessoren - benutzt diese aber nicht zur Optimierung (der Compiler unterstützt bis zum heutigen Tage keine prozessorspezifische Optimierung damit das Image immer auf allen von Delphi unterstützten Plattformen läuft).
Ein allgemeines 'Problem' der Delphi-Compiler ist, dass sie keine Inlining unterstüzen.


Gruss Nico

ps: Grundsätzlich läßt sich die Code-Erstellung beim Delphi-Compiler kaum beeinflussen, was auch der Grund sein dürfte, warum in einigen Fällen C/C++/Asm-Module mit Delphi-Units gelinkt werden - und somit Delphi 'nur' noch als GUI-Entwicklungswerkzeug benutzt wird (allerdings erkennt/akzeptiert der Delphi-Linker nur sehr einfache OMF-Objektdateien, sodass man entweder viel Arbeit mit der Einbindung hat, oder man bei der Wahl der C/C++/Asm-Compiler/Linker eingeschränkt ist).

APP 5. Mär 2004 17:19

Re: Performance von Pascal-Compilern
 
Hallo Chewie,

Zitat:

Zitat von Chewie
Ich hab mal gehört, dass der DL-Compiler, der den schnellsten Code erzeugt, der von D5 ist. Sind da die Unterschiede groß zu D6?

ich kann mich Dunkel erinnern, dass Hagen mal erwähnte,
D5 erzeuge den kompaktesten (exe-Größe) Code,
bei der Geschwindigkeit bin ich mir nicht sicher,
am besten Du fragst ihn mal.

NicoDE 5. Mär 2004 17:40

Re: Performance von Pascal-Compilern
 
Zitat:

Zitat von APP
ich kann mich Dunkel erinnern, dass Hagen mal erwähnte, D5 erzeuge den kompaktesten (exe-Größe) Code, bei der Geschwindigkeit bin ich mir nicht sicher, am besten Du fragst ihn mal.

Kleiner <> Schneller.
Ich glaube nicht, dass es wesentliche Unterschiede bei der Code-Erstellung zwischen den 'aktuelleren' Delphi-Compilern gibt.
Was sich allerdings im Laufe der Versionen - mal in die eine, mal in die andere Richtung - geändert hat, sind Dinge die Laufzeitbibliotheken (RTL) und Standardbibliotheken (VCL u.a.) - deren 'Performance' läßt sich schlecht vergleichen und hat mit dem Compiler wenig zu tun.

Marcel Gascoyne 5. Mär 2004 22:53

Re: Performance von Pascal-Compilern
 
Schau mal hier nach, da hat sich mal einer wissenschaftlich damit beschäftigt und einen Benchmarktest der gängigen Pascal Compiler erstellt: http://www.cs.inf.ethz.ch/37-235/stu...s/kaufmann.pdf.

Gruß,
Marcel

olf 6. Mär 2004 07:51

Re: Performance von Pascal-Compilern
 
hey, netter vergleich.
die einen sagen, GNU nutzen, die anderen sagen FreePascal. aber was da verglichen wurde ist nicht schlecht. nur schade, dass Kylix nicht dabei war.

Chewie 6. Mär 2004 14:03

Re: Performance von Pascal-Compilern
 
Zitat:

Zitat von Marcel Gascoyne
Schau mal hier nach, da hat sich mal einer wissenschaftlich damit beschäftigt und einen Benchmarktest der gängigen Pascal Compiler erstellt: http://www.cs.inf.ethz.ch/37-235/stu...s/kaufmann.pdf.

Gruß,
Marcel

Dieses Dokument war das einzigste, was ich vorher bereits gefunden hab. Leider deckt das Benchmarking nicht die Bereiche ab, die mich interessieren.

Marcel Gascoyne 6. Mär 2004 16:15

Re: Performance von Pascal-Compilern
 
Welche Bereiche interressieren Dich denn ?

Für ein Cross-Plattform Projekt ist die kompatiblität der Compiler wichtig. Da wäre wohl Kylix erste Wahl. Die Compiler sollten wohl ähnlich schnellen Code erstellen, probiere es am besten mit einem Testprojekt unter gleichen Hardwarebedingungen aus.

Mit Kylix legst Du Dich allerdings auf Linux fest, im Falle von FreePascal stehen Dir auch andere Plattformen wie Free-/Net- und OpenBSD, Solaris und demnächst auch PowerPC Plattformen wie MacOS, AIX etc. zur Verfügung. Im Hinblick auf Skalierbarkeit ein entscheidender Vorteil gegenüber Kylix. Seitens Borland gibt es auch widersprüchliche Meldungen was die Weiterentwicklung von Kylix betrifft.

Ich persönlich verwende zur Zeit FreePascal unter FreeBSD für meine Projekte. Im Punkt Geschwindigkeit konnte ich bisher keine nachhaltigen Seiteneffekte feststellen. Bei Datenbankanwendungen ist die Ausführungsgeschwindigkeit allerdings auch nicht so entscheidend wie z.b. bei statistischen Berechnungen. Es kommt halt auf den Anwendungsfall an.

Schreib dochmal was Du genau in Deinem Projekt machen möchtest. Die Programmiersprache solltest Du auch für den speziellen Anwendungsfall aussuchen. Pascal ist nicht für alle Fälle ideal.

Bei rechenintensiven Anwendungen wirst Du an einem Compiler, der CPU-spezifische Instruktionen erzeugt nicht vorbeikommen. Weder der Delphi- noch der Kylix Compiler erzeugen CPU-optimierten Code. Bei FreePascal wird zumindest 386/486, Pentium, PII/K6 optimierter Code erzeugt.

Gruß,
Marcel

Chewie 6. Mär 2004 16:29

Re: Performance von Pascal-Compilern
 
Es handelt sich um Berechnungen für ein MM-Spiel (Massive Multiplayer). Es sollen also Daten für beispielsweise 1000 Spieler berechnet werden. Dabei wird halt auf eine Datenbank zugegriffen, wahrscheinlich MySQL.

Ein großer Teil der Rechenzeit dürften zwar die Datenbankzugriffe darstellen, aber der Hauptteil an der Rechenzeit sind zum einen Wanderungen in verketteten Bäumen, um herauszufinden, was berechnet werden soll, und zum anderen zur eigentlichen Berechnung einfache arithmetische Operationen.
Ich schätze, dass das größte Optimierungspotenzial nicht bei den arithmetischen Operationen auftritt, sondern eher bei dem Durchwandern der Bäume und beim Aufruf von dynamischen bzw. virtuellen Methoden.
Allerdings hab ich davon nicht wirklich Ahnung, es sind nur Vermutungen.

Keine Ahnung, wie lang die Berechnungen wirklich dauern, aber je schneller, desto besser. ObjectPascal als Sprache haben wir ausgewählt, da wir da drin im Gegensatz zu C++ recht fit sind.


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:17 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