Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Use volatiles & var handles instead of atomics #45

Merged
merged 9 commits into from
Feb 13, 2024
Merged

Conversation

adamw
Copy link
Member

@adamw adamw commented Feb 10, 2024

Closes #15

Copy link

Benchmark results
Java:
(capacity)  (chainLength)  (parallelism)  Mode  Cnt     Score    Error  Units
BufferedBenchmark.arrayBlockingQueue             1            N/A            N/A  avgt    5  1064.017 ± 45.253  ns/op
BufferedBenchmark.arrayBlockingQueue            10            N/A            N/A  avgt    5   196.087 ± 53.846  ns/op
BufferedBenchmark.arrayBlockingQueue           100            N/A            N/A  avgt    5   118.181 ±  5.530  ns/op
BufferedBenchmark.channel                        1            N/A            N/A  avgt    5   218.944 ± 15.451  ns/op
BufferedBenchmark.channel                       10            N/A            N/A  avgt    5   181.335 ± 21.019  ns/op
BufferedBenchmark.channel                      100            N/A            N/A  avgt    5   159.739 ± 35.174  ns/op
ChainedBenchmark.channelChain                    0          10000            N/A  avgt    5  1026.615 ±  5.075  ns/op
ChainedBenchmark.channelChain                  100          10000            N/A  avgt    5    37.682 ±  1.699  ns/op
ChainedBenchmark.queueChain                      0          10000            N/A  avgt    5   127.851 ± 44.923  ns/op
ChainedBenchmark.queueChain                    100          10000            N/A  avgt    5     9.272 ±  0.170  ns/op
ParallelBenchmark.parallelChannels               0            N/A          10000  avgt    5  1016.851 ± 15.853  ns/op
ParallelBenchmark.parallelChannels             100            N/A          10000  avgt    5    43.811 ±  0.638  ns/op
ParallelBenchmark.parallelQueues                 0            N/A          10000  avgt    5   126.506 ± 22.808  ns/op
ParallelBenchmark.parallelQueues               100            N/A          10000  avgt    5    12.934 ±  0.267  ns/op
RendezvousBenchmark.channel                    N/A            N/A            N/A  avgt    5   201.012 ± 27.653  ns/op
RendezvousBenchmark.exchanger                  N/A            N/A            N/A  avgt    5    89.271 ± 19.119  ns/op
RendezvousBenchmark.synchronousQueue           N/A            N/A            N/A  avgt    5   699.960 ± 26.130  ns/op
SelectBenchmark.selectWithSingleClause         N/A            N/A            N/A  avgt    5   233.280 ± 45.556  ns/op
SelectBenchmark.selectWithTwoClauses           N/A            N/A            N/A  avgt    5   203.364 ±  6.262  ns/op

Kotlin:
(capacity)  (chainLength)  (parallelism)  Mode  Cnt    Score   Error  Units
BufferedKotlinBenchmark.channel_defaultDispatcher                        1            N/A            N/A  avgt    5  110.761 ± 1.575  ns/op
BufferedKotlinBenchmark.channel_defaultDispatcher                       10            N/A            N/A  avgt    5   53.239 ± 0.553  ns/op
BufferedKotlinBenchmark.channel_defaultDispatcher                      100            N/A            N/A  avgt    5   32.310 ± 0.703  ns/op
ChainedKotlinBenchmark.channelChain_defaultDispatcher                    0          10000            N/A  avgt    5   60.136 ± 3.818  ns/op
ChainedKotlinBenchmark.channelChain_defaultDispatcher                  100          10000            N/A  avgt    5   15.137 ± 0.486  ns/op
ChainedKotlinBenchmark.channelChain_eventLoop                            0          10000            N/A  avgt    5   96.760 ± 3.729  ns/op
ChainedKotlinBenchmark.channelChain_eventLoop                          100          10000            N/A  avgt    5   30.893 ± 0.678  ns/op
ParallelKotlinBenchmark.parallelChannels_defaultDispatcher               0            N/A          10000  avgt    5   66.592 ± 2.201  ns/op
ParallelKotlinBenchmark.parallelChannels_defaultDispatcher             100            N/A          10000  avgt    5   17.396 ± 2.642  ns/op
RendezvousKotlinBenchmark.channel_defaultDispatcher                    N/A            N/A            N/A  avgt    5  141.492 ± 1.779  ns/op
SelectKotlinBenchmark.selectWithSingleClause_defaultDispatcher         N/A            N/A            N/A  avgt    5  252.333 ± 5.404  ns/op
SelectKotlinBenchmark.selectWithTwoClauses_defaultDispatcher           N/A            N/A            N/A  avgt    5  345.870 ± 4.993  ns/op

