AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Delphi-PRAXiS - Lounge Klatsch und Tratsch Find out why after 22 years more developers than ever are choosing Delphi
Thema durchsuchen
Ansicht
Themen-Optionen

Find out why after 22 years more developers than ever are choosing Delphi

Ein Thema von himitsu · begonnen am 30. Jun 2017 · letzter Beitrag vom 10. Okt 2017
Antwort Antwort
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.384 Beiträge
 
Delphi 12 Athens
 
#1

AW: Find out why after 22 years more developers than ever are choosing Delphi

  Alt 3. Jul 2017, 18:54
Bei Ressourcen weiß der Compiler es nicht.
Da müsste Emba mal beim {$R} einbauen, dass man da ein "lass weg, wenn nicht direkt referenziert"-Flag angeben kann, aber es gibt eh keine direkten Ressouren-Referenzierungen.
Außnahme sind die RessourceStrings und die lässt der Compiler/Linker bereits weg, wenn sie nicht genutzt werden.

{$R} "innerhalb" einer Klassen-Deklaration oder in einer Prozedur-Implementation definiert, da wäre es schön, wenn sowas der Compiler mit weglassen würde, wenn die Klasse/Prozedur auch nicht gelinkt wird.



Und der Rest liegt nicht am Compiler.

Es ist auch aufwändig, wenn man nachträglich versuchen wöllte alle Verbindungen dynamisch zu gestalten und zusätzlich ist es für den Entwickler schwerer, weil er alles selber einbinden müsste, was bisher automatisch immer da war.

Class-Constructor/Destructor: ich verwende Jenen auch, seit paar Jährchen, anstatt alles in Initialization /Finalization zu packen, denn alles was in Letzterem ist, wird immer eingebunden, da es "dort" verwendet wird, selbst wenn es sonst kein Anderer nutzt.
Und da kenne ich fast Keinen, der sowas nutzt.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
SneakyBagels
(Gast)

n/a Beiträge
 
#2

AW: Find out why after 22 years more developers than ever are choosing Delphi

  Alt 3. Jul 2017, 21:30
Zitat:
Bei Ressourcen weiß der Compiler es nicht.
Da müsste Emba mal beim {$R} einbauen, dass man da ein "lass weg, wenn nicht direkt referenziert"-Flag angeben kann, aber es gibt eh keine direkten Ressouren-Referenzierungen.
Aber bräuchte man dafür dann nicht schon fast einen 2-Wege-Compiler so wie bei C++?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.384 Beiträge
 
Delphi 12 Athens
 
#3

AW: Find out why after 22 years more developers than ever are choosing Delphi

  Alt 3. Jul 2017, 23:01
Nein.
Es gibt auch so schon immer zwei "Durchgänge".
Compiler und Linker.
Ein Pre-Compiler, wo wir uns einklinken können, wäre aber mal was Schönes.

Der Compiler nimmt den Quellcode, übersetzt ihn und optimiert ihn etwas.
Zum Schluß setzt der Linker alles zusammen und lässt eventuell noch paar Dinge weg.

Eine Unit wird auch erstmal komplett kompiliert (zur PAS -> DCU),
der Ressource-Compiler nimmt sich die unkompilierten Ressourcen vor (RC -> RES)
und dann baut der Linker das zusammen. (DCU/DFM/RES -> EXE/DLL/BPL/...)

Der Linker lässt dabei ungenutzte Konstanten weg (fasst Doppelte zusammen) und auch die ungenutzten Prozeduren und Typen fliegen raus.
Dann noch die Offsets und Adressen anpassen, an die endgültigen Positionen.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.966 Beiträge
 
Delphi 12 Athens
 
#4

AW: Find out why after 22 years more developers than ever are choosing Delphi

  Alt 4. Jul 2017, 03:48
Die Diskussion sollte vielleicht besser abgetrennt werden...

Zitat:
Bei Ressourcen weiß der Compiler es nicht.
Da müsste Emba mal beim {$R} einbauen, dass man da ein "lass weg, wenn nicht direkt referenziert"-Flag angeben kann, aber es gibt eh keine direkten Ressouren-Referenzierungen.
Aber bräuchte man dafür dann nicht schon fast einen 2-Wege-Compiler so wie bei C++?
Nein, eine Lösung für P=NP. Denn der Compiler müsste auch den kompletten Quelltext inkl. einkompilierter Objectfiles usw. durchgehen um zu schauen, ob da irgendwo die Ressource verwendet wird...
Beispiel:
Der Ressourcenname wird dynamisch generiert und in eine Variable gepackt, die dann an TRessourceStream übergeben wird.
Wie soll der Compiler das erkennen?

