Вопрос по c# – Использование исключения в C #. Влияет ли это на производительность?

5

В основном, вопрос заключается в следующем: Влияет ли исключения в C # на производительность? Лучше избегать исключения исключить? Если я генерирую исключение в моем коде, это влияет на производительность?

Извините за глупости самого вопроса

Ваш Ответ

8   ответов
0

почему они должны использоваться только вexceptional случаев.

2

То, что большинство других людей сказали, плюс: Не используйте исключения как часть процесса программирования. Другими словами, не выбрасывайте исключение для чего-то вроде:account.withdrawalAmount > account.balance, Это бизнес-кейс.

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

Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
3

запуск кода через оператор try / catch не влияет на производительность вообще. Единственное снижение производительности происходит, если выбрасывается исключение ... потому что тогда среда выполнения должна разматывать стек и собирать другую информацию для заполнения объекта исключения.

0

Это не глупо, просто я видел это где-то еще и на SO.

Исключения случаются хорошо, когда вещи действительно исключительные. Большую часть времени вы перезапускаете исключение, n (возможно, после регистрации), когда шансов на восстановление не так много. Так что вас не должно беспокоить нормальный ход выполнения программы.

10

Если вы беспокоитесь об эффективности исключений, вы их неправильно используете.

Но да, исключения влияют на производительность.

Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded 0100110010101
4

Вызов исключения является дорогой операцией в C # (по сравнению с другими операциями в C #), но этого недостаточно, чтобы я этого не делал.

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

0

Исключения, как следует из названия, предназначены быть исключительными. Следовательно, вы не можете ожидать, что они были важной целью для оптимизации. Чаще всего они не работают хорошо, поскольку у них есть другие приоритеты, такие как сбор подробной информации о том, что пошло не так.

3

Рекомендации Microsoft по разработке библиотек классов являются очень ценным ресурсом. Вот соответствующая статья:

Исключения и производительность

Я также рекомендовал быРуководство по проектированию рамок книга от Microsoft Press. Он содержит много информации по ссылке «Руководство по проектированию», но ее комментируют люди с РС и сам Андерс Хейлсберг. Это дает глубокое понимание "почему" и & quot; как & quot; в порядке вещей.

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