000f6f3a69898e12d9e60898dd8095336f63dddc
multithread_experiments
Результаты на Windows
Измерения производительности проводились с -O3 оптимизацией.
Эксперименты с мьютексами в одном потоке
Наибольшие накладные расходы на синхронизацию несет PIMutex проигрывающий остальным способам в ~50-100 раз. Остальные результаты соизмеримы, при этом вариант stdAtomic в
эксперименте использует менее строгие правила защиты кода и в реальных задачах применим не всегда.
without synchronization: 1.487 ms
piMutex: 959.774 ms
piConditionLock: 15.873 ms
stdMutex: 13.414 ms
stdAtomic: 6.448 ms
Эксперименты с мьютексами в нескольких потоках
Как и в однопоточном тесте, PIMutex оказывается самым медленным, проигрывая остальным механизмам синхронизации в
~18-120 раз. При этом производительностьPIConditionLock начинает заметно снижаться по сравнению с однопоточным
тестом, отставая в ~4 раза от std::mutex.
piMutex: 3237.55 ms
piConditionLock: 179.799 ms
stdMutex: 25.5425 ms
stdAtomic: 16.6967 ms
Description
Languages
C++
100%