Maison >développement back-end >Golang >Comment puis-je fragmenter efficacement une grande tranche de chaînes en Go ?

Comment puis-je fragmenter efficacement une grande tranche de chaînes en Go ?

DDD
DDDoriginal
2024-12-24 17:13:14957parcourir

How Can I Efficiently Chunk a Large Slice of Strings in Go?

Slice Chunking in Go

Vous souhaitez diviser une tranche d'environ 2,1 millions de chaînes en morceaux uniformément répartis. Le segment de code fourni utilise une technique qui duplique le premier morceau au lieu de distribuer les chaînes uniformément.

La solution réside dans l'ajout de tranches de journaux à la tranche divisée au lieu de créer de nouvelles tranches. En calculant la taille des morceaux en fonction du nombre de processeurs et de la longueur des tranches, les journaux peuvent être répartis uniformément sur les morceaux.

Le code modifié :

var divided [][]string

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])
}

Cette approche garantit que les chaînes sont répartis aussi uniformément que possible entre les morceaux, maximisant les performances et l'utilisation des ressources système.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn