Autor Beitrag
Regan
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 2157
Erhaltene Danke: 72


Java (Eclipse), Python (Sublimetext 3)
BeitragVerfasst: Di 01.04.08 19:17 
Moin,

ich habe jetzt hier mal eine Frage bezüglich des im Titel geschilderten Problems. Die Sache ist Folgende: Ich habe eine ListView/-Box. Sagen wir, die hat 4 Einträge. Für gewöhlich würde ich, um zu überprüfen, ob ein Eintrag ausgewählt ist, folgenden Code nehmen:
ausblenden Delphi-Quelltext
1:
if ListView1.Itemindex<>-1 then					

Allerdings habe ich mir in letzter Zeit mal Quelltexte anderer Entwickler angeschaut und da habe ich folgendes gefunden:
ausblenden Delphi-Quelltext
1:
if ListView1.Itemindex>-1 then					

Meine Frage ist jetzt: Was ist davon effektiver? Ich weiß, dass es sich nur um zehntel Sekunden handeln kann.

MfG
Regan
F34r0fTh3D4rk
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 5284
Erhaltene Danke: 27

Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
BeitragVerfasst: Di 01.04.08 19:20 
hi,

das zweite ist auf jedenfall "richtiger", da der Index bei minimal 0 liegen muss um gültig zu sein.
Wahrscheinlich sind es auch nicht zehntel Sekunden, nicht mal hundertstel.

mfg
Regan Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 2157
Erhaltene Danke: 72


Java (Eclipse), Python (Sublimetext 3)
BeitragVerfasst: Di 01.04.08 19:26 
Danke für deine Antwort.
user profile iconF34r0fTh3D4rk hat folgendes geschrieben:
da der Index bei minimal 0 liegen muss um gültig zu sein.

Du meinst also, um auch Werte wie -2 auszuschließen. OK. Dann werde ich mir das mal angewöhnen.
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Di 01.04.08 19:55 
Code-Mäßig sieht das beides auch auf ASM-Ebene ähnlich aus; macht dort zeitlich keinen Unterschied.

Anders sieht es aber in Bezug auf die Richtigkeit aus: Die variante Index > -1 ist die richtige, da sie Index < 0 ausschließt, was ein Ungleich nicht macht.

Zur Performance:

Wenn sich Index aus einer Berechnung ergibt, lässt sich > -1 durch eine einfache Abfrage Non-Carry\Carry auswerten, während Ungleich in diesem Fall ein explizites Compare benötigen würde.

Also: Die richtige Version verwenden: Die ist sogar schneller :P

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
Regan Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 2157
Erhaltene Danke: 72


Java (Eclipse), Python (Sublimetext 3)
BeitragVerfasst: Di 01.04.08 19:59 
user profile iconBenBE hat folgendes geschrieben:
Also: Die richtige Version verwenden: Die ist sogar schneller :P

Sehr interessant. Da werde ich das mal anpassen müssen.