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!