From cb03969eeda28284d89d90a00c75cb80fd113f58 Mon Sep 17 00:00:00 2001 From: Stepan Fomenko Date: Fri, 10 Jul 2020 17:09:49 +0300 Subject: [PATCH] Linux experiments report --- can | 2 +- readme.md | 34 ++++++++++++++++++++++++++++++++-- 2 files changed, 33 insertions(+), 3 deletions(-) diff --git a/can b/can index 8e8151b..6807666 160000 --- a/can +++ b/can @@ -1 +1 @@ -Subproject commit 8e8151b9e891d30c75da8bb1561a20f8d2591296 +Subproject commit 6807666d0bc9c4fba4d6bf0ab1e00e40cf86a439 diff --git a/readme.md b/readme.md index 059ca32..dc0571a 100644 --- a/readme.md +++ b/readme.md @@ -6,8 +6,9 @@ ### Эксперименты с мьютексами в одном потоке -Наибольшие накладные расходы на синхронизацию несет `PIMutex` проигрывающий остальным способам в `~50-100 раз`. Остальные результаты соизмеримы, при этом вариант `stdAtomic` в -эксперименте использует менее строгие правила защиты кода и в реальных задачах применим не всегда. +Наибольшие накладные расходы на синхронизацию несет `PIMutex` проигрывающий остальным способам в `~50-100 раз`. +Остальные результаты соизмеримы, при этом вариант `std::atomic` в эксперименте использует менее строгие правила защиты +кода и в реальных задачах применим не всегда. ```cmd without synchronization: 1.487 ms @@ -28,4 +29,33 @@ piMutex: 3237.55 ms piConditionLock: 179.799 ms stdMutex: 25.5425 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 ``` \ No newline at end of file