Почему это снижение производительности при сохранении переменной значения в цикле диапазона в 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?

0 ответов

Другие вопросы по тегам