Cette opération est connue sous le nom de «super-accélération linéaire» et peut se produire pour diverses raisons, bien que la cause la plus fréquente soit probablement le comportement du cache. Habituellement, lorsque l'accélération superlinear se produit, c'est un indice que vous pourriez rendre la version séquentielle plus efficace. Par exemple, supposons que vous ayez un processeur où certains cœurs partagent un cache L2 (une architecture courante de nos jours), et supposons que votre algorithme effectue plusieurs parcours d'une grande structure de données. Si vous effectuez les traversées en séquence, alors chaque traversée devra remettre les données dans le cache L2, alors que si vous effectuez les traversées en parallèle, vous pouvez éviter un grand nombre de traversées, tant que les traversées se déroulent dans étape (se désynchroniser est une bonne source de performance imprévisible ici). Pour rendre la vérification séquentielle plus efficace, vous pouvez entrelacer les traversées, améliorant ainsi la localité.
Votre application est-elle normalement liée à l'UC ou liée à l'E/S? S'il est lié à l'E/S, il peut être capable d'échanger des processus en attente d'E/S pour d'autres, ce qui permet d'économiser plus de temps que la normale. – Amber