У меня очень распространенная ситуация с рефакторингом, и после просмотра нескольких блогов я так и не получил удовлетворительного комментария по этому поводу; поэтому задаю вопрос здесь.
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
с использованием драгоценного камня 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)