![]() |
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] |
Re: Boolean: Welcher Aufruf ist schneller?
Zitat:
|
Re: Boolean: Welcher Aufruf ist schneller?
Moin Helmi,
Zitat:
![]() |
Re: Boolean: Welcher Aufruf ist schneller?
Da bin ich grad durch das Showmessage beim ausmessen der Procedure selbst drauf gekommen, weil beim starten der software 2x die Message angezeigt wurde.
Na ja - und darauf hin bin ich darauf gekommen, dass bei CheckBox1.Checked := true (beim auslesen der IniDatei gesetzt) das OnClick ausgegeben wurde. Aber bevor ich zu viel Off schreib, hör ich jetzt auf :-) Trotzdem Danke an Alle! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:20 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