Entwickler-Ecke
Algorithmen, Optimierung und Assembler - <> oder > bei Vergleich
Regan - Di 01.04.08 19:17
Titel: <> oder > bei Vergleich
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:
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:
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 - 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 - Di 01.04.08 19:26
Danke für deine Antwort.
F34r0fTh3D4rk 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 - 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
Regan - Di 01.04.08 19:59
BenBE hat folgendes geschrieben: |
Also: Die richtige Version verwenden: Die ist sogar schneller :P |
Sehr interessant. Da werde ich das mal anpassen müssen.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!