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!