![]() |
Parameterübergabe
Hi ;)
Ich wollte mal fragen, ob es besser/performanter ist, nur den Zeiger auf Variablen einer Funktion/Prozedur zu übergeben, sofern man die Variablen in dieser z.B. nur zur Fallunterscheidung benötigt (oder zur nochmaligen Weitergabe). Praktisch:
Delphi-Quellcode:
Es geht dabei um einige Aufrufe, wäre also gut zu wissen, ob eine Variante performanter ist und wenn ja welche (ich vermute, wenn, dann ist es die 1.)
procedure Test(var BrauchIchNich: Integer);
vs. procedure Test(BrauchIchNich: Integer); Danke ;) air [edit=Luckie]Delphi-Tags korrigiert. Mfg, Luckie[/edit] |
Re: Parameterübergabe
Dann würde ich const nehmen. Doch ob's da bei deinen Möglichkeiten Unterschiede gibt, weiß ich nicht.
|
Re: Parameterübergabe
Zitat:
In Assembler sieht die 1. Ungefähr so aus:
Code:
...
mov eax, OFFSET MyVar
push eax call MyFunc ... MyFunc: push ebp mov ebp, esp mov eax, [ebp-$08] mov edx, [eax] Hingeben bei der 2.:
Code:
Der Einfachheit habe ich mal die Aufrufkonvention register nicht verwendet.
mov eax, MyVar
push eax call MyFunc ... MyFunc: push ebp mov ebp, esp mov edx, [ebp-$08] Es ist also ein Speicherzugriff weniger notwendig. Und Speicher ist verhältnismäßig langsam. |
Re: Parameterübergabe
Sinn mach const und var nur bei Datentypen, die größer als 4Bytes sind. Zum Beispiel Records. Im Falle von const und var wird der Pointer auf die Variable übergeben, der ja auch 4 Bytes groß ist. Sinnvoll ist es nur bei Records, Strings und Arrays.
|
Re: Parameterübergabe
Zitat:
Danke an alle! :) air |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:24 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 by Thomas Breitkreuz