Copy link

Benchmark results
Java:
(capacity)  (chainLength)  (parallelism)  Mode  Cnt     Score     Error  Units
BufferedBenchmark.arrayBlockingQueue             1            N/A            N/A  avgt    5  1023.368 ±  47.094  ns/op
BufferedBenchmark.arrayBlockingQueue            10            N/A            N/A  avgt    5   185.803 ±  30.125  ns/op
BufferedBenchmark.arrayBlockingQueue           100            N/A            N/A  avgt    5   109.388 ±   6.270  ns/op
BufferedBenchmark.channel                        1            N/A            N/A  avgt    5   205.846 ±  27.531  ns/op
BufferedBenchmark.channel                       10            N/A            N/A  avgt    5   177.904 ±  23.083  ns/op
BufferedBenchmark.channel                      100            N/A            N/A  avgt    5   146.108 ±  14.468  ns/op
ChainedBenchmark.channelChain                    0          10000            N/A  avgt    5  1022.412 ±  24.135  ns/op
ChainedBenchmark.channelChain                  100          10000            N/A  avgt    5    36.987 ±   2.490  ns/op
ChainedBenchmark.queueChain                      0          10000            N/A  avgt    5   116.652 ±  39.769  ns/op
ChainedBenchmark.queueChain                    100          10000            N/A  avgt    5    10.044 ±   0.136  ns/op
ParallelBenchmark.parallelChannels               0            N/A          10000  avgt    5  1011.786 ±   8.639  ns/op
ParallelBenchmark.parallelChannels             100            N/A          10000  avgt    5    43.860 ±   0.956  ns/op
ParallelBenchmark.parallelQueues                 0            N/A          10000  avgt    5   109.244 ±   5.477  ns/op
ParallelBenchmark.parallelQueues               100            N/A          10000  avgt    5    13.005 ±   0.622  ns/op
RendezvousBenchmark.channel                    N/A            N/A            N/A  avgt    5   199.937 ±  35.596  ns/op
RendezvousBenchmark.exchanger                  N/A            N/A            N/A  avgt    5    86.709 ±  15.931  ns/op
RendezvousBenchmark.synchronousQueue           N/A            N/A            N/A  avgt    5   635.181 ± 116.326  ns/op
SelectBenchmark.selectWithSingleClause         N/A            N/A            N/A  avgt    5   229.060 ±  15.302  ns/op
SelectBenchmark.selectWithTwoClauses           N/A            N/A            N/A  avgt    5   214.236 ±  13.935  ns/op

