Cet exemple
P.s: p>
Pouvez-vous vérifier le code comme je ne fais pas d'E / S, et aucun autre processus ne fonctionne sur les machines (processus Windows normaux) P>
6 Réponses :
Cela pourrait être un nombre quelconque de choses. Un couple qui vient à l'esprit p>
Je suis sûr qu'il n'y a pas d'autres processus utilisent fortement des processeurs
Il reste encore une possibilité forte que l'administration du fil provoque la baisse des performances attendues.
Très probablement, il doit concurrencer les autres threads sur une structure de données ou un fichier, de sorte que vous n'obtenez pas une exécution parallèle à 100%. P>
Par exemple, si vous souhaitez exécuter un type de fonctionnement de téléchargement-webfage-de-website en parallèle à 4 voies sur un quad-core et que le serveur n'autorise que 1 téléchargement simultané de la même adresse IP à la fois, Vous n'obtiendrez pas de vitesse du tout. P>
En outre, il y a des frais généraux liés à la filature des threads et à les maintenir, de sorte que vous n'obtenez pas l'utilisation d'un noyau complet lorsque vous commencez à faire parallèlement, bien que ce ne soit probablement pas un gros facteur dans ce cas. P>
Parce qu'il y a d'autres facteurs à considérer. Like Memory et E / S Bande passante / Conférence, contexte de thread basculant sur le dessus de la tête, etc. P>
Globalement, de mon expérience de programmation parallèle, si vous obtenez une période écoulée de 65% de moins, c'est plutôt bon. P>
Le filetage a des frais généraux et tout ne peut toujours pas fonctionner en parallèle. P>
Beaucoup de bélier se touchent, les processeurs commenceront à se battre dans le bus.