diff options
author | Dmitry Vyukov <dvyukov@google.com> | 2014-03-24 18:54:20 +0000 |
---|---|---|
committer | Dmitry Vyukov <dvyukov@google.com> | 2014-03-24 18:54:20 +0000 |
commit | a8db7580b56915d073b0f7216842452275be0ed2 (patch) | |
tree | b1b3453d8100cbab9477b1302839ebf4b07308c4 /lib/tsan/rtl/tsan_stat.h | |
parent | f8e591ece02b709b932d8c01b7d4be957b1e03dc (diff) | |
download | compiler-rt-a8db7580b56915d073b0f7216842452275be0ed2.tar.gz |
tsan: optimize vector clock operations
Make vector clock operations O(1) for several important classes of use cases.
See comments for details.
Below are stats from a large server app, 77% of all clock operations are handled as O(1).
Clock acquire : 25983645
empty clock : 6288080
fast from release-store : 14917504
contains my tid : 4515743
repeated (fast) : 2141428
full (slow) : 2636633
acquired something : 1426863
Clock release : 2544216
resize : 6241
fast1 : 197693
fast2 : 1016293
fast3 : 2007
full (slow) : 1797488
was acquired : 709227
clear tail : 1
last overflow : 0
Clock release store : 3446946
resize : 200516
fast : 469265
slow : 2977681
clear tail : 0
Clock acquire-release : 820028
git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@204656 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/tsan/rtl/tsan_stat.h')
-rw-r--r-- | lib/tsan/rtl/tsan_stat.h | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/lib/tsan/rtl/tsan_stat.h b/lib/tsan/rtl/tsan_stat.h index 6453bda5f..22327d3b0 100644 --- a/lib/tsan/rtl/tsan_stat.h +++ b/lib/tsan/rtl/tsan_stat.h @@ -69,6 +69,33 @@ enum StatType { StatSyncAcquire, StatSyncRelease, + // Clocks - acquire. + StatClockAcquire, + StatClockAcquireEmpty, + StatClockAcquireFastRelease, + StatClockAcquireLarge, + StatClockAcquireRepeat, + StatClockAcquireFull, + StatClockAcquiredSomething, + // Clocks - release. + StatClockRelease, + StatClockReleaseResize, + StatClockReleaseFast1, + StatClockReleaseFast2, + StatClockReleaseFast3, + StatClockReleaseFull, + StatClockReleaseAcquired, + StatClockReleaseClearTail, + StatClockReleaseLastOverflow, + // Clocks - release store. + StatClockStore, + StatClockStoreResize, + StatClockStoreFast, + StatClockStoreFull, + StatClockStoreTail, + // Clocks - acquire-release. + StatClockAcquireRelease, + // Atomics. StatAtomic, StatAtomicLoad, |