Sobes.tech
Junior — Middle

Czy można osiągnąć szybszą iterację po liście w porównaniu do Map w językach programowania?

sobes.tech AI

Odpowiedź od AI

Tak, iteracja po slice w Go jest zwykle szybsza niż po Mapie, ponieważ slice to sekwencyjna tablica elementów, podczas gdy Map to tabela haszująca z bardziej skomplikowaną strukturą.

Iteracja po slice odbywa się kolejno w pamięci, co jest dobrze cache'owane przez procesor, podczas gdy Map wymaga obliczania hashy i może mieć dowolny porządek iteracji.

Przykład iteracji po slice:

slice := []int{1, 2, 3, 4, 5}
for _, v := range slice {
    fmt.Println(v)
}

Iteracja po Mapie:

m := map[string]int{"a":1, "b":2}
for k, v := range m {
    fmt.Println(k, v)
}

Dlatego, jeśli ważna jest szybkość i kolejność, lepiej używać slice'ów.