Frage

ich eine Antwort von jemand möchte, die tatsächlich funktioniert in Echtzeit-Programmierung in C # oder die wirklich versteht die Sprache Interna.

Ich weiß, dass Ausnahmen sollten nicht zu handhaben normale Verarbeitung verwendet werden, aber nur Fehlerbedingungen zu erkennen. Es gibt viel Diskussion zu diesem Thema.

Ich würde gerne wissen, ob es eine Laufzeit ist langsam nach unten aus einfach einen try / catch-Block an Ort und Stelle mit (die nie eine Ausnahme abfängt, es sei denn das Programm wird auf jeden Fall beenden müssen). Der try / catch-Block ist in einer Funktion, die immer wieder genannt werden muß. Ich vermute, es gibt nur minimal Kosten.

Können die Kosten in Form von CPU-Zyklen quantifiziert werden, oder anderen Aufgaben (gleich Kosten als Floating-Point-Multiplikation) oder einem anderen Art und Weise?

Wir verwenden Microsoft C # .NET 3.5 unter Windows XP.

War es hilfreich?

Lösung

.NET Ausnahmen haben ein sehr, sehr gering Overhead-Kosten, wenn sie geworfen werden. einen try / catch-Block an Ort und Stelle hat, wird eine sehr geringe Auswirkungen auf die Leistung haben. Ich habe fast keine Auswirkungen gefunden, auch in sehr schnellen, enge Schleifen, Ausnahmebehandlung an seinem Platz zu haben.

jedoch Ausnahmen in .NET sind sehr teuer, wenn sie geworfen sind. Sie neigen dazu, viel High-Auswirkungen auf die Leistung zu sein, wenn man sie als viele andere Sprachen werfen. Dies ist auf die vollständige Stapelinformation zu entnehmen, wenn die Ausnahme erzeugt wird, etc.

Das ist das Gegenteil Verhalten zu einigen anderen Sprachen wie Python, wo die Ausnahmebehandlung ein höher Kosten, aber werfen ist eigentlich recht performant.

Wenn Sie jedoch betroffen sind, würde ich vorschlagen, dass Sie Ihre Routine-Profil, und testen Sie es selbst. Das ist meine Erfahrung nach recht wenig Leistungsprofil gewesen. Es gibt keine Substitution in Ihrer eigenen Code-Basis für die Messung.

Andere Tipps

Gute Diskussion, mit Metriken, der Auswirkungen auf die Leistung von Try-Catch hier.

Do try / catch-Blöcke verletzt Leistung wenn Ausnahmen sind nicht geworfen?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top