Ich habe nach dem Prinzip der gemeinsamen Programmierung gearbeitet. Grundsätzlich haben alle Worker-Threads unveränderliche Nur-Lese-Kopien desselben Status, die ( auch nach Verweis ) nie zwischen ihnen geteilt werden . Im Allgemeinen hat dies sehr gut funktioniert.
Jetzt hat jemand einen No-Lock-Singleton-Cache ( z. B. ein statisches Wörterbuch ) eingeführt, auf den alle Threads gleichzeitig zugreifen. Da das Wörterbuch nach dem Start nie geändert wird, gibt es keine Sperren. Es gab keine Thread-Sicherheitsprobleme, aber jetzt ist ein Leistungsabfall zu verzeichnen.
Die Frage ist ... da es keine Sperren gibt, warum sorgt die Einführung dieses Singleton für einen Performance-Hit? Was genau ist unter dem Deckmantel los, das dies erklären könnte?
Zur Bestätigung ist der Zugriff auf diesen neuen Singleton die einzige Änderung, und ich kann dies zuverlässig wiederherstellen, indem ich den Aufruf des Caches auskommentiere.