Maison >développement back-end >Golang >Comment puis-je fragmenter efficacement une grande tranche Go avec des millions de chaînes pour un traitement parallèle ?

Comment puis-je fragmenter efficacement une grande tranche Go avec des millions de chaînes pour un traitement parallèle ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-24 01:49:10772parcourir

How Can I Efficiently Chunk a Large Go Slice with Millions of Strings for Parallel Processing?

Slice Chunking dans Go

Déterminer comment répartir uniformément une grande tranche en morceaux plus petits peut être une tâche courante lorsque vous travaillez avec de grands ensembles de données dans Go. Cet article explore une solution pour découper une tranche avec plus de 2 millions de chaînes, garantissant une distribution uniforme.

L'approche originale impliquait de déterminer les indices de début et de fin de chaque morceau et de copier la plage spécifiée dans une nouvelle tranche. Cependant, cette solution entraînait la copie répétée du premier morceau, le rendant inefficace.

Pour résoudre ce problème, il est plus efficace d'éviter de créer de nouvelles tranches. Au lieu de cela, ajoutez la tranche de journaux appropriée directement à la tranche divisée. Cette approche garantit une distribution uniforme sans duplication inutile.

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 solution mise à jour divisera efficacement la tranche en tranches plus petites uniformément réparties, prenant en charge le nombre total de chaînes et de cœurs de processeur pour des performances optimales.

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