Kotlin:
(capacity)  (chainLength)  (parallelism)  Mode  Cnt    Score    Error  Units
BufferedKotlinBenchmark.channel_defaultDispatcher                        1            N/A            N/A  avgt    5  109.287 ± 10.511  ns/op
BufferedKotlinBenchmark.channel_defaultDispatcher                       10            N/A            N/A  avgt    5   51.938 ±  2.466  ns/op
BufferedKotlinBenchmark.channel_defaultDispatcher                      100            N/A            N/A  avgt    5   31.926 ±  0.375  ns/op
ChainedKotlinBenchmark.channelChain_defaultDispatcher                    0          10000            N/A  avgt    5   59.048 ±  4.171  ns/op
ChainedKotlinBenchmark.channelChain_defaultDispatcher                  100          10000            N/A  avgt    5   14.702 ±  0.674  ns/op
ChainedKotlinBenchmark.channelChain_eventLoop                            0          10000            N/A  avgt    5   97.380 ±  2.419  ns/op
ChainedKotlinBenchmark.channelChain_eventLoop                          100          10000            N/A  avgt    5   30.922 ±  0.195  ns/op
ParallelKotlinBenchmark.parallelChannels_defaultDispatcher               0            N/A          10000  avgt    5   89.306 ±  3.243  ns/op
ParallelKotlinBenchmark.parallelChannels_defaultDispatcher             100            N/A          10000  avgt    5   16.209 ±  0.181  ns/op
RendezvousKotlinBenchmark.channel_defaultDispatcher                    N/A            N/A            N/A  avgt    5  137.241 ±  1.296  ns/op
SelectKotlinBenchmark.selectWithSingleClause_defaultDispatcher         N/A            N/A            N/A  avgt    5  264.097 ±  1.430  ns/op
SelectKotlinBenchmark.selectWithTwoClauses_defaultDispatcher           N/A            N/A            N/A  avgt    5  319.361 ±  3.589  ns/op

Copy link

Benchmark results
Java:
(capacity)  (chainLength)  (parallelism)  Mode  Cnt     Score     Error  Units
BufferedBenchmark.arrayBlockingQueue             1            N/A            N/A  avgt    5  1042.459 ± 215.910  ns/op
BufferedBenchmark.arrayBlockingQueue            10            N/A            N/A  avgt    5   184.222 ±  42.282  ns/op
BufferedBenchmark.arrayBlockingQueue           100            N/A            N/A  avgt    5   117.989 ±   4.556  ns/op
BufferedBenchmark.channel                        1            N/A            N/A  avgt    5   239.651 ±  44.572  ns/op
BufferedBenchmark.channel                       10            N/A            N/A  avgt    5   197.434 ±  19.101  ns/op
BufferedBenchmark.channel                      100            N/A            N/A  avgt    5   154.547 ±  27.814  ns/op
ChainedBenchmark.channelChain                    0          10000            N/A  avgt    5  1028.543 ±  13.547  ns/op
ChainedBenchmark.channelChain                  100          10000            N/A  avgt    5    38.501 ±   1.214  ns/op
ChainedBenchmark.queueChain                      0          10000            N/A  avgt    5   108.465 ±   7.330  ns/op
ChainedBenchmark.queueChain                    100          10000            N/A  avgt    5     9.421 ±   0.239  ns/op
ParallelBenchmark.parallelChannels               0            N/A          10000  avgt    5  1012.729 ±  14.184  ns/op
ParallelBenchmark.parallelChannels             100            N/A          10000  avgt    5    44.826 ±   2.524  ns/op
ParallelBenchmark.parallelQueues                 0            N/A          10000  avgt    5   108.990 ±  16.862  ns/op
ParallelBenchmark.parallelQueues               100            N/A          10000  avgt    5    13.633 ±   0.341  ns/op
RendezvousBenchmark.channel                    N/A            N/A            N/A  avgt    5   228.189 ±  44.038  ns/op
RendezvousBenchmark.exchanger                  N/A            N/A            N/A  avgt    5    92.621 ±  13.420  ns/op
RendezvousBenchmark.synchronousQueue           N/A            N/A            N/A  avgt    5   609.335 ±  51.773  ns/op
SelectBenchmark.selectWithSingleClause         N/A            N/A            N/A  avgt    5   263.861 ±  48.069  ns/op
SelectBenchmark.selectWithTwoClauses           N/A            N/A            N/A  avgt    5   250.203 ±  10.029  ns/op

