Bonjour,

J'ai une application que j'ai voulu optimiser avec des threads.
En gros j'ai un certain nombre d'objet, et j'ai une fonction qui effectue un traitement d'environ 10secondes sur chacun de ces objets.

J'ai décidé de threader le tout et donc mes objets sont dans une pile et j'ai N thread qui viennent faire un pop() sur la pile et font leur petite affaire dans leur coin.

Au début je pensais qu'idéalement il fallait avoir autant de threads que de cœurs, pas un de plus, pas un de moins. J'ai donc mis 4 threads, j'ai pas eu de vrai gains de perf. J'ai tenté 2 et 8 threads, toujours pas de vrai gain.

J'ai donc pété mon cable et j'ai mis 40 threads... et là, magie, temps de traitement divisé par 4 !
J'ai donc encore plus pété mon câble et j'en ai mis 100... mais là le tas n'a pas aimé .

Ma question est donc simple : comment qu'on calcule le nombre de threads optimal qu'il nous faut ?

Dans mon cas, les thread font quelques requêtes HTTP, donc j'imagine que c'est ça qui explique qu'il soit plus rentable d'avoir plus de threads que de coeurs (le temps que la requête fasse l'aller retour, d'autres threads peuvent bosser)... m'enfin c'est qu'une supposition et je suis pas vraiment sûr de ce que je raconte.

Voilà voilà, donc please éclairez my lanterne

Thx !