Je suis en train de developpez un pojet assez gros, et décide maintenant d'essayer de parallèliser certains traitements indépendants. Pour cela j'ai envie d'utiliser la libraire Thread de boost. J'ai donc procèdé à des petits programmes de test pour me mettre en jambe avec cette librairie.

Durant la vérification des performances de ces programmes, certaines valeurs m'amènent ici. Ces questions portent sur la rapidité d'execution de la librairie boost::thread, et en particuliers sur la création des threads.

Comme mes taches sont indépendantes, alors j'ai decidé de tester les boost::thread_group et d'un autre côté les boost::thread associés aux boost::barrier.

Pour charger le processeur j'ai codé une fonction. c'est simplement une boucle for de 0 à 1e6.

Mon programme de test fonctionne comme un jeu : update -> render -> display. Mon projet se situe uniquement dans l'update.
Le comportement est identique que j'utilise des boost::thread_group ou des boost::thread et boost::barrier.
Test 1 : dans l'update j'apelle 10 fois la fonction de charge d'affilé, multithreading désactivé, c'est 10 appels à la suite les uns des autres.
Test 2 : dans l'update je créé 10 thread qui lancent chacun une fois la fonction de charge, j'ai ainsi la fonction qui tourne en parallèle sur 10 thread, je join avant de continuer l'execution du reste de l'update.

Ce qui m'amène ici, sont les résultats. Je regarde le nombre de FPS, pour évaluer la vitesse de parcours de la boucle de simulation du jeu.
Je pocède un AMD Athlon XP 2600+ (donc mono-coeur), les résultats sont étranges, le programme en ST (SingleThread)[Test 1] tourne 3 fois plus vite que l'autre.
Sur l'ordinateur d'une autre personne Athlon XP 3200+ (je ne suis pas sur, mais on s'en fou), les résultats sont encore plus étrange car le programme ST tourne 5 fois plus vite que le MT.
Et sur un IntelCentino tout neuf, (dualcore) alors la rapidité d'execution est identique avec le programme MT et ST.

Mes questions sont donc les suivantes :
Pourquoi un tel écart entre MT et ST ?
Pourquoi sur le dualcore j'ai pas des meilleurs performances en MT qu'en ST ?
Le temps de création des threads semble grand, existe-il une loi empirique du nombre de thread à créer en parallèles, et ou une charge nominale à faire porter sur chaque thread ?

Merci de vos réponses constructives.