루비의 예외 처리가 늦었나요?배.
gem 등의 프로그램 라이브러리를 만들면 사용자와의 대화성 역할로 예외를 사용하기 때문에 찾아보니 예외가 무겁다는 등 정보가 발견돼 여기에 기록한다.
네다섯은 말하지 않고 코드로 측정해 봅시다.
측정 결과
if_pattern.rb
get_value = -> val { val.odd? ? val : nil}
def judge val
if val.nil?
else
end
end
require 'benchmark'
result = Benchmark.realtime do |b|
(1..100000).each do |i|
judge get_value.(i)
end
end
p "#{result}秒"
excaption_pattern.rb
get_value = -> val { val.odd? ? val : nil}
def judge val
if val.nil?
raise StandardExcaption
end
rescue
end
require 'benchmark'
result = Benchmark.realtime do |b|
(1..100000).each do |i|
judge get_value.(i)
end
end
p "#{result}秒"
결론
단순한if와 비교하면 실제 조작은 20배 정도 들었다.
물론 예외 학급도 있지만 조건의 차이로 예외를 함께 던지고 싶지 않다.
그리고 이번 예는 lambda를 사용해서 이 반을 get으로 만들었습니다.value 방법을 정의하고 호출한 경우 실행하려면 시간이 필요합니다.
예외 처리 중 창고 추적을 만드는 처리가 있기 때문에 분류된 처리가 증가하고 실행하는 데 시간이 많이 걸릴 수 있습니다.
Reference
이 문제에 관하여(루비의 예외 처리가 늦었나요?배.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kkyouhei/items/d33eae9284c4babbd287텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)