Обработка исключений на полях Windows (по крайней мере, для C++) получает удар производительности при выходе из блока попытки преждевременно (такого как выполнение оператора возврата) то же, как будто исключение было выдано.
Но что относительно C#? Существует ли хит производительности для возврата преждевременно из блока попытки, ли через оператор возврата или оператор завершения?
Если есть снижение производительности, оно крошечное. Это определенно не похоже на то же самое, что и перехват исключения. (И даже это не так плохо, как думают многие.)
Насколько мне известно, производительность возврата из блока попытки незначительна. Вероятность того, что это будет значительным в вашем приложении, по существу равна 0. Просто напишите максимально читаемый код, а затем протестируйте / профилируйте свое приложение - это будет намного лучший способ получить хорошую производительность, чем попытки повторного предположения в подобных вещах. .
Нет, никаких штрафов за преждевременный выход из блока попыток
не существует.
Я рассчитал разницу между вызовом метода, который возвращается в середине блока try, и метода, который естественным образом выходит из блока try перед возвратом, и нет никакой измеримой разницы.
Есть небольшие накладные расходы на использование блока try
(около 0,000002 мс), но нет дополнительных накладных расходов на выход из середины блока.
Всякая обработка исключений влечет за собой небольшие издержки производительности - всегда есть дополнительная работа, которая должна быть проделана для любого существующего try / catch.
Вопрос не в том, есть ли это, а в том, ПРИНАДЛЕЖЕН ли он. Если мне нужно поймать исключение, мне нужно это сделать. Никаких споров по поводу производительности.