Kotlin:
(capacity)  (chainLength)  (parallelism)  Mode  Cnt    Score   Error  Units
BufferedKotlinBenchmark.channel_defaultDispatcher                        1            N/A            N/A  avgt    5  117.727 ± 1.890  ns/op
BufferedKotlinBenchmark.channel_defaultDispatcher                       10            N/A            N/A  avgt    5   52.672 ± 1.176  ns/op
BufferedKotlinBenchmark.channel_defaultDispatcher                      100            N/A            N/A  avgt    5   31.957 ± 0.381  ns/op
ChainedKotlinBenchmark.channelChain_defaultDispatcher                    0          10000            N/A  avgt    5   57.444 ± 3.345  ns/op
ChainedKotlinBenchmark.channelChain_defaultDispatcher                  100          10000            N/A  avgt    5   14.706 ± 0.524  ns/op
ChainedKotlinBenchmark.channelChain_eventLoop                            0          10000            N/A  avgt    5   94.183 ± 4.337  ns/op
ChainedKotlinBenchmark.channelChain_eventLoop                          100          10000            N/A  avgt    5   31.638 ± 0.245  ns/op
ParallelKotlinBenchmark.parallelChannels_defaultDispatcher               0            N/A          10000  avgt    5   71.608 ± 9.974  ns/op
ParallelKotlinBenchmark.parallelChannels_defaultDispatcher             100            N/A          10000  avgt    5   15.237 ± 0.747  ns/op
RendezvousKotlinBenchmark.channel_defaultDispatcher                    N/A            N/A            N/A  avgt    5  144.250 ± 1.403  ns/op
SelectKotlinBenchmark.selectWithSingleClause_defaultDispatcher         N/A            N/A            N/A  avgt    5  262.230 ± 1.545  ns/op
SelectKotlinBenchmark.selectWithTwoClauses_defaultDispatcher           N/A            N/A            N/A  avgt    5  342.331 ± 2.089  ns/op

Copy link

Benchmark results
Java:
(capacity)  (chainLength)  (parallelism)  Mode  Cnt     Score     Error  Units
BufferedBenchmark.arrayBlockingQueue             1            N/A            N/A  avgt    5  1031.935 ± 101.604  ns/op
BufferedBenchmark.arrayBlockingQueue            10            N/A            N/A  avgt    5   185.498 ±  55.936  ns/op
BufferedBenchmark.arrayBlockingQueue           100            N/A            N/A  avgt    5   114.884 ±   2.935  ns/op
BufferedBenchmark.channel                        1            N/A            N/A  avgt    5   217.424 ±  34.532  ns/op
BufferedBenchmark.channel                       10            N/A            N/A  avgt    5   186.638 ±  55.385  ns/op
BufferedBenchmark.channel                      100            N/A            N/A  avgt    5   151.278 ±  34.008  ns/op
ChainedBenchmark.channelChain                    0          10000            N/A  avgt    5  1018.738 ±   6.204  ns/op
ChainedBenchmark.channelChain                  100          10000            N/A  avgt    5    36.990 ±   1.984  ns/op
ChainedBenchmark.queueChain                      0          10000            N/A  avgt    5   103.374 ±  10.069  ns/op
ChainedBenchmark.queueChain                    100          10000            N/A  avgt    5     9.769 ±   0.144  ns/op
ParallelBenchmark.parallelChannels               0            N/A          10000  avgt    5  1019.334 ±  18.417  ns/op
ParallelBenchmark.parallelChannels             100            N/A          10000  avgt    5    42.995 ±   0.547  ns/op
ParallelBenchmark.parallelQueues                 0            N/A          10000  avgt    5   123.261 ±  56.626  ns/op
ParallelBenchmark.parallelQueues               100            N/A          10000  avgt    5    16.155 ±   1.997  ns/op
RendezvousBenchmark.channel                    N/A            N/A            N/A  avgt    5   209.355 ±  34.655  ns/op
RendezvousBenchmark.exchanger                  N/A            N/A            N/A  avgt    5    89.884 ±  17.890  ns/op
RendezvousBenchmark.synchronousQueue           N/A            N/A            N/A  avgt    5   613.185 ± 169.898  ns/op
SelectBenchmark.selectWithSingleClause         N/A            N/A            N/A  avgt    5   249.589 ±  48.461  ns/op
SelectBenchmark.selectWithTwoClauses           N/A            N/A            N/A  avgt    5   226.880 ±  16.776  ns/op

