Comme toujours sans détails, cela dépend.
-vous des objets à partir du disque ou chargez les créer en mémoire? Si vous les chargez à partir du disque, c'est probablement lié à IO, donc l'augmentation du nombre de threads n'aidera probablement pas beaucoup.
Dans le commentaire que vous avez mentionné que vous chargez à partir d'une base de données. Je présume que lorsque vous utilisez des threads, vous faites N requêtes en même temps? Il pourrait être utile d'étudier la console de la base de données pour comprendre comment elle se comporte avec de nombreuses requêtes simultanées. D'autre part, si les objets sont créés à la suite d'un processus lié à la CPU (p.ex. calcul de pi), alors les chances augmentent le nombre de threads plus que le nombre de processeurs n'augmentera probablement pas les performances (et ronag souligne dans les commentaires vont probablement nuire à la performance en raison de l'augmentation context switching).
Y at-il de dépendance entre les objets? Cela affecterait à nouveau comment les choses se passent.
Typiquement, vous utilisez un pool de threads si vous avez une collection de tâches indépendantes que vous souhaitez exécuter avec une manière configurable de les exécuter. Il semble que l'utilisation d'un pool de threads serait un bon moyen d'exécuter beaucoup de benchmarks avec différents paramètres de threads. Vous pouvez également configurer le nombre de threads configurables, ce qui serait utile lors de l'exécution sur différentes architectures/systèmes.
Oui Je le chargement des objets de base de données –
Je voudrais simplement ajouter que la création de plus de threads que CPUs non seulement pas augmenter les performances, il sera probablement même diminuer les performances. – ronag
Oui les requêtes sont transmises simultanément à la base de données. Les requêtes sont affinées. Alors ai-je atteint la performance optimale? –