Запустив 7 ідентичних бенчмарків поспіль на Apple M1, щоб порівняти механізми синхронізації в C++. Результати? Різниці практично немає. 📊 Результати 7 тестів:
Тест #1: lock_guard 🏆 (35.61s) | scoped_lock +0.67% | unique_lock +1.51%
Тест #2: unique_lock 🏆 (37.58s) | lock_guard +0.14% | scoped_lock +1.09%
Тест #3: unique_lock 🏆 (35.87s) | lock_guard +0.28% | scoped_lock +0.30%
Тест #4: lock_guard 🏆 (35.16s) | scoped_lock +0.46% | unique_lock +0.86%
Тест #5: scoped_lock 🏆 (35.04s) | lock_guard +0.13% | unique_lock +1.03%
Тест #6: lock_guard 🏆 (35.30s) | unique_lock +0.44% | scoped_lock +6.00%*
Тест #7: lock_guard 🏆 (35.17s) | unique_lock +0.44% | scoped_lock +0.74%
*одноразовий викид через системні процеси
Середня різниця між реалізаціями: ~0.5-1% - це статистична похибка, а не реальна різниця у продуктивності.
Кожен з них вигравав у різних запусках. Це означає одне: компілятор генерує майже ідентичний машинний код для всіх трьох варіантів у цьому сценарії.
🎯 Що реально має значення:
❌ Не важливо: який lock використовувати (різниця <1%)
✅ Важливо: мінімізувати час у critical section!