Je travaille selon le principe du partage de la programmation simultanée. Essentiellement, tous mes threads de travail ont des copies immuables en lecture seule du même état qui n'est jamais partagé entre eux ( même par référence ). D'une manière générale, cela a très bien fonctionné.
Maintenant, quelqu'un a introduit un cache singleton sans verrouillage ( par exemple un dictionnaire statique ) auquel tous les threads accèdent simultanément. Étant donné que le dictionnaire n'est jamais modifié après le démarrage, il n'y a pas de verrous. Il n'y a eu aucun problème de sécurité des threads, mais il y a maintenant une dégradation des performances.
La question est ... puisqu'il n'y a pas de verrous pourquoi l'introduction de ce singleton crée-t-elle un succès de performance? Que se passe-t-il exactement sous les couvertures qui pourrait expliquer cela?
Pour confirmer, l'accès à ce nouveau singleton est le seul changement et je peux le recréer de manière fiable simplement en commentant l'appel au cache.