Kotlin:
(capacity)  (chainLength)  (parallelism)  Mode  Cnt    Score    Error  Units
BufferedKotlinBenchmark.channel_defaultDispatcher                        1            N/A            N/A  avgt    5  109.455 ±  1.710  ns/op
BufferedKotlinBenchmark.channel_defaultDispatcher                       10            N/A            N/A  avgt    5   53.887 ±  2.680  ns/op
BufferedKotlinBenchmark.channel_defaultDispatcher                      100            N/A            N/A  avgt    5   32.054 ±  0.626  ns/op
ChainedKotlinBenchmark.channelChain_defaultDispatcher                    0          10000            N/A  avgt    5   63.639 ±  5.604  ns/op
ChainedKotlinBenchmark.channelChain_defaultDispatcher                  100          10000            N/A  avgt    5   15.183 ±  0.712  ns/op
ChainedKotlinBenchmark.channelChain_eventLoop                            0          10000            N/A  avgt    5   96.763 ± 17.340  ns/op
ChainedKotlinBenchmark.channelChain_eventLoop                          100          10000            N/A  avgt    5   30.863 ±  0.342  ns/op
ParallelKotlinBenchmark.parallelChannels_defaultDispatcher               0            N/A          10000  avgt    5   68.289 ±  1.576  ns/op
ParallelKotlinBenchmark.parallelChannels_defaultDispatcher             100            N/A          10000  avgt    5   15.862 ±  0.626  ns/op
RendezvousKotlinBenchmark.channel_defaultDispatcher                    N/A            N/A            N/A  avgt    5  146.475 ±  0.573  ns/op
SelectKotlinBenchmark.selectWithSingleClause_defaultDispatcher         N/A            N/A            N/A  avgt    5  255.162 ±  3.779  ns/op
SelectKotlinBenchmark.selectWithTwoClauses_defaultDispatcher           N/A            N/A            N/A  avgt    5  332.618 ±  8.943  ns/op

# Conflicts:
#	core/src/main/java/com/softwaremill/jox/Channel.java
Copy link

Benchmark results
Java:
(capacity)  (chainLength)  (parallelism)  Mode  Cnt     Score     Error  Units
BufferedBenchmark.arrayBlockingQueue             1            N/A            N/A  avgt    5  1036.379 ± 115.931  ns/op
BufferedBenchmark.arrayBlockingQueue            10            N/A            N/A  avgt    5   185.245 ±  42.938  ns/op
BufferedBenchmark.arrayBlockingQueue           100            N/A            N/A  avgt    5   116.835 ±   4.820  ns/op
BufferedBenchmark.channel                        1            N/A            N/A  avgt    5   196.366 ±  50.816  ns/op
BufferedBenchmark.channel                       10            N/A            N/A  avgt    5   178.386 ±  44.532  ns/op
BufferedBenchmark.channel                      100            N/A            N/A  avgt    5   145.859 ±  11.693  ns/op
ChainedBenchmark.channelChain                    0          10000            N/A  avgt    5  1025.913 ±  20.594  ns/op
ChainedBenchmark.channelChain                  100          10000            N/A  avgt    5    35.012 ±   2.698  ns/op
ChainedBenchmark.queueChain                      0          10000            N/A  avgt    5   125.040 ±  19.508  ns/op
ChainedBenchmark.queueChain                    100          10000            N/A  avgt    5    10.247 ±   0.339  ns/op
ParallelBenchmark.parallelChannels               0            N/A          10000  avgt    5  1008.349 ±  24.088  ns/op
ParallelBenchmark.parallelChannels             100            N/A          10000  avgt    5    43.031 ±   1.764  ns/op
ParallelBenchmark.parallelQueues                 0            N/A          10000  avgt    5   118.122 ±  55.635  ns/op
ParallelBenchmark.parallelQueues               100            N/A          10000  avgt    5    16.324 ±   1.763  ns/op
RendezvousBenchmark.channel                    N/A            N/A            N/A  avgt    5   224.040 ±  29.807  ns/op
RendezvousBenchmark.exchanger                  N/A            N/A            N/A  avgt    5    88.997 ±  14.917  ns/op
RendezvousBenchmark.synchronousQueue           N/A            N/A            N/A  avgt    5   596.663 ±  59.209  ns/op
SelectBenchmark.selectWithSingleClause         N/A            N/A            N/A  avgt    5   251.300 ±  33.096  ns/op
SelectBenchmark.selectWithTwoClauses           N/A            N/A            N/A  avgt    5   239.912 ±  28.853  ns/op

