Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Rueckgabewerte von ueberladenen Funktionen? (https://www.delphipraxis.net/44079-rueckgabewerte-von-ueberladenen-funktionen.html)

TeronG 19. Jul 2005 16:07

Re: Rueckgabewerte von ueberladenen Funktionen?
 
1. Ich will nen neuen Firmenrechner :( (viel zu lahm)
2. bei mir sind Functionen schneller (s.u.)
3. sorry für OT :pale:

Code:
Functiontest : 85139024 Ticks
Proceduretest: 108814560 Ticks
EDIT:
AHA !!! zuvor war MIT IDE
und das ist ohne:
Code:
Functiontest : 157207020 Ticks
Proceduretest: 129074536 Ticks

Functiontest : 92841112 Ticks
Proceduretest: 104016952 Ticks

Functiontest : 104332344 Ticks
Proceduretest: 101967576 Ticks
schwankt ziemlich ....

DGL-luke 19. Jul 2005 16:08

Re: Rueckgabewerte von ueberladenen Funktionen?
 
aber nach 800mal sieht es nicht gerade aus...

ich meine, eine prozedur ist doch auch nur ein call bzw. jmp/jr.

wenn man nun wüsste, in welchen maschinencode das var (klar, eine variable wird gesetzt) bzw. das reult:= / return umgesetzt wird, könnte man daraus natürlich rückschlüsse ziehen.

aber ist das nicht ein wenig off topic?

Dax 19. Jul 2005 16:09

Re: Rueckgabewerte von ueberladenen Funktionen?
 
Ich hab nen P4 1,8GHz, falls das was zur Sache tut ;) Aber anscheinend ist der Zeitunterschied Prozedur - Funktion Prozessorabhängig.

Zitat:

Zitat von DGL-luke
wenn man nun wüsste, in welchen maschinencode das var (klar, eine variable wird gesetzt) bzw. das reult:= / return umgesetzt wird, könnte man daraus natürlich rückschlüsse ziehen.

Für Funktionen erzeugt ein Result := ... ein

Code:
MOV EAX, ...
Im Beispielcode erzeugt der Compiler nur ein

Code:
ADD EAX, 1
Bei Prozeduren siehts anders aus, in diesem Fall käme

Code:
ADD EAX, 1
MOV [EDX], EAX
und als Standard zum Result-setzen

Code:
MOV addresse/[register], ...

DerDan 19. Jul 2005 16:18

Re: Rueckgabewerte von ueberladenen Funktionen?
 
QueryPerformanceCounter ist halt auch schon Prozessorabhängig!

DerDan

BlackJack 19. Jul 2005 18:47

Re: Rueckgabewerte von ueberladenen Funktionen?
 
Zitat:

Zitat von DGL-luke
aber nach 800mal sieht es nicht gerade aus...

800% <> 800 mal so schnell ;D

barf00s 20. Jul 2005 08:02

Re: Rueckgabewerte von ueberladenen Funktionen?
 
hört auf zu streiten -

Funktionen haben einen Rückgabewert - und in Rückgabewerte werden die Ergebnise reinkopiert, dafür gehen Rechenzyklen drauf -
wenn mein c++ e weng besser wär würdichs euch mit dem Post/Prefix dings wie bei ++i/i++ erklärn - wo auch ++i schneller is wie jeder weis

[edit]
es sollte vllt noch gesagt werden das prozeduren nicht _immer_ schneller sind, bei bestimmten mathematischen konstellationen können auch funktionen gleichschnell oder gar _schneller_ sein

blah -
nehmt die sache nicht so ernst - soooooo zeitkritische programme schreibt ihr eh nicht.
[/edit]

brechi 20. Jul 2005 08:13

Re: Rueckgabewerte von ueberladenen Funktionen?
 
@barf00s

da muss ich dir aber wiedersprechen :)

bei Funktionen wird der rückgabewert ins register EAX geschrieben
bei Prozeduren mit VAR Parametern wird das an eine Speicherstelle geschrieben (was vorher schon erwähnt wurde) demnach sind Prozeduren langsamer WENN das zuweisen oft vorgenommen wird, d.h. oft in den VAR parameter geschrieben wird.


aber nen wirklichen merkbaren unterschied gibt es wirklich nicht.
kommt auch drauf anwie der compiler das optimiert, kann ja sein das der bei ner prozedur auch immer alles erst in eax schreibt udn am ende in die variable dann ist das gleich schnell

barf00s 20. Jul 2005 08:15

Re: Rueckgabewerte von ueberladenen Funktionen?
 
ich wiedersprech dir ja auch nicht - hab ja nicht gesagt das procs _immer_ schneller sind als _funcs_

beispiel wäre da matrizenrechnerreien oder son blödsinn -

naja auch egal ;)
wir wissen wies gemeint war


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:15 Uhr.
Seite 3 von 3     123   

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