Ein Compiler der einem aufzwingt dinge in sein Programm mit ein zu kompilieren was nicht nötig und NICHT verwendet wird der Taugt nichts.
Wenn du z.B. den verbesserten Speichermanager von Delphi 2006 und höher nicht verwendest, wäre ich gespannt auf den entsprechenden Quelltext.
Das sind übrigens alleine ca. 6000 Zeilen Code (getmem.inc).

Vermutlich sagst du jetzt, dass du den ja gar nicht verwenden willst? Weil deine Programme nicht schneller sein sollen, wenn dadurch die Exe größer wird? Da dürften aber 99,9% der Entwickler und Anwender anderer Meinung sein.

Zitat:
@TiGü Wenn du wirklich reine Non-VCL und Non-RTL Programme schreiben würdest, wäre die EXE in Turbo Pascal, Delphi 2, Delphi 7, Delphi 2010, Delphi Tokyo und so weiter annähernd gleich groß.
Quatsch mach's einfach mal dann siehst du das deine Behauptung für'n.. Ar.. ist.
Delphi 2 7 KiB, Delphi 7 13 KiB, Delphi 2006 17 KiB, Delphi XE 20 KiB, Delphi XE6 21 KiB, Delphi 10.1 Berlin und 10.2 Tokyo 44 KiB.
Der Sprung zwischen Delphi 7 und Delphi 2006 ist der aus dem Fastcode Projekt hervorgegangene deutlich schnellere Speichermanager.
Für den zweiten Sprung müsste ich erst suchen was da in der Exe neu drin ist.

Ohne VCL und RTL ist es jedenfalls nicht so, dass es ständig so große Steigerungen gibt, sondern es sind vor allem zwei (in Relation) große Sprünge.
Sebastian Jänicke
AppCentral

Geändert von jaenicke ( 4. Jul 2017 um 03:50 Uhr)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#5

AW: Find out why after 22 years more developers than ever are choosing Delphi

  Alt 4. Jul 2017, 05:44
Zitat:
Vermutlich sagst du jetzt, dass du den ja gar nicht verwenden willst? Weil deine Programme nicht schneller sein sollen, wenn dadurch die Exe größer wird? Da dürften aber 99,9% der Entwickler und Anwender anderer Meinung sein.
Es gibt nicht umsonst in C++ Möglichkeiten sein Kompilat zu Optimieren.
Keine/Größe/Geschwindigkeit usw... Bin ich der einzige also das 1% das diese Möglichkeiten ausnutzt? Möchte ich bezweifeln.
Dabei sind aber die Optimierungen des Linker noch nicht mit eingeschlossen.

Die Frage ist was verstehst du unter schneller.
Die Start Geschwindigkeit eines Programms wird von Windows verwaltet oder warum glaubst du gibt es die Caches?
Zudem hängt es stark von der Art der Verwendung ab.
Wenn ich eine Liste von 10000 Einträgen mit einer TStringlist verwalte anstatt auf eine Datenbank auszuweichen dann ist man selbst schuld.

Zitat:
Delphi 2 7 KiB, Delphi 7 13 KiB, Delphi 2006 17 KiB, Delphi XE 20 KiB, Delphi XE6 21 KiB, Delphi 10.1 Berlin und 10.2 Tokyo 44 KiB.
Danke das du dir die Mühe gemacht hast.

Man sieht also das meine Behauptung nicht von der Hand zu weisen ist.
Eine Faktor von 3(D7 zu Tokyo) ist für mich persönlich inakzeptabel.
Mehr ist dazu nicht zu sagen.

gruss

Geändert von EWeiss ( 4. Jul 2017 um 06:15 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.966 Beiträge
 
Delphi 12 Athens
 
#6

AW: Find out why after 22 years more developers than ever are choosing Delphi

  Alt 4. Jul 2017, 07:15
Wenn du den alten deutlich langsameren Speichermanager usw. haben möchtest, weil du nicht möchtest, dass etwas Modernes und eben größeres in deiner Exe landet, dann bleibt dir in der Tat nur eine alte Delphiversion.

Langsam bedeutet bei jeder Speicheranforderung, z.B. wenn du einen String zuweist usw., ist es etwas langsamer. Natürlich nicht gleich sekundenweise, aber es läppert sich. Details, Vergleichstests usw. findest du beim Fastcode Projekt eventuell noch.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Antwort Antwort


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 11:45 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