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.