루비의 예외 처리가 늦었나요?배.

4086 단어 전단 뒷면Ruby
예외 처리를 좋아하십니까!?
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 방법을 정의하고 호출한 경우 실행하려면 시간이 필요합니다.
예외 처리 중 창고 추적을 만드는 처리가 있기 때문에 분류된 처리가 증가하고 실행하는 데 시간이 많이 걸릴 수 있습니다.

좋은 웹페이지 즐겨찾기