![]() |
Boolean: Welcher Aufruf ist schneller?
Hallo,
ich hab in meinem Projekt eine CheckBox und im OnClick-Ereignis hab ich folgendes drinstehen:
Code:
gestern hab ich zufälligerweise ein Code-Schnipsel entdeckt und da wird das so gemacht:
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;
Code:
Jetzt meine Frage: Welche der beiden Möglichkeiten ist schneller oder sind beide gleich schnell?
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; |
Re: Boolean: Welcher Aufruf ist schneller?
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 |
Re: Boolean: Welcher Aufruf ist schneller?
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 |
Re: Boolean: Welcher Aufruf ist schneller?
Das zweite sollte schneller sei und zusätzlich ist es auch noch um 2 Zeilen kürzen :zwinker:
Bye |
Re: Boolean: Welcher Aufruf ist schneller?
Das kommt natuerlich hauptsaechlich auf die Implementation der Checked-Property an.
Bei TListView ist die Performance z. B. schrecklich. |
Re: Boolean: Welcher Aufruf ist schneller?
Miss es doch einfach...
|
Re: Boolean: Welcher Aufruf ist schneller?
wie kann man so was messen?
soll ich mit der stopuhr daneben stehen und warten? oder gibts da ne andere Delphi-typischere Möglichkeit? |
Re: Boolean: Welcher Aufruf ist schneller?
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 |
Re: Boolean: Welcher Aufruf ist schneller?
Delphi-Quellcode:
Result -> 16 mili sek
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;
Delphi-Quellcode:
Result -> 16 mili sek
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; |
Re: Boolean: Welcher Aufruf ist schneller?
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] |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:19 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-2025 by Thomas Breitkreuz