해시 배열을 반복하는 데 얼마나 오래 걸릴지를 결정했습니다. 아래 코드는 다음과 같습니다.Rubinius와 JRuby는 어떻게 이렇게 느릴 수 있습니까?
pairs = [{name: "firstname", value: "string"},{name: "lastname", value: "string"},{name: "country", value: "string"},{name: "city", value: "string"},{name: "state", value: "string"},{name: "company", value: "string"},{name: "year", value: "string"},{name: "political_affiliation", value: "string"},{name: "social_security_number", value: "string"}] * 1000
blank = {}
start = Time.now
pairs.each do |pair|
blank[pair[:name]] = pair[:value]
end
p Time.now - start
시간은 루프 앞의 현재 시간부터 루프 이후의 현재 시간을 뺍니다.
다음0.001962017
그것이 Rubinius 2.2.6에 걸린 시간입니다 :
0.022598
이 코드의 수학에 따라 계산이 YARV 2.1.1에 걸린 시간이었다
그리고 JRuby를이 1.7.12
0.022317
기발한 Rubinius와 JRuby를가 YARV을 통해 성능 이점이있다. 같은 기본 작업을 수행하는 데 약 12 배의 시간이 걸리는 이유는 무엇입니까? 정상입니까, 아니면 부적절하게 구성된 것이 있습니까?
환경을 시작하는 것을 포함하여 시간을합니까? – MxyL
코드로 들어가서 어느 통역사의 환경이 시작될 지 이해하지 못한다면 어떻게 보이지 않습니다. 코드에서 시간은 현재 시간에서 루프 앞에 Time.now를 빼는 방법으로 계산됩니다. 나는 이것이 이것을 테스트 할 수있는 충분한 방법이라고 생각했다. – Ravenstine
[benchmark/ips] (https://github.com/evanphx/benchmark-ips)를 사용하여 측정을 다시 시도 하시겠습니까? 어쩌면 Java/rbx VM은 워밍업에 더 오랜 시간이 걸릴 것입니다 ... – DMKE