Kotlin:
(capacity)  (chainLength)  (parallelism)  Mode  Cnt    Score   Error  Units
BufferedKotlinBenchmark.channel_defaultDispatcher                        1            N/A            N/A  avgt    5  108.879 ± 3.855  ns/op
BufferedKotlinBenchmark.channel_defaultDispatcher                       10            N/A            N/A  avgt    5   50.636 ± 2.846  ns/op
BufferedKotlinBenchmark.channel_defaultDispatcher                      100            N/A            N/A  avgt    5   32.209 ± 1.136  ns/op
ChainedKotlinBenchmark.channelChain_defaultDispatcher                    0          10000            N/A  avgt    5   64.326 ± 0.757  ns/op
ChainedKotlinBenchmark.channelChain_defaultDispatcher                  100          10000            N/A  avgt    5   13.282 ± 0.384  ns/op
ChainedKotlinBenchmark.channelChain_eventLoop                            0          10000            N/A  avgt    5   93.923 ± 3.354  ns/op
ChainedKotlinBenchmark.channelChain_eventLoop                          100          10000            N/A  avgt    5   31.185 ± 0.405  ns/op
ParallelKotlinBenchmark.parallelChannels_defaultDispatcher               0            N/A          10000  avgt    5   64.351 ± 2.274  ns/op
ParallelKotlinBenchmark.parallelChannels_defaultDispatcher             100            N/A          10000  avgt    5   15.078 ± 0.212  ns/op
RendezvousKotlinBenchmark.channel_defaultDispatcher                    N/A            N/A            N/A  avgt    5  145.222 ± 0.586  ns/op
SelectKotlinBenchmark.selectWithSingleClause_defaultDispatcher         N/A            N/A            N/A  avgt    5  256.798 ± 1.845  ns/op
SelectKotlinBenchmark.selectWithTwoClauses_defaultDispatcher           N/A            N/A            N/A  avgt    5  315.290 ± 0.741  ns/op

Copy link

