Go에서 맵 값 슬라이스 검색 최적화
Go에서는 맵에서 값 슬라이스를 얻는 것이 간단해 보일 수 있지만, 표시된 수동 반복 및 할당보다 더 효율적인 접근 방식 아래?
package main import ( "fmt" ) func main() { m := make(map[int]string) m[1] = "a" m[2] = "b" m[3] = "c" m[4] = "d" // Manual iteration with pre-allocated slice v := make([]string, len(m), len(m)) idx := 0 for _, value := range m { v[idx] = value idx++ } fmt.Println(v) }
내장된 지도 기능 및 외부 기능
제공된 예는 지도의 값을 슬라이스로 변환하는 표준 방법입니다. Go는 이 작업을 위해 특별히 설계된 내장 기능을 제공하지 않습니다. 외부 패키지는 추가 기능을 제공할 수 있지만 명시적인 가져오기가 필요하며 수동 접근 방식만큼 효율적이지 않을 수 있습니다.
Append를 사용한 대체 구현
수동 반복 접근 방식은 효율적이기 때문에 미묘한 최적화가 가능합니다. 특정 인덱스에 값을 할당하는 대신 추가 기능을 사용하여 슬라이스를 동적으로 확장할 수 있습니다.
v := make([]string, 0, len(m)) for _, value := range m { v = append(v, value) }
이 수정된 코드에서 v 슬라이스의 용량은 맵 길이 m으로 초기화됩니다. 이렇게 하면 루프 중에 추가가 새 메모리를 할당할 필요가 없으므로 실행 속도가 약간 빨라집니다.
결론
수동 반복 및 할당 접근 방식이 여전히 가장 효율적입니다. Go에서 맵의 값을 슬라이스로 변환하는 방법입니다. 그러나 추가를 사용한 대체 구현은 불필요한 메모리 할당을 줄여 약간의 성능 향상을 제공합니다.
위 내용은 Go에서 지도 값 조각을 검색하는 더 효율적인 방법이 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!