Насколько трудоемким является использование try
/catch
в JavaScript? У меня есть приложение, и я использую его в функции, которая называется несколько сотен раз. Теперь я боюсь, что оператор try
/catch
занимает слишком много времени, и приложение займет гораздо больше времени, чем без него.
Использование try-catch в JavaScript
Ответ 1
В jsPref есть несколько хороших тестов:
- http://jsperf.com/try-catch-performance-overhead
- http://jsperf.com/try-catch-versus-massive-if
- http://jsperf.com/try-catch-002
Заключение: в главном браузере от нуля до минимальных различий.
Ответ 2
Следует обратить внимание на следующее:
"Первое правило оптимизации программы: не делайте этого. Второе правило оптимизации программы (только для экспертов!): Не делайте этого еще". - Майкл А. Джексон
Я потратил время на оптимизацию разделов кода, которые мало влияли на производительность. Убедитесь, что вы знаете, что медленно, запустив некоторые временные эксперименты.
Ответ 3
Предложение try
/catch
создает новую область в javascript, поэтому каждая переменная, которая должна поступать из родительской области, будет немного медленнее.
Накладные расходы не настолько велики, но слишком велики, чтобы полностью игнорировать ваши внутренние циклы.
Взгляните на это видео для более подробного объяснения: http://www.youtube.com/watch?v=mHtdZgou0qU
Ответ 4
В общем случае код, выполняемый внутри блока try
, является дорогостоящим. Но если вы вызываете блок try
порядка нескольких сотен раз, это, вероятно, не проблема. Если бы это было несколько сотен тысяч, вы можете подумать о своем дизайне.