Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Units oder Include-Dateien - Overhead? (https://www.delphipraxis.net/101309-units-oder-include-dateien-overhead.html)

guidok 11. Okt 2007 06:13


Units oder Include-Dateien - Overhead?
 
Hallo,

um meinen Code etwas übersichtlicher zu gestalten, habe ich ihn bisher auf mehrere Units verteilt. Das hat den Vorteil, dass ich nicht einen ellenlangen Quelltext bekomme durch den ich ewig scrollen muss, sondern das Ganze nach Funktionsgruppen aufteile und diese dann auch getrennt austesten und später "vergessen" kann.

Jetzt habe ich irgendwo (?) gelesen, dass das Einbinden von Units einen zusätzlichen Overhead im Programm erzeugt (also auch die EXE vergrößert), während das bei Include-Dateien nicht so wäre. Hat da jemand Informationen dazu und weiß, ob es sich überhaupt lohnt darüber nach zu denken?

Gruß,
Guido

Hansa 11. Okt 2007 06:21

Re: Units oder Include-Dateien - Overhead?
 
Nene, das hast du falsch verstanden. $I erzeugt praktisch den identischen Quelltext, wie er sowieso da wäre. Die einzelnen Units werden dadurch compiliert nicht größer.

Bernhard Geyer 11. Okt 2007 06:33

Re: Units oder Include-Dateien - Overhead?
 
Includedateien werden primär dazu verwenden Compilerschalter in Quelldateien unterzubringen und nicht im Projekt definieren zu müssen. Ist vor allem für Komponentenhersteller sinnvoll, da sonst jeder User default-werte von Compilerschaltern in jedem Projekt unterbringen müsste.

guidok 11. Okt 2007 06:39

Re: Units oder Include-Dateien - Overhead?
 
Zitat:

Nene, das hast du falsch verstanden. $I erzeugt praktisch den identischen Quelltext, wie er sowieso da wäre. Die einzelnen Units werden dadurch compiliert nicht größer.
Wenn ich dich jetzt richtig verstehe, dann hatte ich das schon richtig verstanden. Mit $I kann ich einfach Teile des Quelltextes in eine andere Datei auslagern (bei mir aus den genannten Gründen), die dann beim Compilieren wieder "zusammen gesucht" werden. Klar. Bei Units mache ich ja im Prinzip auch nichts anderes: Ich lagere einzelne Funktionsblöcke in andere Dateien aus und binde sie mit der uses Klausel wieder in mein Programm ein. Die Frage ist ja, ob das Unit-Konzept dabei einen größeren Overhead erzeugt (so hatte ich das Gelesene verstanden) oder nicht.

mkinzler 11. Okt 2007 06:42

Re: Units oder Include-Dateien - Overhead?
 
Die Verwendung von Units erzeugt klar einen Overhead, da es nicht das selbe wie ein include ist. Units sind Module.

RavenIV 11. Okt 2007 08:01

Re: Units oder Include-Dateien - Overhead?
 
Jetzt gebe ich auch meinen Senf dazu.

Includes:
- überall, wo Du $I datei.inc machst, wird der Code der inc-Datei eingefügt.. Also wenn Du das in 10 Dateien hast, wird der Code 10x eingefügt.
- in Includes kannst Du nicht "surfen". Klick mal bei gedrückter STRG-Taste auf eine Funktion oder Variable oder Klasse. Dann kommst Du zu der Definition. Mit ALT-CursorLinks kommst Du wieder zurück. Das funktioniert innerhalb einer inc-Datei nicht.
- Das "Suchen in Verzeichnissen" schliesst die inc-Dateien nicht mit ein.
- im Delphi-Editor werden inc-Dateien nicht mit CodeHighlighting dargestellt, sehen also nicht so "schön" aus.

Uses, Units:
- die Unit wird genau dort eingebunden, wo sie benötigt wird
- eine Unit wird nicht mehrmals eingebunden
- das "surfen" funktioniert
- CodeHighlighting geht

Also wenn ich includes sehe, bei denen mehr als nur "Globale Variablen" oder "Globale Definitionen" oder Compiler-Direktiven drin sind, gibt's Schimpfe.
Alles andere ist nämlich bei uns in der Firma "verboten".

Mir graut's schon immer, wenn ich was mit den IBObjects machen muss. Dort wimmelt es nur so von includes.

Luckie 11. Okt 2007 08:28

Re: Units oder Include-Dateien - Overhead?
 
Zitat:

Zitat von RavenIV
- im Delphi-Editor werden inc-Dateien nicht mit CodeHighlighting dargestellt, sehen also nicht so "schön" aus.

Delphi 7 Professional: Codehighlightning geht auch in Include Dateien.

guidok 21. Feb 2008 06:11

Re: Units oder Include-Dateien - Overhead?
 
Ich muss noch einmal (nach einiger Zeit) eine Frage dazu loswerden:

Wird eine Unit komplett in die exe kompiliert? Also, ich habe eine Unit mit vielen nützlichen Proceduren und Funktionen, die ich in die uses-Klausel mit aufnehme. Daraus benötige ich dann im Quelltext nur eine Funktion. Wird dann nur die benötigte Funktion in die exe eingebunden oder alles?

Ich weiß, in Zeiten riesiger Arbeitsspeiche muss man sich keinen großen Kopf um solche Sachen machen, aber etwas interessiert es mich doch und ich bin da auch etwas penibel...

Guido

turboPASCAL 21. Feb 2008 07:13

Re: Units oder Include-Dateien - Overhead?
 
Zitat:

Zitat von Luckie
Zitat:

Zitat von RavenIV
- im Delphi-Editor werden inc-Dateien nicht mit CodeHighlighting dargestellt, sehen also nicht so "schön" aus.

Delphi 7 Professional: Codehighlightning geht auch in Include Dateien.

Auch in Delphi 6 PE. ;)

Übrigens, das "Deklaration suchen" etc auch.


@guidok, es wird aus der Unit nur das eingebunden was auch verwendet wird. Der Rest bleibt draussen.

Sinn macht das auslagern verschiedener Proceduren und Funktionen (sowie Konstanten etc.) in Include Datein nur wenn man es mit der nonVCL-Programierung gern mal übertreibt.
Solche Kopieraktionen dauern dann mal schon so um die 2 h :mrgreen:

guidok 21. Feb 2008 07:47

Re: Units oder Include-Dateien - Overhead?
 
Danke turboPascal! Das habe ich mir schon so gedacht und es ist ja auch sinnvoll so.


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