![]() |
Was ist schneller - NAN oder try Except
Hi,
ich habe eine Routine, die eine float-Zahl auswertet. Es kann (sehr selten) vorkommen, daß die übergebene Zal den wert "NAN" besitzt. Wie soll ich das am besten abfangen So
Delphi-Quellcode:
if not IsNan then
result:=meineFunction(aZahl) else result:=0; oder so
Delphi-Quellcode:
try
result:=meineFunction(aZahl); except result:=0; end; Was ist schneller bzw. welcher Code ist eleganter? Gerd |
Re: Was ist schneller - NAN oder try Except
Ich würde es für eleganter halten IsNan (scheint auch schneller zu sein, schau mal in der Unit Math nach) zu verwenden. Da das ganze ja sehr selten auftritt, sollte Geschwindigkeit eigentlich keine Rolle spielen.
Edit: Mit try...except sollte man IMHO sehr sparsam umgehen. Sherlock |
Re: Was ist schneller - NAN oder try Except
Also bei try..except muss ein sog. SEH-Block erzeugt werden, der immer etwas langsamer ist, als Code ohne eine solche Struktur. Wobei das ganze natürlich abhängig davon ist, wie schnell deine Funktion eig. überhaupt durchläuft bzw. wie oft diese aufgerufen wird.
Du kannst ja mal beides umsetzen und dann für ein paar tausend Aufrufe die Zeit messen, aber ich denke, dass die IsNAN variante schneller und (siehe auch vorherigen Post) hier wahrscheinlich geeigneter ist. |
Re: Was ist schneller - NAN oder try Except
Ich würde es für elegant halten, dies direkt in "meineFunktion" auszuwerten...
|
Re: Was ist schneller - NAN oder try Except
IsNAN ist imho nur der Vergleich mit einer Konstante - und der ist mit Sicherheit schneller als nahezu jedes andere Konstrukt. Und wie Mirage228 schon geschrieben hat, sind try-except-Blöcke aufwändiger und langsamer
|
Re: Was ist schneller - NAN oder try Except
Zitat:
Darum müsste man eher sagen, eine Vorprüfung ist besser als eine ausgelöste Exception. Mit der Effizienz von try/except hat das recht wenig zu tun. |
Re: Was ist schneller - NAN oder try Except
Zitat:
Letztendlich sehe ich, daß die Abfrage mit IsNan(aZahl) besser und schneller ist. Danke an alle. Gerd |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:39 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