AGB  ·  Datenschutz  ·  Impressum  







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

Boolean: Welcher Aufruf ist schneller?

Ein Thema von Helmi · begonnen am 4. Jan 2005 · letzter Beitrag vom 4. Jan 2005
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.312 Beiträge
 
Delphi XE2 Professional
 
#1

Boolean: Welcher Aufruf ist schneller?

  Alt 4. Jan 2005, 08:04
Hallo,

ich hab in meinem Projekt eine CheckBox und im OnClick-Ereignis hab ich folgendes drinstehen:
Code:
procedure TForm1.CheckBox1Click(Sender: TObject)
begin
  with CheckBox1 do
    begin
      Button1.Enabled := Checked;
      Button2.Enabled := Checked;
      Button3.Enabled := Checked;
      Button4.Enabled := Checked;
      Button5.Enabled := Checked;
      Button6.Enabled := Checked;  
     
      {...}

      If Checked then
        //mach was
      else
        //mach was anderes
    end;
end;
gestern hab ich zufälligerweise ein Code-Schnipsel entdeckt und da wird das so gemacht:
Code:
procedure TForm1.CheckBox1Click(Sender: TObject)
var
  B: Boolean;

begin
  B := CheckBox1. Checked;

  Button1.Enabled := B;
  Button2.Enabled := B;
  Button3.Enabled := B;
  Button4.Enabled := B;
  Button5.Enabled := B;
  Button6.Enabled := B;  
     
  {...}

  If B then
    //mach was
  else
    //mach was anderes
end;
Jetzt meine Frage: Welche der beiden Möglichkeiten ist schneller oder sind beide gleich schnell?
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
Benutzerbild von Sanchez
Sanchez

Registriert seit: 24. Apr 2003
Ort: Neumarkt Stmk
892 Beiträge
 
Delphi XE6 Enterprise
 
#2

Re: Boolean: Welcher Aufruf ist schneller?

  Alt 4. Jan 2005, 08:12
Hallo,
Ich würde mal den zweiten für schneller halten, weil nur einmal auf die Property Checked der Checkbox zugegriffen wird.
Sicher bin ich mir aber nicht. Möglicherweise optimiert der Compiler so, dass es egal ist.

grüße, daniel
Daniel
Testen ist feige!
  Mit Zitat antworten Zitat
Benutzerbild von Boombuler
Boombuler

Registriert seit: 14. Mär 2003
Ort: Osnabrück
244 Beiträge
 
Delphi 2009 Professional
 
#3

Re: Boolean: Welcher Aufruf ist schneller?

  Alt 4. Jan 2005, 09:06
Hi,

Ich denke auch das der 2. Schneller is! bei Delphi 8 hab ich mit einem ähnlichen kunststück die Geschwindigkeit einer funktion um ca 70% verbessert... allerdings wurde dabei auch ca 80.000x auf ne Property zugegriffen!

Greetz
Boombuler
  Mit Zitat antworten Zitat
Benutzerbild von Kedariodakon
Kedariodakon

Registriert seit: 10. Sep 2004
Ort: Mönchengladbach
833 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Boolean: Welcher Aufruf ist schneller?

  Alt 4. Jan 2005, 09:24
Das zweite sollte schneller sei und zusätzlich ist es auch noch um 2 Zeilen kürzen

Bye
Christian
  Mit Zitat antworten Zitat
Robert Marquardt
(Gast)

n/a Beiträge
 
#5

Re: Boolean: Welcher Aufruf ist schneller?

  Alt 4. Jan 2005, 11:00
Das kommt natuerlich hauptsaechlich auf die Implementation der Checked-Property an.
Bei TListView ist die Performance z. B. schrecklich.
  Mit Zitat antworten Zitat
moritz

Registriert seit: 18. Apr 2003
1.037 Beiträge
 
#6

Re: Boolean: Welcher Aufruf ist schneller?

  Alt 4. Jan 2005, 11:05
Miss es doch einfach...
"Optimistisch ist diejenige Weltanschauung, die das Sein höher als das Nichts stellt und so die Welt und das Leben als etwas an sich Wertvolles bejaht."
Albert Schweitzer
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.312 Beiträge
 
Delphi XE2 Professional
 
#7

Re: Boolean: Welcher Aufruf ist schneller?

  Alt 4. Jan 2005, 11:34
wie kann man so was messen?
soll ich mit der stopuhr daneben stehen und warten?
oder gibts da ne andere Delphi-typischere Möglichkeit?
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
Benutzerbild von fkerber
fkerber
(CodeLib-Manager)

Registriert seit: 9. Jul 2003
Ort: Ensdorf
6.723 Beiträge
 
Delphi XE Professional
 
#8

Re: Boolean: Welcher Aufruf ist schneller?

  Alt 4. Jan 2005, 11:37
Hi!

Es geht wohl mit GettickCount, aber irgendwer hat mal gesagt, dass das nicht so wirklich toll wäre. War das Hagen (negaH) ??
Such vielleicht mal nach Zeitmessung oder so. Es war in irgendeinem Thread bzgl. Sortieralgorhythmen.


Ciao Frederic
Frederic Kerber
  Mit Zitat antworten Zitat
Benutzerbild von Boombuler
Boombuler

Registriert seit: 14. Mär 2003
Ort: Osnabrück
244 Beiträge
 
Delphi 2009 Professional
 
#9

Re: Boolean: Welcher Aufruf ist schneller?

  Alt 4. Jan 2005, 11:56
Delphi-Quellcode:
procedure TForm1.CheckBox1Click(Sender: TObject);
var i:Cardinal;
loop:integer;
begin
  i := GettickCount;
  for Loop := 1 to 100000 do
  with CheckBox1 do
    begin
      Button1.Enabled := Checked;
      Button2.Enabled := Checked;
      Button3.Enabled := Checked;
      Button4.Enabled := Checked;
      Button5.Enabled := Checked;
      Button6.Enabled := Checked;

      {...}

      If Checked then
        //mach was
      else
        //mach was anderes
    end;
  showmessage(inttostr(Gettickcount - i));
end;
Result -> 16 mili sek

Delphi-Quellcode:
procedure TForm1.CheckBox1Click(Sender: TObject);
var i:Cardinal;
loop:integer;
b:Boolean;
begin
  i := GettickCount;
  for Loop := 1 to 100000 do
  begin
  B := CheckBox1. Checked;

  Button1.Enabled := B;
  Button2.Enabled := B;
  Button3.Enabled := B;
  Button4.Enabled := B;
  Button5.Enabled := B;
  Button6.Enabled := B;

  end;
  showmessage(inttostr(Gettickcount - i));
end;
Result -> 16 mili sek
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.312 Beiträge
 
Delphi XE2 Professional
 
#10

Re: Boolean: Welcher Aufruf ist schneller?

  Alt 4. Jan 2005, 12:17
ja das hab ich jetzt auch gemessen - dass das gleich ist von der zeit her

Trotzdem Danke

Jetzt weiss ich endlich wie man eine Procedure ausmisst

[off]
Wieso sagt mir eigentlich niemand dass bei CheckBox1.Checked/RadioGroup1.Checked auch OnClick ausgelöst wird?
[/off]
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 13:15 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