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
Libérer: 2024-12-24 17:13:14
original
958 Les gens l'ont consulté

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])
}
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal