Выполнение “возврата” из блока Попытки

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

Но что относительно C#? Существует ли хит производительности для возврата преждевременно из блока попытки, ли через оператор возврата или оператор завершения?

5
задан Brent Arias 12 May 2010 в 05:41
поделиться

3 ответа

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

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

7
ответ дан 14 December 2019 в 01:03
поделиться

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

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

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

3
ответ дан 14 December 2019 в 01:03
поделиться

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

Вопрос не в том, есть ли это, а в том, ПРИНАДЛЕЖЕН ли он. Если мне нужно поймать исключение, мне нужно это сделать. Никаких споров по поводу производительности.

-1
ответ дан 14 December 2019 в 01:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: