this question과 같이 해시를 초기화하고 일부 벤치 마크를 실행했습니다.해시 키를 반복하는 가장 빠른 방법
Benchmark.measure { a = h.keys }
#=> 0.010000 0.000000 0.010000 ( 0.019832)
Benchmark.measure { a.each { |k| } }
#=> 0.060000 0.000000 0.060000 ( 0.057262)
Benchmark.measure { h.each { |k, v| } }
#=> 0.320000 0.000000 0.320000 ( 0.319768)
Benchmark.measure { h.each_key { |k| } }
#=> 0.310000 0.000000 0.310000 ( 0.312656)
Benchmark.measure { h.each_pair { |k, v| } }
#=> 0.330000 0.000000 0.330000 ( 0.331452)
내가 키의 배열로 해시를 돌리면 느리게 될 것이라고 생각하지만 그렇지, 그리고 each_key
는 each
과 비슷한 성능을 가지고있다. 왜 이런거야? 가장 좋은 방법은 무엇입니까?
가장 좋은 방법은 무엇입니까? 블록에 실제 코드가 있으면 병목 현상이 발생하지 않으므로 걱정하지 않아도됩니다. –
'a.each {| k | }'는 나머지와 매우 다른 것을합니다 : 키는 반환하지 않지만 키 - 값 쌍은 반환합니다. – Amadan
내 대답은 당신이 찾고 있던 것이 었나요? – daremkd