Linux experiments report
This commit is contained in:
2
can
2
can
Submodule can updated: 8e8151b9e8...6807666d0b
34
readme.md
34
readme.md
@@ -6,8 +6,9 @@
|
|||||||
|
|
||||||
### Эксперименты с мьютексами в одном потоке
|
### Эксперименты с мьютексами в одном потоке
|
||||||
|
|
||||||
Наибольшие накладные расходы на синхронизацию несет `PIMutex` проигрывающий остальным способам в `~50-100 раз`. Остальные результаты соизмеримы, при этом вариант `stdAtomic` в
|
Наибольшие накладные расходы на синхронизацию несет `PIMutex` проигрывающий остальным способам в `~50-100 раз`.
|
||||||
эксперименте использует менее строгие правила защиты кода и в реальных задачах применим не всегда.
|
Остальные результаты соизмеримы, при этом вариант `std::atomic` в эксперименте использует менее строгие правила защиты
|
||||||
|
кода и в реальных задачах применим не всегда.
|
||||||
|
|
||||||
```cmd
|
```cmd
|
||||||
without synchronization: 1.487 ms
|
without synchronization: 1.487 ms
|
||||||
@@ -28,4 +29,33 @@ piMutex: 3237.55 ms
|
|||||||
piConditionLock: 179.799 ms
|
piConditionLock: 179.799 ms
|
||||||
stdMutex: 25.5425 ms
|
stdMutex: 25.5425 ms
|
||||||
stdAtomic: 16.6967 ms
|
stdAtomic: 16.6967 ms
|
||||||
|
```
|
||||||
|
|
||||||
|
## Результаты на Linux
|
||||||
|
|
||||||
|
Измерения производительности проводились с `-O3` оптимизацией.
|
||||||
|
|
||||||
|
### Эксперименты с мьютексами в одном потоке
|
||||||
|
|
||||||
|
Средства синхронизации показали соизмеримый результат. `std::atomic` с менее строгими правилами синхронизации показал
|
||||||
|
ожидаемо лучший результат.
|
||||||
|
|
||||||
|
```cmd
|
||||||
|
without synchronization: 1.59 ms
|
||||||
|
piMutex: 16.41 ms
|
||||||
|
piConditionLock: 16.622 ms
|
||||||
|
stdMutex: 15.367 ms
|
||||||
|
stdAtomic: 6.82 ms
|
||||||
|
```
|
||||||
|
|
||||||
|
### Эксперименты с мьютексами в нескольких потоках
|
||||||
|
|
||||||
|
Все средства синхронизации, за исключением `std::atomic` показали соизмеримый результат. В эксперименте `std::atomic`
|
||||||
|
показал лучший в `~5 раз` результат, а значит может иметь смысл варьировать строгость правил синхронизации.
|
||||||
|
|
||||||
|
```cmd
|
||||||
|
piMutex: 84.2275 ms
|
||||||
|
piConditionLock: 89.8308 ms
|
||||||
|
stdMutex: 77.0943 ms
|
||||||
|
stdAtomic: 13.029 ms
|
||||||
```
|
```
|
||||||
Reference in New Issue
Block a user