Benchmark results
Java:
(capacity)  (chainLength)  (parallelism)  Mode  Cnt     Score     Error  Units
BufferedBenchmark.arrayBlockingQueue             1            N/A            N/A  avgt    5  1065.247 ± 199.490  ns/op
BufferedBenchmark.arrayBlockingQueue            10            N/A            N/A  avgt    5   166.920 ±  38.600  ns/op
BufferedBenchmark.arrayBlockingQueue           100            N/A            N/A  avgt    5   117.085 ±   5.850  ns/op
BufferedBenchmark.channel                        1            N/A            N/A  avgt    5   196.986 ±  42.040  ns/op
BufferedBenchmark.channel                       10            N/A            N/A  avgt    5   178.155 ±  18.394  ns/op
BufferedBenchmark.channel                      100            N/A            N/A  avgt    5   138.355 ±  17.460  ns/op
ChainedBenchmark.channelChain                    0          10000            N/A  avgt    5  1031.783 ±  23.731  ns/op
ChainedBenchmark.channelChain                  100          10000            N/A  avgt    5    35.123 ±   1.223  ns/op
ChainedBenchmark.queueChain                      0          10000            N/A  avgt    5   105.054 ±  14.004  ns/op
ChainedBenchmark.queueChain                    100          10000            N/A  avgt    5    10.036 ±   0.463  ns/op
ParallelBenchmark.parallelChannels               0            N/A          10000  avgt    5  1015.822 ±  19.485  ns/op
ParallelBenchmark.parallelChannels             100            N/A          10000  avgt    5    40.478 ±   1.576  ns/op
ParallelBenchmark.parallelQueues                 0            N/A          10000  avgt    5   133.519 ±   6.759  ns/op
ParallelBenchmark.parallelQueues               100            N/A          10000  avgt    5    14.066 ±   0.289  ns/op
RendezvousBenchmark.channel                    N/A            N/A            N/A  avgt    5   215.109 ±  25.829  ns/op
RendezvousBenchmark.exchanger                  N/A            N/A            N/A  avgt    5    89.788 ±  10.470  ns/op
RendezvousBenchmark.synchronousQueue           N/A            N/A            N/A  avgt    5   686.118 ± 524.516  ns/op
SelectBenchmark.selectWithSingleClause         N/A            N/A            N/A  avgt    5   250.331 ±  58.681  ns/op
SelectBenchmark.selectWithTwoClauses           N/A            N/A            N/A  avgt    5   225.020 ±  18.204  ns/op

Kotlin:
(capacity)  (chainLength)  (parallelism)  Mode  Cnt    Score   Error  Units
BufferedKotlinBenchmark.channel_defaultDispatcher                        1            N/A            N/A  avgt    5  108.864 ± 1.571  ns/op
BufferedKotlinBenchmark.channel_defaultDispatcher                       10            N/A            N/A  avgt    5   51.593 ± 3.661  ns/op
BufferedKotlinBenchmark.channel_defaultDispatcher                      100            N/A            N/A  avgt    5   32.232 ± 0.381  ns/op
ChainedKotlinBenchmark.channelChain_defaultDispatcher                    0          10000            N/A  avgt    5   60.792 ± 0.935  ns/op
ChainedKotlinBenchmark.channelChain_defaultDispatcher                  100          10000            N/A  avgt    5   15.279 ± 1.276  ns/op
ChainedKotlinBenchmark.channelChain_eventLoop                            0          10000            N/A  avgt    5   94.226 ± 2.850  ns/op
ChainedKotlinBenchmark.channelChain_eventLoop                          100          10000            N/A  avgt    5   31.543 ± 0.176  ns/op
ParallelKotlinBenchmark.parallelChannels_defaultDispatcher               0            N/A          10000  avgt    5   90.470 ± 7.166  ns/op
ParallelKotlinBenchmark.parallelChannels_defaultDispatcher             100            N/A          10000  avgt    5   15.539 ± 0.270  ns/op
RendezvousKotlinBenchmark.channel_defaultDispatcher                    N/A            N/A            N/A  avgt    5  142.988 ± 1.530  ns/op
SelectKotlinBenchmark.selectWithSingleClause_defaultDispatcher         N/A            N/A            N/A  avgt    5  258.025 ± 1.563  ns/op
SelectKotlinBenchmark.selectWithTwoClauses_defaultDispatcher           N/A            N/A            N/A  avgt    5  314.446 ± 2.834  ns/op

Copy link

