Seperti judulnya: Bagaimana Anda menguji dan membandingkan penerapan berbagai mutasi di c ++ dengan benar?
Pada dasarnya saya menulis std :: mutex seperti kelas saya sendiri untuk proyek yang berjalan pada inti 2, armv7 dengan tujuan untuk meminimalkan overhead dalam kasus yang tidak terbantahkan. Sekarang saya sedang mempertimbangkan untuk menggunakan mutex tersebut di lebih banyak tempat dan juga arsitektur yang berbeda, tetapi sebelum saya melakukan ini saya ingin memastikannya
- itu sebenarnya benar
- tidak ada kasus patologis yang kinerjanya jauh lebih buruk daripada std :: mutex standar.
Jelas, saya menulis beberapa tes unit dasar dan tolok ukur mikro dan semuanya tampak bekerja, tetapi dalam kode multi-ulir "tampaknya berfungsi" tidak memberi saya kenyamanan yang luar biasa.
- Jadi, apakah ada teknik analisis statis atau dinamis yang sudah ada?
- Apa perangkap umum saat menulis unit test untuk kelas mutex?
- Kasus tepi apa yang harus diwaspadai (berdasarkan kinerja)?
Saya hanya menggunakan tipe pustaka standar untuk implementasi, yang mencakup operasi load & store yang tidak konsisten secara berurutan pada atom. Namun, saya terutama tertarik pada implementasi saran agnostik, karena saya ingin menggunakan test harness yang sama untuk implementasi lainnya juga.