Thema: Delphi Makro-Ersatz

Einzelnen Beitrag anzeigen

Benutzerbild von FAlter
FAlter

Registriert seit: 21. Jul 2004
Ort: Ostfildern
1.096 Beiträge
 
FreePascal / Lazarus
 
#11

Re: Makro-Ersatz

  Alt 25. Nov 2007, 15:40
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
Felix Alter
  Mit Zitat antworten Zitat