Только в 5 раз быстрее? Вы меня удивляете. Предположительно, это означает, что в ваших выборочных данных мало нулей.
Исключения дороже, чем простые сравнения. При правильном использовании (т. Е. Для исключительных обстоятельств) они не имеют тенденций к значительному снижению производительности - потому что, если вы создаете достаточно исключений, чтобы это оказало большое влияние, скорее всего, ваша служба уже заблокирована. Это вызывает проблему, когда вы используете исключения, чтобы попытаться игнорировать условия, которые вы могли бы очень легко протестировать для начала - как этот.
Одна вещь, которую следует отметить относительно стоимости исключений: они стоят намного больше в отладчике, чем при работе без подключенного отладчика; в частности, первое исключение, которое должно загружать кучу ресурсов, может занимать секунды, а не микро / миллисекунды. Если вы собираетесь тестировать код, очень важно, чтобы вы не делали это в отладчике - это верно в целом, но особенно для исключений.