Performances de Moving_avg_concurrent2
Moving_avg_concurrent2 n'évolue pas car les frais généraux liés à la création et à la gestion de plusieurs goroutines l'emportent sur les avantages du parallélisme. Les goroutines sont des threads légers, mais ils comportent néanmoins des frais généraux qui leur sont associés, tels que le coût de création et de planification de la goroutine, ainsi que le coût de communication entre les goroutines. Dans ce cas, la surcharge liée à la gestion des goroutines est supérieure à l'avantage de la parallélisation du calcul.
Performances de Moving_avg_concurrent3
Moving_avg_concurrent3 est plus lent que moving_avg_serial4 car il utilise un maître /worker paradigme, qui introduit une surcharge supplémentaire. Dans le paradigme maître/travailleur, le thread maître crée un pool de threads de travail, puis distribue le travail aux travailleurs. Les travailleurs effectuent ensuite le calcul et renvoient les résultats au thread maître. Cela introduit une surcharge supplémentaire car le thread maître doit créer et gérer les threads de travail, et les travailleurs doivent communiquer avec le thread maître pour recevoir le travail et renvoyer les résultats.
Conclusion
Dans ce cas, il n'est pas possible d'obtenir une amélioration significative des performances en parallélisant le calcul. Les frais généraux liés à la gestion des goroutines dépassent les avantages du parallélisme. Il est préférable d'utiliser une implémentation série de l'algorithme, telle que moving_avg_serial4.
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!