AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Was ist schneller, Funktion oder Prozedure?
Thema durchsuchen
Ansicht
Themen-Optionen

Was ist schneller, Funktion oder Prozedure?

Ein Thema von Angel4585 · begonnen am 28. Okt 2005 · letzter Beitrag vom 29. Okt 2005
Antwort Antwort
Seite 1 von 4  1 23     Letzte »    
Angel4585

Registriert seit: 4. Okt 2005
Ort: i.d.N.v. Freiburg im Breisgau
2.199 Beiträge
 
Delphi 2010 Professional
 
#1

Was ist schneller, Funktion oder Prozedure?

  Alt 28. Okt 2005, 13:36
Also ich hab einmal
Delphi-Quellcode:
Procedure x(var Arg : integer);
begin
Arg:=0;
end;
und

Delphi-Quellcode:
function y:integer;
begin
Result:=0;
end;
die ja beide glaube ich das selbe machen

einziger Unterschiede ist der AUfruf :

x(erg); erg:=y; Aber Sind Beide genau gleichschnell in der Ausführung oder ist eins schneller?


Edit: ich hab die no bashing signatur JUHU
Martin Weber
Ich bin ein Rüsselmops
  Mit Zitat antworten Zitat
Neotracer64

Registriert seit: 27. Okt 2004
292 Beiträge
 
Delphi 7 Professional
 
#2

Re: Was ist schneller, Funktion oder Prozedure?

  Alt 28. Okt 2005, 14:20
Teste es doch mal

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  lol,lol2: Int64;
  v: Integer;
begin
  QueryPerformanceCounter(lol);
  x(v);
  QueryPerformanceCounter(lol2);
  Label1.Caption := IntToStr(lol2-lol);

  QueryPerformanceCounter(lol);
  v := y;
  QueryPerformanceCounter(lol2);

  Label2.Caption := IntToStr(lol2-lol);
end;
  Mit Zitat antworten Zitat
Benutzerbild von malo
malo

Registriert seit: 19. Sep 2004
2.115 Beiträge
 
#3

Re: Was ist schneller, Funktion oder Prozedure?

  Alt 28. Okt 2005, 14:24
Ich denke, wenn es Performence-Unterschiede gibt, dann ist die function langsamer, weil dort noch ein Rückgabewert gespeichert wird. Aber das ist so minimal, dass der Unterschied nicht spürbar ist. Es wird halt höchstens noch eine Variable mehr gespeichert, mehr passiert nicht

Edit: Schmarn, es ging ja darum, dass bei der Procedure eine Variable per Parameter zurückgegeben wird.
  Mit Zitat antworten Zitat
Angel4585

Registriert seit: 4. Okt 2005
Ort: i.d.N.v. Freiburg im Breisgau
2.199 Beiträge
 
Delphi 2010 Professional
 
#4

Re: Was ist schneller, Funktion oder Prozedure?

  Alt 28. Okt 2005, 14:25
Hmm.. Funktion ist schneller, Prozedur schwankt zwischen 4 und 5, Funktion konstant bei 3

(bedeutet doch das funtion schneller ist oder?)
Martin Weber
Ich bin ein Rüsselmops
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: München
11.412 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: Was ist schneller, Funktion oder Prozedure?

  Alt 28. Okt 2005, 14:26
Zitat von Angel4585:
Hmm.. Funktion ist schneller, Prozedur schwankt zwischen 4 und 5, Funktion konstant bei 3

(bedeutet doch das funtion schneller ist oder?)
Setze das ganze mal in eine Schleife und lasse diese 100000 Mal laufen. Alles andere ist zu kurz für einen guten Mittelwert

......
Daniel W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
Neotracer64

Registriert seit: 27. Okt 2004
292 Beiträge
 
Delphi 7 Professional
 
#6

Re: Was ist schneller, Funktion oder Prozedure?

  Alt 28. Okt 2005, 14:31
Dann halt

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  lol,lol2: Int64;
  v: Integer;
  i: Integer;
begin

  QueryPerformanceCounter(lol);
  For i := 1 To 100000 Do
    begin
     x(v);
    end;
  QueryPerformanceCounter(lol2);

  Label1.Caption := IntToStr(lol2-lol);


  QueryPerformanceCounter(lol);
  For i := 1 To 100000 Do
    begin
     v := y;
    end;
  QueryPerformanceCounter(lol2);

  Label2.Caption := IntToStr(lol2-lol);
end;
Funktion is bei mir schneller
  Mit Zitat antworten Zitat
Angel4585

Registriert seit: 4. Okt 2005
Ort: i.d.N.v. Freiburg im Breisgau
2.199 Beiträge
 
Delphi 2010 Professional
 
#7

Re: Was ist schneller, Funktion oder Prozedure?

  Alt 28. Okt 2005, 14:32
WOW, das ändert das ganze schon beträchtlich : Prozedur liegt bei 3,107773 Funktion bei 3,087948

Edit :
Delphi-Quellcode:
var
  lol,lol2: Int64;
  v,w,i: Integer;
const anz = 1000000 ;
begin
  w:=0;
  for i:= 1 to anz do
   begin
   QueryPerformanceCounter(lol);
   xx(v);
   QueryPerformanceCounter(lol2);
   w:=w+ lol2-lol;
   end;
  Label1.Caption := FloatToStr(w/anz );

  w:=0;
  for i:= 1 to anz do
   begin
   QueryPerformanceCounter(lol);
   v:=y;
   QueryPerformanceCounter(lol2);
   w:=w+ lol2-lol;
   end;
  Label2.Caption := FloatToStr(w/anz );
end;
bei anz = 10000000 wird plötzlich die Prozedur schneller (3,14 für prozedure und 3,26 für Funktion)
Martin Weber
Ich bin ein Rüsselmops
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: München
11.412 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: Was ist schneller, Funktion oder Prozedure?

  Alt 28. Okt 2005, 14:35
Damit kannst Du sagen: nutze das, was Dir an der Stelle beim Schreiben mehr nutzen bringt (wahrscheinlich die Funktion), da der Geschwindigkeitsunterschied vernachlässigbar gering ausfällt

......
Daniel W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
Benutzerbild von Flocke
Flocke

Registriert seit: 9. Jun 2005
Ort: Unna
1.172 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#9

Re: Was ist schneller, Funktion oder Prozedure?

  Alt 28. Okt 2005, 14:39
Du solltest allerdings die Aufrufe von QueryPerformanceCounter aus der Schleife herausnehmen und jeweils nur zwei Mal aufrufen - das verfälscht doch beträchtlich.
Volker
Besucht meine Garage
Aktuell: RtfLabel 1.3d, PrintToFile 1.4
  Mit Zitat antworten Zitat
Angel4585

Registriert seit: 4. Okt 2005
Ort: i.d.N.v. Freiburg im Breisgau
2.199 Beiträge
 
Delphi 2010 Professional
 
#10

Re: Was ist schneller, Funktion oder Prozedure?

  Alt 28. Okt 2005, 14:40


nach 100.000.000 ist wieder die Funktion vorne...

naja ich muss dann bald mal .. schönes WE euch allen
Martin Weber
Ich bin ein Rüsselmops
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 4  1 23     Letzte »    


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 19:03 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