AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Parameterübergabe

Ein Thema von Airblader · begonnen am 15. Dez 2005 · letzter Beitrag vom 15. Dez 2005
Antwort Antwort
Benutzerbild von Airblader
Airblader

Registriert seit: 29. Okt 2004
Ort: Geislingen an der Steige
742 Beiträge
 
#1

Parameterübergabe

  Alt 15. Dez 2005, 13:12
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:
procedure Test(var BrauchIchNich: Integer);
vs.
procedure Test(BrauchIchNich: Integer);
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.)

Danke

air

[edit=Luckie]Delphi-Tags korrigiert. Mfg, Luckie[/edit]
Ingo Bürk
Es nimmt der Augenblick, was Jahre geben.

Johann Wolfgang von Goethe
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Parameterübergabe

  Alt 15. Dez 2005, 13:25
Dann würde ich const nehmen. Doch ob's da bei deinen Möglichkeiten Unterschiede gibt, weiß ich nicht.
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.483 Beiträge
 
Delphi 10.1 Berlin Professional
 
#3

Re: Parameterübergabe

  Alt 15. Dez 2005, 13:27
Zitat von Airblader:
ich vermute, wenn, dann ist es die 1.
Falsch vermutet.

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:
mov eax, MyVar
push eax
call MyFunc
...

MyFunc:
push ebp
mov ebp, esp

mov edx, [ebp-$08]
Der Einfachheit habe ich mal die Aufrufkonvention register nicht verwendet.
Es ist also ein Speicherzugriff weniger notwendig. Und Speicher ist verhältnismäßig langsam.
  Mit Zitat antworten Zitat
Benutzerbild von jim_raynor
jim_raynor

Registriert seit: 17. Okt 2004
Ort: Berlin
1.251 Beiträge
 
Delphi 5 Standard
 
#4

Re: Parameterübergabe

  Alt 15. Dez 2005, 13:28
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.
Christian Reich
Schaut euch mein X-COM Remake X-Force: Fight For Destiny ( http://www.xforce-online.de ) an.
  Mit Zitat antworten Zitat
Benutzerbild von Airblader
Airblader

Registriert seit: 29. Okt 2004
Ort: Geislingen an der Steige
742 Beiträge
 
#5

Re: Parameterübergabe

  Alt 15. Dez 2005, 13:44
Zitat von jim_raynor:
Sinnvoll ist es nur bei Records, Strings und Arrays.
Das ist damit die Antwort, die ich brauche (der Integer oben war ja nur ein Beispiel, es wird u.a. ein String übergeben).

Danke an alle!

air
Ingo Bürk
Es nimmt der Augenblick, was Jahre geben.

Johann Wolfgang von Goethe
  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 08:32 Uhr.
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