큰 슬라이스를 작은 청크로 균등하게 분배하는 방법을 결정하는 것은 Go에서 대규모 데이터세트를 작업할 때 일반적인 작업일 수 있습니다. 이 기사에서는 200만 개가 넘는 문자열로 조각을 청크하여 균일하게 배포하는 솔루션을 살펴봅니다.
원래 접근 방식에서는 각 청크의 시작 및 끝 인덱스를 결정하고 지정된 범위를 새 조각에 복사하는 작업이 포함되었습니다. 그러나 이 솔루션을 사용하면 첫 번째 청크가 여러 번 복사되어 효과가 없게 됩니다.
이 문제를 해결하려면 새 조각을 생성하지 않는 것이 더 효율적입니다. 대신 관련 로그 조각을 분할된 조각에 직접 추가하세요. 이 접근 방식은 불필요한 중복 없이 균일한 배포를 보장합니다.
chunkSize := (len(logs) + numCPU - 1) / numCPU for i := 0; i < len(logs); i += chunkSize { end := i + chunkSize if end > len(logs) { end = len(logs) } divided = append(divided, logs[i:end]) }
이 업데이트된 솔루션은 슬라이스를 균등하게 분산된 작은 슬라이스로 효율적으로 청크하여 최적의 성능을 위해 총 문자열 및 CPU 코어 수를 수용합니다.
위 내용은 병렬 처리를 위해 수백만 개의 문자열이 포함된 대형 Go 슬라이스를 효율적으로 청크하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!