Почему это снижение производительности при сохранении переменной значения в цикле диапазона в go/golang?
Я как бы новичок в языке. Решая leetcode: проблему двух сумм, я заметил, что если я пишу для цикла диапазона таким образом, он говорит на 97% быстрее, чем другие материалы.
func twoSum(nums []int, target int) []int {
hMap := map[int]int{}
for i := range nums {
complement := target - nums[i]
_, ok := hMap[complement]
if ok == true {
return []int{i, hMap[complement]}
}
hMap[nums[i]] = i
}
return nil
}
Но с тем же алгоритмом и логикой, если я напишу такой цикл для диапазона, он скажет, что на 48% быстрее, чем другие представления.
func twoSum(nums []int, target int) []int {
hMap := map[int]int{}
for i , val := range nums {
complement := target - val
_, ok := hMap[complement]
if ok == true {
return []int{i, hMap[complement]}
}
hMap[val] = i
}
return nil
}
Почему это снижение производительности при сохранении переменной значения в цикле диапазона в go / golang?