Benchmark results
Java:
(capacity)  (chainLength)  (parallelism)  Mode  Cnt     Score     Error  Units
BufferedBenchmark.arrayBlockingQueue             1            N/A            N/A  avgt    5  1029.215 ± 278.239  ns/op
BufferedBenchmark.arrayBlockingQueue            10            N/A            N/A  avgt    5   192.563 ±  44.722  ns/op
BufferedBenchmark.arrayBlockingQueue           100            N/A            N/A  avgt    5   113.946 ±  11.684  ns/op
BufferedBenchmark.channel                        1            N/A            N/A  avgt    5   200.951 ±  26.388  ns/op
BufferedBenchmark.channel                       10            N/A            N/A  avgt    5   168.874 ±   3.125  ns/op
BufferedBenchmark.channel                      100            N/A            N/A  avgt    5   145.252 ±  30.469  ns/op
ChainedBenchmark.channelChain                    0          10000            N/A  avgt    5  1040.108 ±  21.953  ns/op
ChainedBenchmark.channelChain                  100          10000            N/A  avgt    5    28.570 ±   1.781  ns/op
ChainedBenchmark.queueChain                      0          10000            N/A  avgt    5   124.682 ±  39.540  ns/op
ChainedBenchmark.queueChain                    100          10000            N/A  avgt    5    10.855 ±   0.338  ns/op
ParallelBenchmark.parallelChannels               0            N/A          10000  avgt    5  1011.146 ±  12.406  ns/op
ParallelBenchmark.parallelChannels             100            N/A          10000  avgt    5    34.475 ±   1.654  ns/op
ParallelBenchmark.parallelQueues                 0            N/A          10000  avgt    5   125.831 ±  43.770  ns/op
ParallelBenchmark.parallelQueues               100            N/A          10000  avgt    5    13.145 ±   0.327  ns/op
RendezvousBenchmark.channel                    N/A            N/A            N/A  avgt    5   192.495 ±  31.016  ns/op
RendezvousBenchmark.exchanger                  N/A            N/A            N/A  avgt    5    95.375 ±  18.735  ns/op
RendezvousBenchmark.synchronousQueue           N/A            N/A            N/A  avgt    5   583.325 ± 220.246  ns/op
SelectBenchmark.selectWithSingleClause         N/A            N/A            N/A  avgt    5   221.507 ±  36.354  ns/op
SelectBenchmark.selectWithTwoClauses           N/A            N/A            N/A  avgt    5   207.277 ±  12.248  ns/op

Kotlin:
(capacity)  (chainLength)  (parallelism)  Mode  Cnt    Score    Error  Units
BufferedKotlinBenchmark.channel_defaultDispatcher                        1            N/A            N/A  avgt    5  108.094 ±  0.425  ns/op
BufferedKotlinBenchmark.channel_defaultDispatcher                       10            N/A            N/A  avgt    5   52.964 ±  0.456  ns/op
BufferedKotlinBenchmark.channel_defaultDispatcher                      100            N/A            N/A  avgt    5   32.218 ±  0.595  ns/op
ChainedKotlinBenchmark.channelChain_defaultDispatcher                    0          10000            N/A  avgt    5   58.412 ±  0.770  ns/op
ChainedKotlinBenchmark.channelChain_defaultDispatcher                  100          10000            N/A  avgt    5   15.648 ±  1.061  ns/op
ChainedKotlinBenchmark.channelChain_eventLoop                            0          10000            N/A  avgt    5   98.466 ±  7.956  ns/op
ChainedKotlinBenchmark.channelChain_eventLoop                          100          10000            N/A  avgt    5   31.972 ±  0.758  ns/op
ParallelKotlinBenchmark.parallelChannels_defaultDispatcher               0            N/A          10000  avgt    5  102.764 ± 13.279  ns/op
ParallelKotlinBenchmark.parallelChannels_defaultDispatcher             100            N/A          10000  avgt    5   16.181 ±  1.585  ns/op
RendezvousKotlinBenchmark.channel_defaultDispatcher                    N/A            N/A            N/A  avgt    5  139.042 ±  5.767  ns/op
SelectKotlinBenchmark.selectWithSingleClause_defaultDispatcher         N/A            N/A            N/A  avgt    5  248.529 ±  2.404  ns/op
SelectKotlinBenchmark.selectWithTwoClauses_defaultDispatcher           N/A            N/A            N/A  avgt    5  342.408 ±  2.536  ns/op

@adamw adamw merged commit 260d06f into main Feb 13, 2024
4 checks passed
@adamw adamw deleted the remove-atomics branch February 13, 2024 08:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Try using VarHandles & fields instead of Atomics in Channel
1 participant