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.
Jawaban:
Masalahnya kompleks:
Beberapa sumber kompleksitas termasuk:
sumber
Gagasan Anda sangat menarik: tolok ukur kepatuhan yang dapat digunakan untuk menguji implementasi mutex.
Sayangnya, sejauh yang saya bisa lihat, tidak ada patokan kepatuhan yang dikenal luas untuk implementasi mutex. Jadi, saya kira Anda memiliki masalah yang sangat menarik dalam membuat proposal untuk tolok ukur kepatuhan tersebut.
Dan, karena Anda telah terlibat dalam pembuatan implementasi benchmark, Anda adalah orangnya.
Jika Anda memberi saya saran, mungkin Anda bisa memulai penelitian ini dengan standar POSIX untuk utas di satu sisi, dan beberapa studi literatur teoritis pemrosesan bersamaan, seperti CSP, atau Communicating Sequential Processes. Makalah semacam ini biasanya berkaitan dengan masalah konkuren klasik, seperti Filsuf Makan.
Implementasi dari mereka bisa menjadi bagian yang menarik dari tolok ukur kepatuhan Anda, saya kira.
sumber