>백엔드 개발 >Golang >Go에서 효율적으로 슬라이스를 청크하는 방법은 무엇입니까?

Go에서 효율적으로 슬라이스를 청크하는 방법은 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2024-12-28 10:10:11464검색

How to Efficiently Chunk a Slice in Go?

Go에서 슬라이스 청킹

지금까지 접하셨듯이 Go에서 슬라이스 청킹은 다음 단계를 통해 달성할 수 있습니다.

  1. 청크 크기 결정: 원하는 크기를 계산합니다. 원본 슬라이스의 길이를 사용하려는 CPU 수로 나누어 청크 크기를 계산합니다.
  2. 슬라이스 반복: for 루프를 사용하여 원본 슬라이스를 반복합니다. 인덱스 0.
  3. 새 슬라이스 생성: 각 청크에 대해 새 슬라이스를 생성하여 청크를 저장합니다. 요소.
  4. 청크 추가: 청크 요소를 새 슬라이스에 추가합니다.
  5. 분할된 슬라이스에 추가: 새로 생성된 슬라이스를 분할된 슬라이스는 최종 청크 슬라이스를 보관하게 됩니다.

업데이트된 내용은 다음과 같습니다. 귀하의 코드를 기반으로 한 예:

var divided [][]string

numCPU := runtime.NumCPU()
chunkSize := (len(logs) + numCPU - 1) / numCPU

for i := 0; i < len(logs); i += chunkSize {
    end := i + chunkSize

    if end > len(logs) {
        end = len(logs)
    }

    temp := logs[i:end]  // Create a new slice for the chunk
    divided = append(divided, temp)  // Append the chunk to the divided slice
}

위 내용은 Go에서 효율적으로 슬라이스를 청크하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.