Re: Futexes ain't fast

Liste des GroupesRevenir à cl c++ 
Sujet : Re: Futexes ain't fast
De : Bonita.Montero (at) *nospam* gmail.com (Bonita Montero)
Groupes : comp.lang.c++
Date : 29. Aug 2024, 15:30:01
Autres entêtes
Organisation : A noiseless patient Spider
Message-ID : <vaq0l6$g4l$1@raubtier-asyl.eternal-september.org>
References : 1 2 3 4 5 6 7
User-Agent : Mozilla Thunderbird
This is by far the fastest code:
#if defined(_WIN32)
HANDLE hSem = CreateSemaphoreA( nullptr, 0, 0x7FFFFFFF, nullptr );
auto acquire = [&] { WaitForSingleObject( hSem, INFINITE ); };
auto release = [&] { ReleaseSemaphore( hSem, 1, nullptr ); };
#elif defined(__unix__)
sem_t sem;
sem_init( &sem, 0, 0 );
auto acquire = [&] { while( sem_wait( &sem ) == EINTR ); };
auto release = [&] { sem_post( &sem ); };
#endif
tests.emplace_back( "CT-Sema", [&]
{
if( ctFutex.exchange( 1, memory_order_acquire ) )
while( ctFutex.exchange( 2, memory_order_acquire ) )
acquire();
if( ctFutex.exchange( 0, memory_order_release ) == 2 )
release();
} );
Win32 / clang-cl 17:
               os-mutex  C++-futex   CT-Futex    CT-Sema std::mutex
           1       4.65       5.94      3.071       2.98      6.764
           2    14.7045     32.675     32.973     17.716    12.1095
           3     27.089     74.588    78.6393    21.6507    34.3997
           4    46.4147     239.19    113.077     27.355    43.3407
           5     75.028    355.392    238.347    41.7598     60.594
           6    117.501    499.727    317.775    54.0522    86.3667
           7    167.781    635.287    417.199    67.6324    123.395
           8    234.817    930.783    468.499    75.8145    162.341
           9    322.251    1138.95    470.976    87.6566    321.837
          10    238.418    1327.29    489.538    116.035    574.937
          11    300.167    1427.98    546.078    108.498    680.846
          12    307.098    1633.05    561.575    114.932    817.142
          13    393.239    1668.65    591.897    117.275    986.565
          14    428.639    1916.79    613.624    123.589    1166.91
          15    485.699    2016.33    665.218    125.904    1308.23
          16    518.917    2108.67    657.133    131.058    1513.81
          17    572.802    2135.33    687.547    133.357    1718.77
          18    645.806    2241.03    721.078    132.565    1826.97
          19     691.06    2361.12    758.582    135.032    2007.85
          20    775.441    2465.59    786.588    134.991    2221.41
          21    828.668    2574.05    809.456    132.644    2383.34
          22    936.921     2747.9    885.664    142.004     2648.4
          23    993.523    2822.49    932.029    147.374    2676.98
          24     1032.7    2595.27    820.291    151.084    2786.07
          25    1158.93     2779.5    863.279    156.877    3014.62
          26    1168.73    3018.08    899.575    164.815    3131.53
          27    1251.29    3176.82    967.667    171.316    3315.81
          28    1346.12    3303.94    987.722    176.866     3519.6
          29    1424.58    3519.44    1085.82    179.769    3654.11
          30    1519.82    3645.82    1140.33    187.544    3813.35
          31    1606.87    3812.95    1176.99    198.398    3993.18
          32    1677.32    3916.34    1228.59    200.068    4141.67
