Я решил посмотреть, сколько времени займет перебор массива хэшей. Ниже приведен код:
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
Время вычисляется путем вычитания текущего времени после цикла из текущего времени до цикла.
Именно столько времени требовалось для вычислений в YARV 2.1.1, согласно математике в коде:
0.001962017
Вот сколько времени ушло на Rubinius 2.2.6:
0.022598
И jRuby 1.7.12
0.022317
Предположительно Rubinius и jRuby имеют преимущества в производительности по сравнению с YARV. Почему выполнение одной и той же базовой операции занимает почти в 12 раз больше времени? Это нормально или у меня что-то не так настроено?