X-Git-Url: http://plrg.eecs.uci.edu/git/?p=folly.git;a=blobdiff_plain;f=folly%2Ftest%2FSharedMutexTest.cpp;h=9e04edc76a0603c37c0475699c0cc4d890d2b287;hp=98df9d09cbde1fe0f7da6248d03511fcf6348e3f;hb=a130b23ab3fc1c0895c29f3d73597ea465f20bc3;hpb=7570fc58eb757feb6c852275f9573ba0fcbdfdc5 diff --git a/folly/test/SharedMutexTest.cpp b/folly/test/SharedMutexTest.cpp index 98df9d09..9e04edc7 100644 --- a/folly/test/SharedMutexTest.cpp +++ b/folly/test/SharedMutexTest.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2016 Facebook, Inc. + * Copyright 2017 Facebook, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -20,15 +20,14 @@ #include #include -#include #include #include #include #include #include -#include #include +#include #include using namespace folly; @@ -99,7 +98,7 @@ void runBasicHoldersTest() { EXPECT_FALSE(lock.try_lock_shared(token)); // move ownership to another write holder via assign operator - typename Lock::WriteHolder holder3; + typename Lock::WriteHolder holder3(nullptr); holder3 = std::move(holder2); EXPECT_FALSE(lock.try_lock()); EXPECT_FALSE(lock.try_lock_shared(token)); @@ -531,56 +530,56 @@ static void runContendedReaders(size_t numOps, } } -static void folly_rwspin_reads(uint numOps, +static void folly_rwspin_reads(uint32_t numOps, size_t numThreads, bool useSeparateLocks) { runContendedReaders( numOps, numThreads, useSeparateLocks); } -static void shmtx_wr_pri_reads(uint numOps, +static void shmtx_wr_pri_reads(uint32_t numOps, size_t numThreads, bool useSeparateLocks) { runContendedReaders( numOps, numThreads, useSeparateLocks); } -static void shmtx_w_bare_reads(uint numOps, +static void shmtx_w_bare_reads(uint32_t numOps, size_t numThreads, bool useSeparateLocks) { runContendedReaders( numOps, numThreads, useSeparateLocks); } -static void shmtx_rd_pri_reads(uint numOps, +static void shmtx_rd_pri_reads(uint32_t numOps, size_t numThreads, bool useSeparateLocks) { runContendedReaders( numOps, numThreads, useSeparateLocks); } -static void shmtx_r_bare_reads(uint numOps, +static void shmtx_r_bare_reads(uint32_t numOps, size_t numThreads, bool useSeparateLocks) { runContendedReaders( numOps, numThreads, useSeparateLocks); } -static void folly_ticket_reads(uint numOps, +static void folly_ticket_reads(uint32_t numOps, size_t numThreads, bool useSeparateLocks) { runContendedReaders( numOps, numThreads, useSeparateLocks); } -static void boost_shared_reads(uint numOps, +static void boost_shared_reads(uint32_t numOps, size_t numThreads, bool useSeparateLocks) { runContendedReaders( numOps, numThreads, useSeparateLocks); } -static void pthrd_rwlock_reads(uint numOps, +static void pthrd_rwlock_reads(uint32_t numOps, size_t numThreads, bool useSeparateLocks) { runContendedReaders( @@ -649,7 +648,7 @@ static void folly_rwspin(size_t numOps, numOps, numThreads, writeFraction, useSeparateLocks); } -static void shmtx_wr_pri(uint numOps, +static void shmtx_wr_pri(uint32_t numOps, size_t numThreads, double writeFraction, bool useSeparateLocks) { @@ -657,7 +656,7 @@ static void shmtx_wr_pri(uint numOps, numOps, numThreads, writeFraction, useSeparateLocks); } -static void shmtx_w_bare(uint numOps, +static void shmtx_w_bare(uint32_t numOps, size_t numThreads, double writeFraction, bool useSeparateLocks) { @@ -665,7 +664,7 @@ static void shmtx_w_bare(uint numOps, numOps, numThreads, writeFraction, useSeparateLocks); } -static void shmtx_rd_pri(uint numOps, +static void shmtx_rd_pri(uint32_t numOps, size_t numThreads, double writeFraction, bool useSeparateLocks) { @@ -673,7 +672,7 @@ static void shmtx_rd_pri(uint numOps, numOps, numThreads, writeFraction, useSeparateLocks); } -static void shmtx_r_bare(uint numOps, +static void shmtx_r_bare(uint32_t numOps, size_t numThreads, double writeFraction, bool useSeparateLocks) { @@ -1371,8 +1370,8 @@ BENCHMARK(single_thread_lock_unlock, iters) { } } -#define BENCH_BASE(args...) BENCHMARK_NAMED_PARAM(args) -#define BENCH_REL(args...) BENCHMARK_RELATIVE_NAMED_PARAM(args) +#define BENCH_BASE(...) FB_VA_GLUE(BENCHMARK_NAMED_PARAM, (__VA_ARGS__)) +#define BENCH_REL(...) FB_VA_GLUE(BENCHMARK_RELATIVE_NAMED_PARAM, (__VA_ARGS__)) // 100% reads. Best-case scenario for deferred locks. Lock is colocated // with read data, so inline lock takes cache miss every time but deferred @@ -1730,332 +1729,335 @@ BENCH_REL (pthrd_rwlock_ping_pong, burn1M, 1000, 1000000) // Comparison use folly::RWSpinLock as the baseline, with the // following row being the default SharedMutex (using *Holder or // Token-ful methods). +// +// Following results on 2-socket Intel(R) Xeon(R) CPU E5-2660 0 @ 2.20GHz +// // ============================================================================ -// folly/experimental/test/SharedMutexTest.cpp relative time/iter iters/s +// folly/test/SharedMutexTest.cpp relative time/iter iters/s // ============================================================================ -// single_thread_lock_shared_unlock_shared 22.78ns 43.89M -// single_thread_lock_unlock 26.01ns 38.45M +// single_thread_lock_shared_unlock_shared 25.17ns 39.74M +// single_thread_lock_unlock 25.88ns 38.64M // ---------------------------------------------------------------------------- // ---------------------------------------------------------------------------- -// folly_rwspin_reads(1thread) 15.09ns 66.25M -// shmtx_wr_pri_reads(1thread) 69.89% 21.60ns 46.30M -// shmtx_w_bare_reads(1thread) 58.25% 25.91ns 38.59M -// shmtx_rd_pri_reads(1thread) 72.50% 20.82ns 48.03M -// shmtx_r_bare_reads(1thread) 58.27% 25.91ns 38.60M -// folly_ticket_reads(1thread) 54.80% 27.55ns 36.30M -// boost_shared_reads(1thread) 10.88% 138.80ns 7.20M -// pthrd_rwlock_reads(1thread) 40.68% 37.11ns 26.95M +// folly_rwspin_reads(1thread) 15.16ns 65.95M +// shmtx_wr_pri_reads(1thread) 69.18% 21.92ns 45.63M +// shmtx_w_bare_reads(1thread) 56.07% 27.04ns 36.98M +// shmtx_rd_pri_reads(1thread) 69.06% 21.95ns 45.55M +// shmtx_r_bare_reads(1thread) 56.36% 26.90ns 37.17M +// folly_ticket_reads(1thread) 57.56% 26.34ns 37.96M +// boost_shared_reads(1thread) 10.55% 143.72ns 6.96M +// pthrd_rwlock_reads(1thread) 39.61% 38.28ns 26.12M // ---------------------------------------------------------------------------- -// folly_rwspin_reads(2thread) 92.63ns 10.80M -// shmtx_wr_pri_reads(2thread) 462.86% 20.01ns 49.97M -// shmtx_w_bare_reads(2thread) 430.53% 21.51ns 46.48M -// shmtx_rd_pri_reads(2thread) 487.13% 19.01ns 52.59M -// shmtx_r_bare_reads(2thread) 433.35% 21.37ns 46.79M -// folly_ticket_reads(2thread) 69.82% 132.67ns 7.54M -// boost_shared_reads(2thread) 36.66% 252.63ns 3.96M -// pthrd_rwlock_reads(2thread) 127.76% 72.50ns 13.79M +// folly_rwspin_reads(2thread) 45.05ns 22.20M +// shmtx_wr_pri_reads(2thread) 379.98% 11.86ns 84.34M +// shmtx_w_bare_reads(2thread) 319.27% 14.11ns 70.87M +// shmtx_rd_pri_reads(2thread) 385.59% 11.68ns 85.59M +// shmtx_r_bare_reads(2thread) 306.56% 14.70ns 68.04M +// folly_ticket_reads(2thread) 61.07% 73.78ns 13.55M +// boost_shared_reads(2thread) 13.54% 332.66ns 3.01M +// pthrd_rwlock_reads(2thread) 34.22% 131.65ns 7.60M // ---------------------------------------------------------------------------- -// folly_rwspin_reads(4thread) 97.45ns 10.26M -// shmtx_wr_pri_reads(4thread) 978.22% 9.96ns 100.38M -// shmtx_w_bare_reads(4thread) 908.35% 10.73ns 93.21M -// shmtx_rd_pri_reads(4thread) 1032.29% 9.44ns 105.93M -// shmtx_r_bare_reads(4thread) 912.38% 10.68ns 93.63M -// folly_ticket_reads(4thread) 46.08% 211.46ns 4.73M -// boost_shared_reads(4thread) 25.00% 389.74ns 2.57M -// pthrd_rwlock_reads(4thread) 47.53% 205.01ns 4.88M +// folly_rwspin_reads(4thread) 62.19ns 16.08M +// shmtx_wr_pri_reads(4thread) 1022.82% 6.08ns 164.48M +// shmtx_w_bare_reads(4thread) 875.37% 7.10ns 140.76M +// shmtx_rd_pri_reads(4thread) 1060.46% 5.86ns 170.53M +// shmtx_r_bare_reads(4thread) 879.88% 7.07ns 141.49M +// folly_ticket_reads(4thread) 64.62% 96.23ns 10.39M +// boost_shared_reads(4thread) 14.86% 418.49ns 2.39M +// pthrd_rwlock_reads(4thread) 25.01% 248.65ns 4.02M // ---------------------------------------------------------------------------- -// folly_rwspin_reads(8thread) 147.24ns 6.79M -// shmtx_wr_pri_reads(8thread) 2915.66% 5.05ns 198.02M -// shmtx_w_bare_reads(8thread) 2699.32% 5.45ns 183.32M -// shmtx_rd_pri_reads(8thread) 3092.58% 4.76ns 210.03M -// shmtx_r_bare_reads(8thread) 2744.63% 5.36ns 186.40M -// folly_ticket_reads(8thread) 54.84% 268.47ns 3.72M -// boost_shared_reads(8thread) 42.40% 347.30ns 2.88M -// pthrd_rwlock_reads(8thread) 78.90% 186.63ns 5.36M +// folly_rwspin_reads(8thread) 64.09ns 15.60M +// shmtx_wr_pri_reads(8thread) 2191.99% 2.92ns 342.03M +// shmtx_w_bare_reads(8thread) 1804.92% 3.55ns 281.63M +// shmtx_rd_pri_reads(8thread) 2194.60% 2.92ns 342.44M +// shmtx_r_bare_reads(8thread) 1800.53% 3.56ns 280.95M +// folly_ticket_reads(8thread) 54.90% 116.74ns 8.57M +// boost_shared_reads(8thread) 18.25% 351.24ns 2.85M +// pthrd_rwlock_reads(8thread) 28.19% 227.31ns 4.40M // ---------------------------------------------------------------------------- -// folly_rwspin_reads(16thread) 166.25ns 6.02M -// shmtx_wr_pri_reads(16thread) 6133.03% 2.71ns 368.91M -// shmtx_w_bare_reads(16thread) 5936.05% 2.80ns 357.06M -// shmtx_rd_pri_reads(16thread) 6786.57% 2.45ns 408.22M -// shmtx_r_bare_reads(16thread) 5995.54% 2.77ns 360.64M -// folly_ticket_reads(16thread) 56.35% 295.01ns 3.39M -// boost_shared_reads(16thread) 51.62% 322.08ns 3.10M -// pthrd_rwlock_reads(16thread) 92.47% 179.79ns 5.56M +// folly_rwspin_reads(16thread) 70.06ns 14.27M +// shmtx_wr_pri_reads(16thread) 4970.09% 1.41ns 709.38M +// shmtx_w_bare_reads(16thread) 4143.75% 1.69ns 591.44M +// shmtx_rd_pri_reads(16thread) 5009.31% 1.40ns 714.98M +// shmtx_r_bare_reads(16thread) 4067.36% 1.72ns 580.54M +// folly_ticket_reads(16thread) 46.78% 149.77ns 6.68M +// boost_shared_reads(16thread) 21.67% 323.37ns 3.09M +// pthrd_rwlock_reads(16thread) 35.05% 199.90ns 5.00M // ---------------------------------------------------------------------------- -// folly_rwspin_reads(32thread) 107.72ns 9.28M -// shmtx_wr_pri_reads(32thread) 6772.80% 1.59ns 628.77M -// shmtx_w_bare_reads(32thread) 6236.13% 1.73ns 578.94M -// shmtx_rd_pri_reads(32thread) 8143.32% 1.32ns 756.00M -// shmtx_r_bare_reads(32thread) 6485.18% 1.66ns 602.06M -// folly_ticket_reads(32thread) 35.12% 306.73ns 3.26M -// boost_shared_reads(32thread) 28.19% 382.17ns 2.62M -// pthrd_rwlock_reads(32thread) 65.29% 164.99ns 6.06M +// folly_rwspin_reads(32thread) 58.83ns 17.00M +// shmtx_wr_pri_reads(32thread) 5158.37% 1.14ns 876.79M +// shmtx_w_bare_reads(32thread) 4246.03% 1.39ns 721.72M +// shmtx_rd_pri_reads(32thread) 4845.97% 1.21ns 823.69M +// shmtx_r_bare_reads(32thread) 4721.44% 1.25ns 802.52M +// folly_ticket_reads(32thread) 28.40% 207.15ns 4.83M +// boost_shared_reads(32thread) 17.08% 344.54ns 2.90M +// pthrd_rwlock_reads(32thread) 30.01% 196.02ns 5.10M // ---------------------------------------------------------------------------- -// folly_rwspin_reads(64thread) 119.46ns 8.37M -// shmtx_wr_pri_reads(64thread) 6744.92% 1.77ns 564.60M -// shmtx_w_bare_reads(64thread) 6268.50% 1.91ns 524.72M -// shmtx_rd_pri_reads(64thread) 7508.56% 1.59ns 628.52M -// shmtx_r_bare_reads(64thread) 6299.53% 1.90ns 527.32M -// folly_ticket_reads(64thread) 37.42% 319.26ns 3.13M -// boost_shared_reads(64thread) 32.58% 366.70ns 2.73M -// pthrd_rwlock_reads(64thread) 73.64% 162.24ns 6.16M +// folly_rwspin_reads(64thread) 59.19ns 16.89M +// shmtx_wr_pri_reads(64thread) 3804.54% 1.56ns 642.76M +// shmtx_w_bare_reads(64thread) 3625.06% 1.63ns 612.43M +// shmtx_rd_pri_reads(64thread) 3418.19% 1.73ns 577.48M +// shmtx_r_bare_reads(64thread) 3416.98% 1.73ns 577.28M +// folly_ticket_reads(64thread) 30.53% 193.90ns 5.16M +// boost_shared_reads(64thread) 18.59% 318.47ns 3.14M +// pthrd_rwlock_reads(64thread) 31.35% 188.81ns 5.30M // ---------------------------------------------------------------------------- // ---------------------------------------------------------------------------- -// folly_rwspin(1thread_all_write) 25.51ns 39.19M -// shmtx_wr_pri(1thread_all_write) 97.38% 26.20ns 38.17M -// shmtx_rd_pri(1thread_all_write) 97.55% 26.16ns 38.23M -// folly_ticket(1thread_all_write) 90.98% 28.04ns 35.66M -// boost_shared(1thread_all_write) 16.80% 151.89ns 6.58M -// pthrd_rwlock(1thread_all_write) 63.86% 39.96ns 25.03M -// pthrd_mutex_(1thread_all_write) 82.05% 31.09ns 32.16M +// folly_rwspin(1thread_all_write) 23.77ns 42.06M +// shmtx_wr_pri(1thread_all_write) 85.09% 27.94ns 35.79M +// shmtx_rd_pri(1thread_all_write) 85.32% 27.87ns 35.89M +// folly_ticket(1thread_all_write) 88.11% 26.98ns 37.06M +// boost_shared(1thread_all_write) 16.49% 144.14ns 6.94M +// pthrd_rwlock(1thread_all_write) 53.99% 44.04ns 22.71M +// pthrd_mutex_(1thread_all_write) 86.05% 27.63ns 36.20M // ---------------------------------------------------------------------------- -// folly_rwspin(2thread_all_write) 100.70ns 9.93M -// shmtx_wr_pri(2thread_all_write) 40.83% 246.61ns 4.05M -// shmtx_rd_pri(2thread_all_write) 40.53% 248.44ns 4.03M -// folly_ticket(2thread_all_write) 58.49% 172.17ns 5.81M -// boost_shared(2thread_all_write) 24.26% 415.00ns 2.41M -// pthrd_rwlock(2thread_all_write) 41.35% 243.49ns 4.11M -// pthrd_mutex_(2thread_all_write) 146.91% 68.55ns 14.59M +// folly_rwspin(2thread_all_write) 76.05ns 13.15M +// shmtx_wr_pri(2thread_all_write) 60.67% 125.35ns 7.98M +// shmtx_rd_pri(2thread_all_write) 60.36% 125.99ns 7.94M +// folly_ticket(2thread_all_write) 129.10% 58.91ns 16.98M +// boost_shared(2thread_all_write) 18.65% 407.74ns 2.45M +// pthrd_rwlock(2thread_all_write) 40.90% 185.92ns 5.38M +// pthrd_mutex_(2thread_all_write) 127.37% 59.71ns 16.75M // ---------------------------------------------------------------------------- -// folly_rwspin(4thread_all_write) 199.52ns 5.01M -// shmtx_wr_pri(4thread_all_write) 51.71% 385.86ns 2.59M -// shmtx_rd_pri(4thread_all_write) 49.43% 403.62ns 2.48M -// folly_ticket(4thread_all_write) 117.88% 169.26ns 5.91M -// boost_shared(4thread_all_write) 9.81% 2.03us 491.48K -// pthrd_rwlock(4thread_all_write) 28.23% 706.69ns 1.42M -// pthrd_mutex_(4thread_all_write) 111.54% 178.88ns 5.59M +// folly_rwspin(4thread_all_write) 207.17ns 4.83M +// shmtx_wr_pri(4thread_all_write) 119.42% 173.49ns 5.76M +// shmtx_rd_pri(4thread_all_write) 117.68% 176.05ns 5.68M +// folly_ticket(4thread_all_write) 182.39% 113.59ns 8.80M +// boost_shared(4thread_all_write) 11.98% 1.73us 578.46K +// pthrd_rwlock(4thread_all_write) 27.50% 753.25ns 1.33M +// pthrd_mutex_(4thread_all_write) 117.75% 175.95ns 5.68M // ---------------------------------------------------------------------------- -// folly_rwspin(8thread_all_write) 304.61ns 3.28M -// shmtx_wr_pri(8thread_all_write) 69.77% 436.59ns 2.29M -// shmtx_rd_pri(8thread_all_write) 66.58% 457.51ns 2.19M -// folly_ticket(8thread_all_write) 141.00% 216.03ns 4.63M -// boost_shared(8thread_all_write) 6.11% 4.99us 200.59K -// pthrd_rwlock(8thread_all_write) 38.03% 800.88ns 1.25M -// pthrd_mutex_(8thread_all_write) 177.66% 171.45ns 5.83M +// folly_rwspin(8thread_all_write) 326.50ns 3.06M +// shmtx_wr_pri(8thread_all_write) 125.47% 260.22ns 3.84M +// shmtx_rd_pri(8thread_all_write) 124.73% 261.76ns 3.82M +// folly_ticket(8thread_all_write) 253.39% 128.85ns 7.76M +// boost_shared(8thread_all_write) 6.36% 5.13us 194.87K +// pthrd_rwlock(8thread_all_write) 38.54% 847.09ns 1.18M +// pthrd_mutex_(8thread_all_write) 166.31% 196.32ns 5.09M // ---------------------------------------------------------------------------- -// folly_rwspin(16thread_all_write) 576.97ns 1.73M -// shmtx_wr_pri(16thread_all_write) 105.72% 545.77ns 1.83M -// shmtx_rd_pri(16thread_all_write) 105.13% 548.83ns 1.82M -// folly_ticket(16thread_all_write) 161.70% 356.82ns 2.80M -// boost_shared(16thread_all_write) 7.73% 7.46us 134.03K -// pthrd_rwlock(16thread_all_write) 96.88% 595.54ns 1.68M -// pthrd_mutex_(16thread_all_write) 330.44% 174.61ns 5.73M +// folly_rwspin(16thread_all_write) 729.89ns 1.37M +// shmtx_wr_pri(16thread_all_write) 219.91% 331.91ns 3.01M +// shmtx_rd_pri(16thread_all_write) 220.09% 331.62ns 3.02M +// folly_ticket(16thread_all_write) 390.06% 187.12ns 5.34M +// boost_shared(16thread_all_write) 10.27% 7.11us 140.72K +// pthrd_rwlock(16thread_all_write) 113.90% 640.84ns 1.56M +// pthrd_mutex_(16thread_all_write) 401.97% 181.58ns 5.51M // ---------------------------------------------------------------------------- -// folly_rwspin(32thread_all_write) 1.41us 707.76K -// shmtx_wr_pri(32thread_all_write) 240.46% 587.58ns 1.70M -// shmtx_rd_pri(32thread_all_write) 393.71% 358.87ns 2.79M -// folly_ticket(32thread_all_write) 325.07% 434.65ns 2.30M -// boost_shared(32thread_all_write) 18.57% 7.61us 131.43K -// pthrd_rwlock(32thread_all_write) 266.78% 529.62ns 1.89M -// pthrd_mutex_(32thread_all_write) 877.89% 160.94ns 6.21M +// folly_rwspin(32thread_all_write) 1.55us 645.01K +// shmtx_wr_pri(32thread_all_write) 415.05% 373.54ns 2.68M +// shmtx_rd_pri(32thread_all_write) 258.45% 599.88ns 1.67M +// folly_ticket(32thread_all_write) 525.40% 295.09ns 3.39M +// boost_shared(32thread_all_write) 20.84% 7.44us 134.45K +// pthrd_rwlock(32thread_all_write) 254.16% 610.00ns 1.64M +// pthrd_mutex_(32thread_all_write) 852.51% 181.86ns 5.50M // ---------------------------------------------------------------------------- -// folly_rwspin(64thread_all_write) 1.76us 566.94K -// shmtx_wr_pri(64thread_all_write) 255.67% 689.91ns 1.45M -// shmtx_rd_pri(64thread_all_write) 468.82% 376.23ns 2.66M -// folly_ticket(64thread_all_write) 294.72% 598.49ns 1.67M -// boost_shared(64thread_all_write) 23.39% 7.54us 132.58K -// pthrd_rwlock(64thread_all_write) 321.39% 548.83ns 1.82M -// pthrd_mutex_(64thread_all_write) 1165.04% 151.40ns 6.61M +// folly_rwspin(64thread_all_write) 2.03us 492.00K +// shmtx_wr_pri(64thread_all_write) 517.65% 392.64ns 2.55M +// shmtx_rd_pri(64thread_all_write) 288.20% 705.24ns 1.42M +// folly_ticket(64thread_all_write) 638.22% 318.47ns 3.14M +// boost_shared(64thread_all_write) 27.56% 7.37us 135.61K +// pthrd_rwlock(64thread_all_write) 326.75% 622.04ns 1.61M +// pthrd_mutex_(64thread_all_write) 1231.57% 165.04ns 6.06M // ---------------------------------------------------------------------------- // ---------------------------------------------------------------------------- -// folly_rwspin(1thread_10pct_write) 19.51ns 51.26M -// shmtx_wr_pri(1thread_10pct_write) 83.25% 23.43ns 42.67M -// shmtx_rd_pri(1thread_10pct_write) 83.31% 23.42ns 42.71M -// folly_ticket(1thread_10pct_write) 70.88% 27.52ns 36.34M -// boost_shared(1thread_10pct_write) 13.09% 148.99ns 6.71M -// pthrd_rwlock(1thread_10pct_write) 47.41% 41.15ns 24.30M +// folly_rwspin(1thread_10pct_write) 19.39ns 51.58M +// shmtx_wr_pri(1thread_10pct_write) 93.87% 20.65ns 48.42M +// shmtx_rd_pri(1thread_10pct_write) 93.60% 20.71ns 48.28M +// folly_ticket(1thread_10pct_write) 73.75% 26.29ns 38.04M +// boost_shared(1thread_10pct_write) 12.97% 149.53ns 6.69M +// pthrd_rwlock(1thread_10pct_write) 44.15% 43.92ns 22.77M // ---------------------------------------------------------------------------- -// folly_rwspin(2thread_10pct_write) 159.42ns 6.27M -// shmtx_wr_pri(2thread_10pct_write) 188.44% 84.60ns 11.82M -// shmtx_rd_pri(2thread_10pct_write) 188.29% 84.67ns 11.81M -// folly_ticket(2thread_10pct_write) 140.28% 113.64ns 8.80M -// boost_shared(2thread_10pct_write) 42.09% 378.81ns 2.64M -// pthrd_rwlock(2thread_10pct_write) 103.86% 153.49ns 6.51M +// folly_rwspin(2thread_10pct_write) 227.88ns 4.39M +// shmtx_wr_pri(2thread_10pct_write) 321.08% 70.98ns 14.09M +// shmtx_rd_pri(2thread_10pct_write) 280.65% 81.20ns 12.32M +// folly_ticket(2thread_10pct_write) 220.43% 103.38ns 9.67M +// boost_shared(2thread_10pct_write) 58.78% 387.71ns 2.58M +// pthrd_rwlock(2thread_10pct_write) 112.68% 202.23ns 4.94M // ---------------------------------------------------------------------------- -// folly_rwspin(4thread_10pct_write) 193.35ns 5.17M -// shmtx_wr_pri(4thread_10pct_write) 184.30% 104.91ns 9.53M -// shmtx_rd_pri(4thread_10pct_write) 163.76% 118.07ns 8.47M -// folly_ticket(4thread_10pct_write) 124.07% 155.84ns 6.42M -// boost_shared(4thread_10pct_write) 16.32% 1.18us 843.92K -// pthrd_rwlock(4thread_10pct_write) 48.59% 397.94ns 2.51M +// folly_rwspin(4thread_10pct_write) 444.94ns 2.25M +// shmtx_wr_pri(4thread_10pct_write) 470.35% 94.60ns 10.57M +// shmtx_rd_pri(4thread_10pct_write) 349.08% 127.46ns 7.85M +// folly_ticket(4thread_10pct_write) 305.64% 145.58ns 6.87M +// boost_shared(4thread_10pct_write) 44.43% 1.00us 998.57K +// pthrd_rwlock(4thread_10pct_write) 100.59% 442.31ns 2.26M // ---------------------------------------------------------------------------- -// folly_rwspin(8thread_10pct_write) 373.17ns 2.68M -// shmtx_wr_pri(8thread_10pct_write) 252.02% 148.08ns 6.75M -// shmtx_rd_pri(8thread_10pct_write) 203.59% 183.30ns 5.46M -// folly_ticket(8thread_10pct_write) 184.37% 202.40ns 4.94M -// boost_shared(8thread_10pct_write) 15.85% 2.35us 424.72K -// pthrd_rwlock(8thread_10pct_write) 83.03% 449.45ns 2.22M +// folly_rwspin(8thread_10pct_write) 424.67ns 2.35M +// shmtx_wr_pri(8thread_10pct_write) 337.53% 125.82ns 7.95M +// shmtx_rd_pri(8thread_10pct_write) 232.32% 182.79ns 5.47M +// folly_ticket(8thread_10pct_write) 206.59% 205.56ns 4.86M +// boost_shared(8thread_10pct_write) 19.45% 2.18us 457.90K +// pthrd_rwlock(8thread_10pct_write) 78.58% 540.42ns 1.85M // ---------------------------------------------------------------------------- -// folly_rwspin(16thread_10pct_write) 742.87ns 1.35M -// shmtx_wr_pri(16thread_10pct_write) 344.27% 215.78ns 4.63M -// shmtx_rd_pri(16thread_10pct_write) 287.04% 258.80ns 3.86M -// folly_ticket(16thread_10pct_write) 277.25% 267.94ns 3.73M -// boost_shared(16thread_10pct_write) 15.33% 4.85us 206.30K -// pthrd_rwlock(16thread_10pct_write) 158.34% 469.16ns 2.13M +// folly_rwspin(16thread_10pct_write) 727.04ns 1.38M +// shmtx_wr_pri(16thread_10pct_write) 400.60% 181.49ns 5.51M +// shmtx_rd_pri(16thread_10pct_write) 312.94% 232.33ns 4.30M +// folly_ticket(16thread_10pct_write) 283.67% 256.30ns 3.90M +// boost_shared(16thread_10pct_write) 15.87% 4.58us 218.32K +// pthrd_rwlock(16thread_10pct_write) 131.28% 553.82ns 1.81M // ---------------------------------------------------------------------------- -// folly_rwspin(32thread_10pct_write) 799.97ns 1.25M -// shmtx_wr_pri(32thread_10pct_write) 351.40% 227.65ns 4.39M -// shmtx_rd_pri(32thread_10pct_write) 341.71% 234.11ns 4.27M -// folly_ticket(32thread_10pct_write) 245.91% 325.31ns 3.07M -// boost_shared(32thread_10pct_write) 7.72% 10.36us 96.56K -// pthrd_rwlock(32thread_10pct_write) 165.87% 482.30ns 2.07M +// folly_rwspin(32thread_10pct_write) 810.61ns 1.23M +// shmtx_wr_pri(32thread_10pct_write) 429.61% 188.68ns 5.30M +// shmtx_rd_pri(32thread_10pct_write) 321.13% 252.42ns 3.96M +// folly_ticket(32thread_10pct_write) 247.65% 327.32ns 3.06M +// boost_shared(32thread_10pct_write) 8.34% 9.71us 102.94K +// pthrd_rwlock(32thread_10pct_write) 144.28% 561.85ns 1.78M // ---------------------------------------------------------------------------- -// folly_rwspin(64thread_10pct_write) 1.12us 892.01K -// shmtx_wr_pri(64thread_10pct_write) 429.84% 260.81ns 3.83M -// shmtx_rd_pri(64thread_10pct_write) 456.93% 245.35ns 4.08M -// folly_ticket(64thread_10pct_write) 219.21% 511.42ns 1.96M -// boost_shared(64thread_10pct_write) 5.43% 20.65us 48.44K -// pthrd_rwlock(64thread_10pct_write) 233.93% 479.23ns 2.09M +// folly_rwspin(64thread_10pct_write) 1.10us 912.30K +// shmtx_wr_pri(64thread_10pct_write) 486.68% 225.22ns 4.44M +// shmtx_rd_pri(64thread_10pct_write) 412.96% 265.43ns 3.77M +// folly_ticket(64thread_10pct_write) 280.23% 391.15ns 2.56M +// boost_shared(64thread_10pct_write) 6.16% 17.79us 56.22K +// pthrd_rwlock(64thread_10pct_write) 198.81% 551.34ns 1.81M // ---------------------------------------------------------------------------- // ---------------------------------------------------------------------------- -// folly_rwspin(1thread_1pct_write) 18.88ns 52.98M -// shmtx_wr_pri(1thread_1pct_write) 81.53% 23.15ns 43.19M -// shmtx_w_bare(1thread_1pct_write) 67.90% 27.80ns 35.97M -// shmtx_rd_pri(1thread_1pct_write) 81.50% 23.16ns 43.18M -// shmtx_r_bare(1thread_1pct_write) 67.74% 27.86ns 35.89M -// folly_ticket(1thread_1pct_write) 68.68% 27.48ns 36.39M -// boost_shared(1thread_1pct_write) 12.80% 147.51ns 6.78M -// pthrd_rwlock(1thread_1pct_write) 45.81% 41.20ns 24.27M +// folly_rwspin(1thread_1pct_write) 19.02ns 52.57M +// shmtx_wr_pri(1thread_1pct_write) 94.46% 20.14ns 49.66M +// shmtx_w_bare(1thread_1pct_write) 76.60% 24.83ns 40.27M +// shmtx_rd_pri(1thread_1pct_write) 93.83% 20.27ns 49.33M +// shmtx_r_bare(1thread_1pct_write) 77.04% 24.69ns 40.50M +// folly_ticket(1thread_1pct_write) 72.83% 26.12ns 38.29M +// boost_shared(1thread_1pct_write) 12.48% 152.44ns 6.56M +// pthrd_rwlock(1thread_1pct_write) 42.85% 44.39ns 22.53M // ---------------------------------------------------------------------------- -// folly_rwspin(2thread_1pct_write) 125.85ns 7.95M -// shmtx_wr_pri(2thread_1pct_write) 359.04% 35.05ns 28.53M -// shmtx_w_bare(2thread_1pct_write) 475.60% 26.46ns 37.79M -// shmtx_rd_pri(2thread_1pct_write) 332.75% 37.82ns 26.44M -// shmtx_r_bare(2thread_1pct_write) 115.64% 108.83ns 9.19M -// folly_ticket(2thread_1pct_write) 140.24% 89.74ns 11.14M -// boost_shared(2thread_1pct_write) 40.62% 309.82ns 3.23M -// pthrd_rwlock(2thread_1pct_write) 134.67% 93.45ns 10.70M +// folly_rwspin(2thread_1pct_write) 110.63ns 9.04M +// shmtx_wr_pri(2thread_1pct_write) 442.12% 25.02ns 39.96M +// shmtx_w_bare(2thread_1pct_write) 374.65% 29.53ns 33.86M +// shmtx_rd_pri(2thread_1pct_write) 371.08% 29.81ns 33.54M +// shmtx_r_bare(2thread_1pct_write) 138.02% 80.15ns 12.48M +// folly_ticket(2thread_1pct_write) 131.34% 84.23ns 11.87M +// boost_shared(2thread_1pct_write) 30.35% 364.58ns 2.74M +// pthrd_rwlock(2thread_1pct_write) 95.48% 115.87ns 8.63M // ---------------------------------------------------------------------------- -// folly_rwspin(4thread_1pct_write) 126.70ns 7.89M -// shmtx_wr_pri(4thread_1pct_write) 422.20% 30.01ns 33.32M -// shmtx_w_bare(4thread_1pct_write) 403.52% 31.40ns 31.85M -// shmtx_rd_pri(4thread_1pct_write) 282.50% 44.85ns 22.30M -// shmtx_r_bare(4thread_1pct_write) 66.30% 191.10ns 5.23M -// folly_ticket(4thread_1pct_write) 91.93% 137.83ns 7.26M -// boost_shared(4thread_1pct_write) 22.74% 557.10ns 1.80M -// pthrd_rwlock(4thread_1pct_write) 55.66% 227.62ns 4.39M +// folly_rwspin(4thread_1pct_write) 140.62ns 7.11M +// shmtx_wr_pri(4thread_1pct_write) 627.13% 22.42ns 44.60M +// shmtx_w_bare(4thread_1pct_write) 552.94% 25.43ns 39.32M +// shmtx_rd_pri(4thread_1pct_write) 226.06% 62.21ns 16.08M +// shmtx_r_bare(4thread_1pct_write) 77.61% 181.19ns 5.52M +// folly_ticket(4thread_1pct_write) 119.58% 117.60ns 8.50M +// boost_shared(4thread_1pct_write) 25.36% 554.54ns 1.80M +// pthrd_rwlock(4thread_1pct_write) 45.55% 308.72ns 3.24M // ---------------------------------------------------------------------------- -// folly_rwspin(8thread_1pct_write) 169.42ns 5.90M -// shmtx_wr_pri(8thread_1pct_write) 567.81% 29.84ns 33.51M -// shmtx_w_bare(8thread_1pct_write) 519.18% 32.63ns 30.64M -// shmtx_rd_pri(8thread_1pct_write) 172.36% 98.30ns 10.17M -// shmtx_r_bare(8thread_1pct_write) 75.56% 224.21ns 4.46M -// folly_ticket(8thread_1pct_write) 104.03% 162.85ns 6.14M -// boost_shared(8thread_1pct_write) 22.01% 769.73ns 1.30M -// pthrd_rwlock(8thread_1pct_write) 71.79% 235.99ns 4.24M +// folly_rwspin(8thread_1pct_write) 166.23ns 6.02M +// shmtx_wr_pri(8thread_1pct_write) 687.09% 24.19ns 41.33M +// shmtx_w_bare(8thread_1pct_write) 611.80% 27.17ns 36.80M +// shmtx_rd_pri(8thread_1pct_write) 140.37% 118.43ns 8.44M +// shmtx_r_bare(8thread_1pct_write) 80.32% 206.97ns 4.83M +// folly_ticket(8thread_1pct_write) 117.06% 142.01ns 7.04M +// boost_shared(8thread_1pct_write) 22.29% 745.67ns 1.34M +// pthrd_rwlock(8thread_1pct_write) 49.84% 333.55ns 3.00M // ---------------------------------------------------------------------------- -// folly_rwspin(16thread_1pct_write) 385.88ns 2.59M -// shmtx_wr_pri(16thread_1pct_write) 1039.03% 37.14ns 26.93M -// shmtx_w_bare(16thread_1pct_write) 997.26% 38.69ns 25.84M -// shmtx_rd_pri(16thread_1pct_write) 263.60% 146.39ns 6.83M -// shmtx_r_bare(16thread_1pct_write) 173.16% 222.85ns 4.49M -// folly_ticket(16thread_1pct_write) 179.37% 215.13ns 4.65M -// boost_shared(16thread_1pct_write) 26.95% 1.43us 698.42K -// pthrd_rwlock(16thread_1pct_write) 166.70% 231.48ns 4.32M +// folly_rwspin(16thread_1pct_write) 419.79ns 2.38M +// shmtx_wr_pri(16thread_1pct_write) 1397.92% 30.03ns 33.30M +// shmtx_w_bare(16thread_1pct_write) 1324.60% 31.69ns 31.55M +// shmtx_rd_pri(16thread_1pct_write) 278.12% 150.94ns 6.63M +// shmtx_r_bare(16thread_1pct_write) 194.25% 216.11ns 4.63M +// folly_ticket(16thread_1pct_write) 255.38% 164.38ns 6.08M +// boost_shared(16thread_1pct_write) 33.71% 1.25us 803.01K +// pthrd_rwlock(16thread_1pct_write) 131.96% 318.12ns 3.14M // ---------------------------------------------------------------------------- -// folly_rwspin(32thread_1pct_write) 382.49ns 2.61M -// shmtx_wr_pri(32thread_1pct_write) 1046.64% 36.54ns 27.36M -// shmtx_w_bare(32thread_1pct_write) 922.87% 41.45ns 24.13M -// shmtx_rd_pri(32thread_1pct_write) 251.93% 151.82ns 6.59M -// shmtx_r_bare(32thread_1pct_write) 176.44% 216.78ns 4.61M -// folly_ticket(32thread_1pct_write) 131.07% 291.82ns 3.43M -// boost_shared(32thread_1pct_write) 12.77% 2.99us 333.95K -// pthrd_rwlock(32thread_1pct_write) 173.43% 220.55ns 4.53M +// folly_rwspin(32thread_1pct_write) 395.99ns 2.53M +// shmtx_wr_pri(32thread_1pct_write) 1332.76% 29.71ns 33.66M +// shmtx_w_bare(32thread_1pct_write) 1208.86% 32.76ns 30.53M +// shmtx_rd_pri(32thread_1pct_write) 252.97% 156.54ns 6.39M +// shmtx_r_bare(32thread_1pct_write) 193.79% 204.35ns 4.89M +// folly_ticket(32thread_1pct_write) 173.16% 228.69ns 4.37M +// boost_shared(32thread_1pct_write) 17.00% 2.33us 429.40K +// pthrd_rwlock(32thread_1pct_write) 129.88% 304.89ns 3.28M // ---------------------------------------------------------------------------- -// folly_rwspin(64thread_1pct_write) 510.54ns 1.96M -// shmtx_wr_pri(64thread_1pct_write) 1378.27% 37.04ns 27.00M -// shmtx_w_bare(64thread_1pct_write) 1178.24% 43.33ns 23.08M -// shmtx_rd_pri(64thread_1pct_write) 325.29% 156.95ns 6.37M -// shmtx_r_bare(64thread_1pct_write) 247.82% 206.02ns 4.85M -// folly_ticket(64thread_1pct_write) 117.87% 433.13ns 2.31M -// boost_shared(64thread_1pct_write) 9.45% 5.40us 185.09K -// pthrd_rwlock(64thread_1pct_write) 236.72% 215.68ns 4.64M +// folly_rwspin(64thread_1pct_write) 424.07ns 2.36M +// shmtx_wr_pri(64thread_1pct_write) 1297.89% 32.67ns 30.61M +// shmtx_w_bare(64thread_1pct_write) 1228.88% 34.51ns 28.98M +// shmtx_rd_pri(64thread_1pct_write) 270.40% 156.83ns 6.38M +// shmtx_r_bare(64thread_1pct_write) 218.05% 194.48ns 5.14M +// folly_ticket(64thread_1pct_write) 171.44% 247.36ns 4.04M +// boost_shared(64thread_1pct_write) 10.60% 4.00us 249.95K +// pthrd_rwlock(64thread_1pct_write) 143.80% 294.91ns 3.39M // ---------------------------------------------------------------------------- -// folly_rwspin(2thr_2lock_50pct_write) 10.85ns 92.15M -// shmtx_wr_pri(2thr_2lock_50pct_write) 81.73% 13.28ns 75.32M -// shmtx_rd_pri(2thr_2lock_50pct_write) 81.82% 13.26ns 75.40M -// folly_rwspin(4thr_4lock_50pct_write) 5.29ns 188.90M -// shmtx_wr_pri(4thr_4lock_50pct_write) 80.89% 6.54ns 152.80M -// shmtx_rd_pri(4thr_4lock_50pct_write) 81.07% 6.53ns 153.14M -// folly_rwspin(8thr_8lock_50pct_write) 2.63ns 380.57M -// shmtx_wr_pri(8thr_8lock_50pct_write) 80.56% 3.26ns 306.57M -// shmtx_rd_pri(8thr_8lock_50pct_write) 80.29% 3.27ns 305.54M -// folly_rwspin(16thr_16lock_50pct_write) 1.31ns 764.70M -// shmtx_wr_pri(16thr_16lock_50pct_write) 79.32% 1.65ns 606.54M -// shmtx_rd_pri(16thr_16lock_50pct_write) 79.62% 1.64ns 608.84M -// folly_rwspin(32thr_32lock_50pct_write) 1.20ns 836.75M -// shmtx_wr_pri(32thr_32lock_50pct_write) 91.67% 1.30ns 767.07M -// shmtx_rd_pri(32thr_32lock_50pct_write) 92.00% 1.30ns 769.82M -// folly_rwspin(64thr_64lock_50pct_write) 1.39ns 717.80M -// shmtx_wr_pri(64thr_64lock_50pct_write) 93.21% 1.49ns 669.08M -// shmtx_rd_pri(64thr_64lock_50pct_write) 92.49% 1.51ns 663.89M +// folly_rwspin(2thr_2lock_50pct_write) 10.87ns 91.99M +// shmtx_wr_pri(2thr_2lock_50pct_write) 83.71% 12.99ns 77.01M +// shmtx_rd_pri(2thr_2lock_50pct_write) 84.08% 12.93ns 77.34M +// folly_rwspin(4thr_4lock_50pct_write) 5.32ns 188.12M +// shmtx_wr_pri(4thr_4lock_50pct_write) 82.21% 6.47ns 154.65M +// shmtx_rd_pri(4thr_4lock_50pct_write) 81.20% 6.55ns 152.75M +// folly_rwspin(8thr_8lock_50pct_write) 2.64ns 379.06M +// shmtx_wr_pri(8thr_8lock_50pct_write) 81.26% 3.25ns 308.03M +// shmtx_rd_pri(8thr_8lock_50pct_write) 80.95% 3.26ns 306.86M +// folly_rwspin(16thr_16lock_50pct_write) 1.52ns 656.77M +// shmtx_wr_pri(16thr_16lock_50pct_write) 86.24% 1.77ns 566.41M +// shmtx_rd_pri(16thr_16lock_50pct_write) 83.72% 1.82ns 549.82M +// folly_rwspin(32thr_32lock_50pct_write) 1.19ns 841.03M +// shmtx_wr_pri(32thr_32lock_50pct_write) 85.08% 1.40ns 715.55M +// shmtx_rd_pri(32thr_32lock_50pct_write) 86.44% 1.38ns 727.00M +// folly_rwspin(64thr_64lock_50pct_write) 1.46ns 684.28M +// shmtx_wr_pri(64thr_64lock_50pct_write) 84.53% 1.73ns 578.43M +// shmtx_rd_pri(64thr_64lock_50pct_write) 82.80% 1.76ns 566.58M // ---------------------------------------------------------------------------- -// folly_rwspin(2thr_2lock_10pct_write) 10.24ns 97.70M -// shmtx_wr_pri(2thr_2lock_10pct_write) 76.46% 13.39ns 74.70M -// shmtx_rd_pri(2thr_2lock_10pct_write) 76.35% 13.41ns 74.60M -// folly_rwspin(4thr_4lock_10pct_write) 5.02ns 199.03M -// shmtx_wr_pri(4thr_4lock_10pct_write) 75.83% 6.63ns 150.91M -// shmtx_rd_pri(4thr_4lock_10pct_write) 76.10% 6.60ns 151.46M -// folly_rwspin(8thr_8lock_10pct_write) 2.47ns 405.50M -// shmtx_wr_pri(8thr_8lock_10pct_write) 74.54% 3.31ns 302.27M -// shmtx_rd_pri(8thr_8lock_10pct_write) 74.85% 3.29ns 303.52M -// folly_rwspin(16thr_16lock_10pct_write) 1.22ns 818.68M -// shmtx_wr_pri(16thr_16lock_10pct_write) 73.35% 1.67ns 600.47M -// shmtx_rd_pri(16thr_16lock_10pct_write) 73.38% 1.66ns 600.73M -// folly_rwspin(32thr_32lock_10pct_write) 1.21ns 827.95M -// shmtx_wr_pri(32thr_32lock_10pct_write) 96.13% 1.26ns 795.89M -// shmtx_rd_pri(32thr_32lock_10pct_write) 96.01% 1.26ns 794.95M -// folly_rwspin(64thr_64lock_10pct_write) 1.40ns 716.17M -// shmtx_wr_pri(64thr_64lock_10pct_write) 96.91% 1.44ns 694.03M -// shmtx_rd_pri(64thr_64lock_10pct_write) 96.85% 1.44ns 693.64M +// folly_rwspin(2thr_2lock_10pct_write) 10.01ns 99.85M +// shmtx_wr_pri(2thr_2lock_10pct_write) 92.02% 10.88ns 91.88M +// shmtx_rd_pri(2thr_2lock_10pct_write) 92.35% 10.84ns 92.22M +// folly_rwspin(4thr_4lock_10pct_write) 4.81ns 207.87M +// shmtx_wr_pri(4thr_4lock_10pct_write) 89.32% 5.39ns 185.67M +// shmtx_rd_pri(4thr_4lock_10pct_write) 88.96% 5.41ns 184.93M +// folly_rwspin(8thr_8lock_10pct_write) 2.39ns 417.62M +// shmtx_wr_pri(8thr_8lock_10pct_write) 91.17% 2.63ns 380.76M +// shmtx_rd_pri(8thr_8lock_10pct_write) 89.53% 2.67ns 373.92M +// folly_rwspin(16thr_16lock_10pct_write) 1.16ns 860.47M +// shmtx_wr_pri(16thr_16lock_10pct_write) 74.35% 1.56ns 639.77M +// shmtx_rd_pri(16thr_16lock_10pct_write) 91.34% 1.27ns 785.97M +// folly_rwspin(32thr_32lock_10pct_write) 1.15ns 866.23M +// shmtx_wr_pri(32thr_32lock_10pct_write) 92.32% 1.25ns 799.72M +// shmtx_rd_pri(32thr_32lock_10pct_write) 94.40% 1.22ns 817.71M +// folly_rwspin(64thr_64lock_10pct_write) 1.41ns 710.54M +// shmtx_wr_pri(64thr_64lock_10pct_write) 94.14% 1.50ns 668.88M +// shmtx_rd_pri(64thr_64lock_10pct_write) 94.80% 1.48ns 673.56M // ---------------------------------------------------------------------------- -// folly_rwspin(2thr_2lock_1pct_write) 10.11ns 98.91M -// shmtx_wr_pri(2thr_2lock_1pct_write) 75.07% 13.47ns 74.25M -// shmtx_rd_pri(2thr_2lock_1pct_write) 74.98% 13.48ns 74.16M -// folly_rwspin(4thr_4lock_1pct_write) 4.96ns 201.77M -// shmtx_wr_pri(4thr_4lock_1pct_write) 74.59% 6.64ns 150.49M -// shmtx_rd_pri(4thr_4lock_1pct_write) 74.60% 6.64ns 150.51M -// folly_rwspin(8thr_8lock_1pct_write) 2.44ns 410.42M -// shmtx_wr_pri(8thr_8lock_1pct_write) 73.68% 3.31ns 302.41M -// shmtx_rd_pri(8thr_8lock_1pct_write) 73.38% 3.32ns 301.16M -// folly_rwspin(16thr_16lock_1pct_write) 1.21ns 827.53M -// shmtx_wr_pri(16thr_16lock_1pct_write) 72.11% 1.68ns 596.74M -// shmtx_rd_pri(16thr_16lock_1pct_write) 72.23% 1.67ns 597.73M -// folly_rwspin(32thr_32lock_1pct_write) 1.22ns 819.53M -// shmtx_wr_pri(32thr_32lock_1pct_write) 98.17% 1.24ns 804.50M -// shmtx_rd_pri(32thr_32lock_1pct_write) 98.21% 1.24ns 804.86M -// folly_rwspin(64thr_64lock_1pct_write) 1.41ns 710.26M -// shmtx_wr_pri(64thr_64lock_1pct_write) 97.81% 1.44ns 694.71M -// shmtx_rd_pri(64thr_64lock_1pct_write) 99.44% 1.42ns 706.28M +// folly_rwspin(2thr_2lock_1pct_write) 9.58ns 104.36M +// shmtx_wr_pri(2thr_2lock_1pct_write) 92.00% 10.42ns 96.01M +// shmtx_rd_pri(2thr_2lock_1pct_write) 91.79% 10.44ns 95.79M +// folly_rwspin(4thr_4lock_1pct_write) 4.71ns 212.30M +// shmtx_wr_pri(4thr_4lock_1pct_write) 90.37% 5.21ns 191.85M +// shmtx_rd_pri(4thr_4lock_1pct_write) 89.94% 5.24ns 190.95M +// folly_rwspin(8thr_8lock_1pct_write) 2.33ns 429.91M +// shmtx_wr_pri(8thr_8lock_1pct_write) 90.67% 2.57ns 389.80M +// shmtx_rd_pri(8thr_8lock_1pct_write) 90.61% 2.57ns 389.55M +// folly_rwspin(16thr_16lock_1pct_write) 1.10ns 905.23M +// shmtx_wr_pri(16thr_16lock_1pct_write) 91.96% 1.20ns 832.46M +// shmtx_rd_pri(16thr_16lock_1pct_write) 92.29% 1.20ns 835.42M +// folly_rwspin(32thr_32lock_1pct_write) 1.14ns 879.85M +// shmtx_wr_pri(32thr_32lock_1pct_write) 93.41% 1.22ns 821.86M +// shmtx_rd_pri(32thr_32lock_1pct_write) 94.18% 1.21ns 828.66M +// folly_rwspin(64thr_64lock_1pct_write) 1.34ns 748.83M +// shmtx_wr_pri(64thr_64lock_1pct_write) 94.39% 1.41ns 706.84M +// shmtx_rd_pri(64thr_64lock_1pct_write) 94.02% 1.42ns 704.06M // ---------------------------------------------------------------------------- // ---------------------------------------------------------------------------- -// folly_rwspin_ping_pong(burn0) 641.24ns 1.56M -// shmtx_w_bare_ping_pong(burn0) 91.07% 704.12ns 1.42M -// shmtx_r_bare_ping_pong(burn0) 78.70% 814.84ns 1.23M -// folly_ticket_ping_pong(burn0) 85.67% 748.53ns 1.34M -// boost_shared_ping_pong(burn0) 5.58% 11.50us 86.96K -// pthrd_rwlock_ping_pong(burn0) 8.81% 7.28us 137.40K +// folly_rwspin_ping_pong(burn0) 605.63ns 1.65M +// shmtx_w_bare_ping_pong(burn0) 102.17% 592.76ns 1.69M +// shmtx_r_bare_ping_pong(burn0) 88.75% 682.44ns 1.47M +// folly_ticket_ping_pong(burn0) 63.92% 947.56ns 1.06M +// boost_shared_ping_pong(burn0) 8.52% 7.11us 140.73K +// pthrd_rwlock_ping_pong(burn0) 7.88% 7.68us 130.15K // ---------------------------------------------------------------------------- -// folly_rwspin_ping_pong(burn100k) 678.97ns 1.47M -// shmtx_w_bare_ping_pong(burn100k) 99.73% 680.78ns 1.47M -// shmtx_r_bare_ping_pong(burn100k) 98.67% 688.13ns 1.45M -// folly_ticket_ping_pong(burn100k) 99.31% 683.68ns 1.46M -// boost_shared_ping_pong(burn100k) 58.23% 1.17us 857.64K -// pthrd_rwlock_ping_pong(burn100k) 57.43% 1.18us 845.86K +// folly_rwspin_ping_pong(burn100k) 727.76ns 1.37M +// shmtx_w_bare_ping_pong(burn100k) 100.79% 722.09ns 1.38M +// shmtx_r_bare_ping_pong(burn100k) 101.98% 713.61ns 1.40M +// folly_ticket_ping_pong(burn100k) 102.80% 707.95ns 1.41M +// boost_shared_ping_pong(burn100k) 81.49% 893.02ns 1.12M +// pthrd_rwlock_ping_pong(burn100k) 71.05% 1.02us 976.30K // ---------------------------------------------------------------------------- -// folly_rwspin_ping_pong(burn300k) 2.03us 492.99K -// shmtx_w_bare_ping_pong(burn300k) 99.98% 2.03us 492.88K -// shmtx_r_bare_ping_pong(burn300k) 99.94% 2.03us 492.68K -// folly_ticket_ping_pong(burn300k) 99.88% 2.03us 492.40K -// boost_shared_ping_pong(burn300k) 81.43% 2.49us 401.47K -// pthrd_rwlock_ping_pong(burn300k) 83.22% 2.44us 410.29K +// folly_rwspin_ping_pong(burn300k) 2.11us 473.46K +// shmtx_w_bare_ping_pong(burn300k) 100.06% 2.11us 473.72K +// shmtx_r_bare_ping_pong(burn300k) 98.93% 2.13us 468.39K +// folly_ticket_ping_pong(burn300k) 96.68% 2.18us 457.73K +// boost_shared_ping_pong(burn300k) 84.72% 2.49us 401.13K +// pthrd_rwlock_ping_pong(burn300k) 84.62% 2.50us 400.66K // ---------------------------------------------------------------------------- -// folly_rwspin_ping_pong(burn1M) 677.07ns 1.48M -// shmtx_w_bare_ping_pong(burn1M) 100.50% 673.74ns 1.48M -// shmtx_r_bare_ping_pong(burn1M) 100.14% 676.12ns 1.48M -// folly_ticket_ping_pong(burn1M) 100.44% 674.14ns 1.48M -// boost_shared_ping_pong(burn1M) 93.04% 727.72ns 1.37M -// pthrd_rwlock_ping_pong(burn1M) 94.52% 716.30ns 1.40M +// folly_rwspin_ping_pong(burn1M) 709.70ns 1.41M +// shmtx_w_bare_ping_pong(burn1M) 100.28% 707.73ns 1.41M +// shmtx_r_bare_ping_pong(burn1M) 99.63% 712.37ns 1.40M +// folly_ticket_ping_pong(burn1M) 100.09% 709.05ns 1.41M +// boost_shared_ping_pong(burn1M) 94.09% 754.29ns 1.33M +// pthrd_rwlock_ping_pong(burn1M) 96.32% 736.82ns 1.36M // ============================================================================ int main(int argc, char** argv) {