Mutex experiments
This commit is contained in:
31
readme.md
Normal file
31
readme.md
Normal file
@@ -0,0 +1,31 @@
|
||||
# multithread_experiments
|
||||
|
||||
## Результаты на Windows
|
||||
|
||||
Измерения производительности проводились с `-O3` оптимизацией.
|
||||
|
||||
### Эксперименты с мьютексами в одном потоке
|
||||
|
||||
Наибольшие накладные расходы на синхронизацию несет `PIMutex` проигрывающий остальным способам в `~50-100 раз`. Остальные результаты соизмеримы, при этом вариант `stdAtomic` в
|
||||
эксперименте использует менее строгие правила защиты кода и в реальных задачах применим не всегда.
|
||||
|
||||
```cmd
|
||||
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`.
|
||||
|
||||
```cmd
|
||||
piMutex: 3237.55 ms
|
||||
piConditionLock: 179.799 ms
|
||||
stdMutex: 25.5425 ms
|
||||
stdAtomic: 16.6967 ms
|
||||
```
|
||||
Reference in New Issue
Block a user