Выполнение «возврата» из блока Try - PullRequest
5 голосов
/ 12 мая 2010

Обработка исключений в блоках Windows (по крайней мере, для C ++) приводит к снижению производительности, если вы преждевременно выходите из блока try (например, выполнение оператора return) так же, как если бы возникло исключение.

А как же C #? Есть ли падение производительности для преждевременного возврата из блока try, будь то через оператор return или оператор break?

Ответы [ 3 ]

7 голосов
/ 12 мая 2010

Если - это снижение производительности, то оно крошечное.Это, конечно, ничто , как , то же самое, что поймать исключение.(И даже это не так плохо, как думают многие.)

Насколько я знаю, производительность возврата из блока try ничтожна.Вероятность того, что оно будет значительным в вашем приложении, составляет по существу 0. Просто напишите наиболее читаемый код, который вы можете, а затем сравните / профилируйте свое приложение - это будет гораздо лучший способ получить хорошую производительность, чем пытаться угадать подобные вещи..

3 голосов
/ 12 мая 2010

Нет, штраф за преждевременный выход из блока try отсутствует.

Я рассчитал разницу между вызовом метода, который возвращается в середине блока try, и тем, который естественным образом выходит из блока try перед возвратом, и измеримой разницы нет.

Есть небольшие издержки для наличия блока try (около 0,000002 мс.), Но нет никаких дополнительных накладных расходов для выхода в середине.

0 голосов
/ 12 мая 2010

Вся обработка исключений влечет за собой небольшую потерю производительности - всегда есть дополнительная работа, которая должна быть сделана для любой существующей попытки.

Вопрос не в том, существует ли он, а в том, СООТВЕТСТВУЕТ ЛИ. Если мне нужно поймать исключение, мне нужно. Нет споров о производительности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...