Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Performance-Test: Assigned() oder ungleich nil? (https://www.delphipraxis.net/89644-performance-test-assigned-oder-ungleich-nil.html)

Nogge 3. Apr 2007 15:47


Performance-Test: Assigned() oder ungleich nil?
 
Hallo Community,
Die Frage klingt vllt übertrieben penibel, aber ich möchte gern aus reiner Neugierde wissen, ob es einen (Geschwindigkeits-)Unterschied zw. den folgenden Schreibweisen gibt:
Delphi-Quellcode:
if Assigned(TestObj) then
  //
if (TestObj <> nil) then
  //
mfg Nogge

cruiser 3. Apr 2007 15:51

Re: Performance-Test: Assigned() oder ungleich nil?
 
Weil es bei Assigned(...) nen jump auf die Funktion gibt sollte das langsamer sein... es sei denn, der Compiler optimiert das schlauerweise.

Nogge 3. Apr 2007 15:55

Re: Performance-Test: Assigned() oder ungleich nil?
 
Jo, das denke ich auch, allerdings WEIß ich es nicht. Ich hoffe daher auf Personen hier im Forum, die sich intensiver mit der Materien auskennen und eine konkrete Antwort geben können.

Bernhard Geyer 3. Apr 2007 15:55

Re: Performance-Test: Assigned() oder ungleich nil?
 
Zitat:

Zitat von cruiser
Weil es bei Assigned(...) nen jump auf die Funktion gibt sollte das langsamer sein... es sei denn, der Compiler optimiert das schlauerweise.

Schon mal die Implementierung in der System.pas gefunden? Das ist AFAIK Compiler-Magic! Und ab BDS 2006 (oder wars BDS 2005) kann der Compiler eh Inline-Functions.

3_of_8 3. Apr 2007 16:03

Re: Performance-Test: Assigned() oder ungleich nil?
 
Der erzeugte Assembler-Code ist genau der gleiche:

Delphi-Quellcode:
test ebx, ebx
jz +$0d
(Wobei der zu überprüfende Pointer in ebx liegt und +$0d das Ende der darauffolgenden If-Anweisung ist.

Nogge 3. Apr 2007 16:06

Re: Performance-Test: Assigned() oder ungleich nil?
 
Ah, wunderbar, 3_of_8 !
Solch eine kompetente Antwort wollte ich hören^^
Nur noch eins: Was bedeutet +$0d nach dem Jump(if)Zero-Befehl?

cruiser 3. Apr 2007 16:12

Re: Performance-Test: Assigned() oder ungleich nil?
 
Okay.. bullshit meinerseits... aber ich war mir sicher, die Func gesehn zu haben :gruebel:


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:03 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