我在这里遇到了一个非常常见的重构情况,在浏览了一些博客之后,我仍然没有得到任何令人满意的评论;所以在这里问一个问题。
h = {
a: 'a',
b: 'b'
}
new_hash = {}
new_hash[:a] = h[:a].upcase if h[:a].present?
据我的朋友说,可以通过以下方式重构此代码以提高性能。
a = h[:a]
new_hash[:a] = a.upcase if a.present?
乍一看,它看起来有点优化。但它会产生很大的不同还是过度优化?应该首选哪种风格?
寻求专家建议:)
更新Benchmark n = 1000
user system total real
hash lookup 0.000000 0.000000 0.000000 ( 0.000014)
new var 0.000000 0.000000 0.000000 ( 0.000005)
AND op 0.000000 0.000000 0.000000 ( 0.000018)
try 0.000000 0.000000 0.000000 ( 0.000046)
Memory Benchmark
使用 gem更新benchmark-memory
Calculating -------------------------------------
hash lookup 40.000 memsize ( 40.000 retained)
1.000 objects ( 1.000 retained)
1.000 strings ( 1.000 retained)
new var 0.000 memsize ( 0.000 retained)
0.000 objects ( 0.000 retained)
0.000 strings ( 0.000 retained)
AND op 40.000 memsize ( 40.000 retained)
1.000 objects ( 1.000 retained)
1.000 strings ( 1.000 retained)
try 200.000 memsize ( 40.000 retained)
5.000 objects ( 1.000 retained)
1.000 strings ( 1.000 retained)