WSL2 / clang++ 18:
               os-mutex  C++-futex   CT-Futex    CT-Sema std::mutex
           1    4.29617    4.67628    3.00231    2.98276    4.08426
           2    25.5185    40.8151    14.6537    34.0173    30.4795
           3    38.0687    89.9109    42.4446     103.87    25.8821
           4    58.7989    173.328    118.727    101.993    61.0923
           5    72.2819    303.638    208.134    97.3057    75.2547
           6    88.2833    452.347    309.916    114.845     88.307
           7    104.865    603.253      403.1    121.215    103.206
           8    129.398    954.331    591.535    147.412    126.477
           9      161.5    1466.58    599.749    160.904    169.812
          10    187.113    1972.09    776.433    185.845    194.201
          11    214.369    2529.61    973.352    198.818     215.37
          12    238.561    3145.39    1040.81    216.217    241.529
          13    259.071    3704.29    1311.71    229.053    267.139
          14    282.885    4198.89    1481.91    240.272    282.778
          15    310.511    4641.19    1573.61    250.648    311.776
          16    331.789    5006.72    1843.99    265.364    333.325
          17    361.256    5472.61    1913.92     276.66    369.507
          18    388.476    6052.98    1966.87    295.109    396.636
          19    428.007    6550.83     2117.1    306.379    427.527
          20    464.908    7096.96    2130.08    319.971    468.546
          21    498.972    7644.56    2411.33    343.361    498.722
          22    535.433    8246.91    2509.67    349.584    537.437
          23    568.419    8615.14     2678.5    366.501    571.065
          24    614.441    9244.88    2722.57      382.8    616.703
          25    651.626    9871.74    2879.58     405.05    646.256
          26     693.28    10508.2    3235.45    413.181    679.392
          27    727.538    11087.6    3495.82    434.287    726.731
          28    769.384    11827.3    3586.65    444.818    760.604
          29    811.609    12374.2    3900.95    466.089    826.348
          30    866.692    12968.7    4177.86    484.856    856.896
          31    905.811    13480.7    4245.24    499.957    902.684
          32    942.654    5994.88    4393.53    516.779    955.453
Interesting, that Linux is much less performant here, maybe it's
because WSL.

Date Sujet#  Auteur
28 Aug 24 * Futexes ain't fast38Bonita Montero
28 Aug 24 +- Re: Futexes ain't fast1Bonita Montero
28 Aug 24 +* Re: Futexes ain't fast20Chris M. Thomasson
29 Aug 24 i`* Re: Futexes ain't fast19Bonita Montero
29 Aug 24 i `* Re: Futexes ain't fast18Chris M. Thomasson
29 Aug 24 i  +* Re: Futexes ain't fast16Chris M. Thomasson
29 Aug 24 i  i`* Re: Futexes ain't fast15Bonita Montero
29 Aug 24 i  i +* Re: Futexes ain't fast10Bonita Montero
29 Aug 24 i  i i`* Re: Futexes ain't fast9Bonita Montero
29 Aug 24 i  i i +* Re: Futexes ain't fast4Chris M. Thomasson
29 Aug 24 i  i i i+* Re: Futexes ain't fast2Bonita Montero
30 Aug 24 i  i i ii`- Re: Futexes ain't fast1Chris M. Thomasson
19 Sep 24 i  i i i`- Re: Futexes ain't fast1Chris M. Thomasson
29 Aug 24 i  i i +* Re: Futexes ain't fast3Chris M. Thomasson
30 Aug 24 i  i i i`* Re: Futexes ain't fast2Bonita Montero
30 Aug 24 i  i i i `- Re: Futexes ain't fast1Chris M. Thomasson
29 Aug 24 i  i i `- Re: Futexes ain't fast1Chris M. Thomasson
29 Aug 24 i  i `* Re: Futexes ain't fast4Chris M. Thomasson
29 Aug 24 i  i  `* Re: Futexes ain't fast3Chris M. Thomasson
29 Aug 24 i  i   `* Re: Futexes ain't fast2Bonita Montero
30 Aug 24 i  i    `- Re: Futexes ain't fast1Chris M. Thomasson
29 Aug 24 i  `- Re: Futexes ain't fast1Chris M. Thomasson
30 Aug 24 `* Re: Futexes ain't fast16jseigh
30 Aug 24  +* Re: Futexes ain't fast11Bonita Montero
30 Aug 24  i`* Re: Futexes ain't fast10Chris M. Thomasson
30 Aug 24  i `* Re: Futexes ain't fast9Bonita Montero
30 Aug 24  i  +* Re: Futexes ain't fast7Chris M. Thomasson
26 Sep 24  i  i`* Re: Futexes ain't fast6Bonita Montero
26 Sep 24  i  i `* Re: Futexes ain't fast5Chris M. Thomasson
26 Sep 24  i  i  `* Re: Futexes ain't fast4Bonita Montero
26 Sep 24  i  i   `* Re: Futexes ain't fast3Chris M. Thomasson
26 Sep 24  i  i    `* Re: Futexes ain't fast2Bonita Montero
26 Sep 24  i  i     `- Re: Futexes ain't fast1Chris M. Thomasson
30 Aug 24  i  `- Re: Futexes ain't fast1Chris M. Thomasson
30 Aug 24  `* Re: Futexes ain't fast4Chris M. Thomasson
31 Aug 24   `* Re: Futexes ain't fast3jseigh
2 Sep 24    +- Re: Futexes ain't fast1Chris M. Thomasson
15 Sep 24    `- Re: Futexes ain't fast1Chris M. Thomasson

Haut de la page

Les messages affichés proviennent d'usenet.

NewsPortal