Saya telah bekerja di bawah prinsip share-nothing pemrograman bersamaan. Pada dasarnya, semua utas pekerja saya memiliki salinan read-only dari negara yang sama yang tidak pernah dibagi di antara mereka ( bahkan dengan referensi ). Secara umum, ini telah bekerja dengan sangat baik.
Sekarang, seseorang telah memperkenalkan cache singleton tanpa kunci ( mis. Kamus statis ) yang diakses semua utas secara bersamaan. Karena kamus tidak pernah diubah setelah startup tidak ada kunci. Belum ada masalah Thread-Safety, tapi sekarang ada penurunan kinerja.
Pertanyaannya adalah ... karena tidak ada kunci mengapa pengenalan singleton ini membuat hit kinerja? Apa sebenarnya yang terjadi di balik selimut yang bisa menjelaskan hal ini?
Untuk mengonfirmasi, mengakses singleton baru ini adalah satu-satunya perubahan dan saya dapat dengan andal menciptakan ini hanya dengan mengomentari panggilan ke cache.