Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Makro-Ersatz (https://www.delphipraxis.net/103937-makro-ersatz.html)

FAlter 25. Nov 2007 14:40

Re: Makro-Ersatz
 
Hi,

weil es sinnlos ist, eine Prozedur zu verwenden, wenn es nur um eine winzige Anweisung geht. So ein inc ist mit einer einzelnen Maschinenanweisung übersetzbar, dafür das ganze Register-auf-Stack-sichern, call, inc, ret, register-von-stack-holen, in meiner Schleife multipliziert sich die zusätzliche Verlangsamung. Die Übersichtlichkeit war gerade das Argument, weshalb ich es lieber inline hätte. Aber ohne inline verzichte ich lieber auf den overhead. In diesem Fall wäre inline sogar eine Speicherplatzersparnis, was es sonst meist nicht ist, denn inc verbraucht weniger Speicher als push, call, pop. Es sind also nicht ein paar vervielfachte Nanosekunden, sondern auch noch ein paar vervielfachte Bytes. Außerdem handelt es sich tatsächlich um zwei mini-Procs (die andere wäre dec) ind eine Funktion (bar > 0). Nochmal das ganze vervielfacht.

Wäre es komplexer, würde ich es dann wirklich auslagern. Durch Optimierung eines Problemes ist für foo2 jedoch nur noch das inc übriggeblieben, und da lohnt es sich nicht mehr, außer, man verwendet eben inline, was aber nicht geht. Nun kann man aber bei inc nicht erkennen, dass der eigentliche Hintergrund, was getan werden soll, foo2 ist. Ich will sozusagen den Namen foo2 für die Anweisung inc(bar) verwenden.

Weder die vielen Nanosekunden noch die Bytes sind ein Problem. Es geht eher ums Prinzip. Übersichtlichkeit und lesbarkeit leiden unter meiner Lösung mit dem Kommentar nicht wirklich, da es so kleine Änderungen sind. Und warten werde ich es wohl nie müssen, da im Dezember Abgabe des Projekts ist und ich dann nier wieder damit zu tun haben muss (Schulaufgabe). Aber mit sinnlos-procs hätte ich ein schlechtes Gewissen.

Mfg
FAlter

alzaimar 25. Nov 2007 15:54

Re: Makro-Ersatz
 
Ah, dann ist es klar. Ich dachte, das war ein Beispiel...


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:38 Uhr.
Seite 2 von 2     12   

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