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

Implement select #24

Merged
merged 16 commits into from
Jan 4, 2024
Merged

Implement select #24

merged 16 commits into from
Jan 4, 2024

Conversation

adamw
Copy link
Member

@adamw adamw commented Dec 29, 2023

Closes #5

Copy link

Benchmark results
Java:
(capacity)  Mode  Cnt     Score     Error  Units
BufferedBenchmark.array_blocking_queue                                      1  avgt   15  1157.398 ± 101.678  ns/op
BufferedBenchmark.array_blocking_queue:putToArrayBlockingQueue              1  avgt   15  1157.397 ± 101.681  ns/op
BufferedBenchmark.array_blocking_queue:takeFromArrayBlockingQueue           1  avgt   15  1157.400 ± 101.676  ns/op
BufferedBenchmark.array_blocking_queue                                     10  avgt   15   232.129 ±  22.932  ns/op
BufferedBenchmark.array_blocking_queue:putToArrayBlockingQueue             10  avgt   15   232.131 ±  22.932  ns/op
BufferedBenchmark.array_blocking_queue:takeFromArrayBlockingQueue          10  avgt   15   232.127 ±  22.932  ns/op
BufferedBenchmark.array_blocking_queue                                    100  avgt   15   165.051 ±  15.128  ns/op
BufferedBenchmark.array_blocking_queue:putToArrayBlockingQueue            100  avgt   15   165.051 ±  15.129  ns/op
BufferedBenchmark.array_blocking_queue:takeFromArrayBlockingQueue         100  avgt   15   165.050 ±  15.128  ns/op
BufferedBenchmark.channel                                                   1  avgt   15   195.118 ±  25.642  ns/op
BufferedBenchmark.channel:receiveFromChannel                                1  avgt   15   195.117 ±  25.642  ns/op
BufferedBenchmark.channel:sendToChannel                                     1  avgt   15   195.118 ±  25.641  ns/op
BufferedBenchmark.channel                                                  10  avgt   15   190.816 ±  13.000  ns/op
BufferedBenchmark.channel:receiveFromChannel                               10  avgt   15   190.814 ±  12.998  ns/op
BufferedBenchmark.channel:sendToChannel                                    10  avgt   15   190.818 ±  13.002  ns/op
BufferedBenchmark.channel                                                 100  avgt   15   150.523 ±   9.745  ns/op
BufferedBenchmark.channel:receiveFromChannel                              100  avgt   15   150.524 ±   9.745  ns/op
BufferedBenchmark.channel:sendToChannel                                   100  avgt   15   150.523 ±   9.745  ns/op
BufferedBenchmark.channel_iterative                                         1  avgt   15   206.583 ±   6.114  ns/op
BufferedBenchmark.channel_iterative                                        10  avgt   15   164.398 ±   5.914  ns/op
BufferedBenchmark.channel_iterative                                       100  avgt   15   154.036 ±   7.810  ns/op
RendezvousBenchmark.channel                                               N/A  avgt   15   182.515 ±   4.648  ns/op
RendezvousBenchmark.channel:receiveFromChannel                            N/A  avgt   15   182.514 ±   4.647  ns/op
RendezvousBenchmark.channel:sendToChannel                                 N/A  avgt   15   182.516 ±   4.650  ns/op
RendezvousBenchmark.channel_iterative                                     N/A  avgt   15   191.491 ±   8.239  ns/op
RendezvousBenchmark.exchanger                                             N/A  avgt   15    95.858 ±   3.172  ns/op
RendezvousBenchmark.exchanger:exchange1                                   N/A  avgt   15    95.858 ±   3.172  ns/op
RendezvousBenchmark.exchanger:exchange2                                   N/A  avgt   15    95.858 ±   3.171  ns/op
RendezvousBenchmark.synchronous_queue                                     N/A  avgt   15   202.168 ±   7.896  ns/op
RendezvousBenchmark.synchronous_queue:putToSynchronousQueue               N/A  avgt   15   202.167 ±   7.896  ns/op
RendezvousBenchmark.synchronous_queue:takeFromSynchronousQueue            N/A  avgt   15   202.168 ±   7.897  ns/op

Kotlin:
(capacity)  Mode  Cnt    Score   Error  Units
BufferedKotlinBenchmark.sendReceiveUsingDefaultDispatcher             1  avgt   15  113.972 ± 1.120  ns/op
BufferedKotlinBenchmark.sendReceiveUsingDefaultDispatcher            10  avgt   15   53.154 ± 1.758  ns/op
BufferedKotlinBenchmark.sendReceiveUsingDefaultDispatcher           100  avgt   15   32.196 ± 0.227  ns/op
RendezvousKotlinBenchmark.sendReceiveUsingDefaultDispatcher         N/A  avgt   15  141.725 ± 2.386  ns/op

Copy link

Benchmark results
Java:
(capacity)  Mode  Cnt     Score    Error  Units
BufferedBenchmark.array_blocking_queue                                      1  avgt   15  1186.522 ± 95.536  ns/op
BufferedBenchmark.array_blocking_queue:putToArrayBlockingQueue              1  avgt   15  1186.521 ± 95.533  ns/op
BufferedBenchmark.array_blocking_queue:takeFromArrayBlockingQueue           1  avgt   15  1186.523 ± 95.538  ns/op
BufferedBenchmark.array_blocking_queue                                     10  avgt   15   235.293 ± 17.119  ns/op
BufferedBenchmark.array_blocking_queue:putToArrayBlockingQueue             10  avgt   15   235.293 ± 17.119  ns/op
BufferedBenchmark.array_blocking_queue:takeFromArrayBlockingQueue          10  avgt   15   235.294 ± 17.119  ns/op
BufferedBenchmark.array_blocking_queue                                    100  avgt   15   157.754 ± 13.474  ns/op
BufferedBenchmark.array_blocking_queue:putToArrayBlockingQueue            100  avgt   15   157.754 ± 13.474  ns/op
BufferedBenchmark.array_blocking_queue:takeFromArrayBlockingQueue         100  avgt   15   157.754 ± 13.474  ns/op
BufferedBenchmark.channel                                                   1  avgt   15   211.117 ±  4.074  ns/op
BufferedBenchmark.channel:receiveFromChannel                                1  avgt   15   211.115 ±  4.077  ns/op
BufferedBenchmark.channel:sendToChannel                                     1  avgt   15   211.120 ±  4.070  ns/op
BufferedBenchmark.channel                                                  10  avgt   15   183.389 ± 14.546  ns/op
BufferedBenchmark.channel:receiveFromChannel                               10  avgt   15   183.389 ± 14.547  ns/op
BufferedBenchmark.channel:sendToChannel                                    10  avgt   15   183.389 ± 14.546  ns/op
BufferedBenchmark.channel                                                 100  avgt   15   137.811 ±  8.241  ns/op
BufferedBenchmark.channel:receiveFromChannel                              100  avgt   15   137.812 ±  8.241  ns/op
BufferedBenchmark.channel:sendToChannel                                   100  avgt   15   137.811 ±  8.241  ns/op
BufferedBenchmark.channel_iterative                                         1  avgt   15   212.765 ±  5.390  ns/op
BufferedBenchmark.channel_iterative                                        10  avgt   15   181.071 ± 16.855  ns/op
BufferedBenchmark.channel_iterative                                       100  avgt   15   152.722 ±  6.584  ns/op
RendezvousBenchmark.channel                                               N/A  avgt   15   185.696 ±  4.824  ns/op
RendezvousBenchmark.channel:receiveFromChannel                            N/A  avgt   15   185.694 ±  4.824  ns/op
RendezvousBenchmark.channel:sendToChannel                                 N/A  avgt   15   185.698 ±  4.825  ns/op
RendezvousBenchmark.channel_iterative                                     N/A  avgt   15   177.156 ±  4.213  ns/op
RendezvousBenchmark.exchanger                                             N/A  avgt   15    95.719 ±  3.962  ns/op
RendezvousBenchmark.exchanger:exchange1                                   N/A  avgt   15    95.719 ±  3.962  ns/op
RendezvousBenchmark.exchanger:exchange2                                   N/A  avgt   15    95.718 ±  3.962  ns/op
RendezvousBenchmark.synchronous_queue                                     N/A  avgt   15   199.263 ± 16.030  ns/op
RendezvousBenchmark.synchronous_queue:putToSynchronousQueue               N/A  avgt   15   199.266 ± 16.031  ns/op
RendezvousBenchmark.synchronous_queue:takeFromSynchronousQueue            N/A  avgt   15   199.261 ± 16.030  ns/op

Kotlin:
(capacity)  Mode  Cnt    Score   Error  Units
BufferedKotlinBenchmark.sendReceiveUsingDefaultDispatcher             1  avgt   15  112.189 ± 2.580  ns/op
BufferedKotlinBenchmark.sendReceiveUsingDefaultDispatcher            10  avgt   15   52.274 ± 2.535  ns/op
BufferedKotlinBenchmark.sendReceiveUsingDefaultDispatcher           100  avgt   15   32.894 ± 1.251  ns/op
RendezvousKotlinBenchmark.sendReceiveUsingDefaultDispatcher         N/A  avgt   15  139.486 ± 3.549  ns/op

Copy link

github-actions bot commented Jan 2, 2024

Benchmark results
Java:
(capacity)  Mode  Cnt     Score     Error  Units
BufferedBenchmark.array_blocking_queue                                      1  avgt   15  1235.972 ± 145.250  ns/op
BufferedBenchmark.array_blocking_queue:putToArrayBlockingQueue              1  avgt   15  1235.970 ± 145.249  ns/op
BufferedBenchmark.array_blocking_queue:takeFromArrayBlockingQueue           1  avgt   15  1235.975 ± 145.250  ns/op
BufferedBenchmark.array_blocking_queue                                     10  avgt   15   236.963 ±  25.814  ns/op
BufferedBenchmark.array_blocking_queue:putToArrayBlockingQueue             10  avgt   15   236.963 ±  25.812  ns/op
BufferedBenchmark.array_blocking_queue:takeFromArrayBlockingQueue          10  avgt   15   236.964 ±  25.816  ns/op
BufferedBenchmark.array_blocking_queue                                    100  avgt   15   151.878 ±  10.193  ns/op
BufferedBenchmark.array_blocking_queue:putToArrayBlockingQueue            100  avgt   15   151.878 ±  10.193  ns/op
BufferedBenchmark.array_blocking_queue:takeFromArrayBlockingQueue         100  avgt   15   151.878 ±  10.192  ns/op
BufferedBenchmark.channel                                                   1  avgt   15   205.948 ±  20.831  ns/op
BufferedBenchmark.channel:receiveFromChannel                                1  avgt   15   205.947 ±  20.834  ns/op
BufferedBenchmark.channel:sendToChannel                                     1  avgt   15   205.949 ±  20.828  ns/op
BufferedBenchmark.channel                                                  10  avgt   15   184.066 ±  10.131  ns/op
BufferedBenchmark.channel:receiveFromChannel                               10  avgt   15   184.067 ±  10.128  ns/op
BufferedBenchmark.channel:sendToChannel                                    10  avgt   15   184.065 ±  10.134  ns/op
BufferedBenchmark.channel                                                 100  avgt   15   164.028 ±  21.691  ns/op
BufferedBenchmark.channel:receiveFromChannel                              100  avgt   15   164.029 ±  21.695  ns/op
BufferedBenchmark.channel:sendToChannel                                   100  avgt   15   164.027 ±  21.688  ns/op
BufferedBenchmark.channel_iterative                                         1  avgt   15   199.004 ±  21.268  ns/op
BufferedBenchmark.channel_iterative                                        10  avgt   15   173.349 ±  14.040  ns/op
BufferedBenchmark.channel_iterative                                       100  avgt   15   141.283 ±  19.229  ns/op
RendezvousBenchmark.channel                                               N/A  avgt   15   198.252 ±   4.899  ns/op
RendezvousBenchmark.channel:receiveFromChannel                            N/A  avgt   15   198.252 ±   4.900  ns/op
RendezvousBenchmark.channel:sendToChannel                                 N/A  avgt   15   198.252 ±   4.897  ns/op
RendezvousBenchmark.channel_iterative                                     N/A  avgt   15   186.020 ±   7.003  ns/op
RendezvousBenchmark.exchanger                                             N/A  avgt   15    98.556 ±   1.692  ns/op
RendezvousBenchmark.exchanger:exchange1                                   N/A  avgt   15    98.556 ±   1.692  ns/op
RendezvousBenchmark.exchanger:exchange2                                   N/A  avgt   15    98.557 ±   1.692  ns/op
RendezvousBenchmark.synchronous_queue                                     N/A  avgt   15   205.448 ±   8.044  ns/op
RendezvousBenchmark.synchronous_queue:putToSynchronousQueue               N/A  avgt   15   205.447 ±   8.040  ns/op
RendezvousBenchmark.synchronous_queue:takeFromSynchronousQueue            N/A  avgt   15   205.448 ±   8.048  ns/op
SelectBenchmark.channel                                                   N/A  avgt   15   236.384 ±  21.463  ns/op
SelectBenchmark.channel:receiveFromChannelUsingSelect                     N/A  avgt   15   236.383 ±  21.462  ns/op
SelectBenchmark.channel:sendToChannel                                     N/A  avgt   15   236.384 ±  21.463  ns/op
SelectBenchmark.single_channel_iterative                                  N/A  avgt   15   213.813 ±  17.009  ns/op
SelectBenchmark.two_channels_iterative                                    N/A  avgt   15   232.893 ±  38.467  ns/op

Kotlin:
(capacity)  Mode  Cnt    Score    Error  Units
BufferedKotlinBenchmark.sendReceiveUsingDefaultDispatcher                              1  avgt   15  111.150 ±  4.643  ns/op
BufferedKotlinBenchmark.sendReceiveUsingDefaultDispatcher                             10  avgt   15   52.372 ±  1.065  ns/op
BufferedKotlinBenchmark.sendReceiveUsingDefaultDispatcher                            100  avgt   15   32.391 ±  0.876  ns/op
RendezvousKotlinBenchmark.sendReceiveUsingDefaultDispatcher                          N/A  avgt   15  146.237 ±  5.365  ns/op
SelectKotlinBenchmark.sendReceiveUsingSelect_singleChannel_defaultDispatcher         N/A  avgt   15  253.445 ±  7.453  ns/op
SelectKotlinBenchmark.sendReceiveUsingSelect_twoChannels_defaultDispatcher           N/A  avgt   15  341.964 ± 19.881  ns/op

Copy link

github-actions bot commented Jan 2, 2024

Benchmark results
Java:
(capacity)  Mode  Cnt     Score     Error  Units
BufferedBenchmark.array_blocking_queue                                      1  avgt   15  1174.895 ± 141.075  ns/op
BufferedBenchmark.array_blocking_queue:putToArrayBlockingQueue              1  avgt   15  1174.896 ± 141.074  ns/op
BufferedBenchmark.array_blocking_queue:takeFromArrayBlockingQueue           1  avgt   15  1174.894 ± 141.076  ns/op
BufferedBenchmark.array_blocking_queue                                     10  avgt   15   232.582 ±  17.006  ns/op
BufferedBenchmark.array_blocking_queue:putToArrayBlockingQueue             10  avgt   15   232.583 ±  17.007  ns/op
BufferedBenchmark.array_blocking_queue:takeFromArrayBlockingQueue          10  avgt   15   232.582 ±  17.005  ns/op
BufferedBenchmark.array_blocking_queue                                    100  avgt   15   146.192 ±  17.259  ns/op
BufferedBenchmark.array_blocking_queue:putToArrayBlockingQueue            100  avgt   15   146.193 ±  17.259  ns/op
BufferedBenchmark.array_blocking_queue:takeFromArrayBlockingQueue         100  avgt   15   146.191 ±  17.260  ns/op
BufferedBenchmark.channel                                                   1  avgt   15   225.058 ±  13.177  ns/op
BufferedBenchmark.channel:receiveFromChannel                                1  avgt   15   225.058 ±  13.173  ns/op
BufferedBenchmark.channel:sendToChannel                                     1  avgt   15   225.058 ±  13.180  ns/op
BufferedBenchmark.channel                                                  10  avgt   15   185.970 ±   8.623  ns/op
BufferedBenchmark.channel:receiveFromChannel                               10  avgt   15   185.971 ±   8.626  ns/op
BufferedBenchmark.channel:sendToChannel                                    10  avgt   15   185.969 ±   8.621  ns/op
BufferedBenchmark.channel                                                 100  avgt   15   148.209 ±   4.018  ns/op
BufferedBenchmark.channel:receiveFromChannel                              100  avgt   15   148.209 ±   4.018  ns/op
BufferedBenchmark.channel:sendToChannel                                   100  avgt   15   148.209 ±   4.018  ns/op
BufferedBenchmark.channel_iterative                                         1  avgt   15   201.558 ±   8.281  ns/op
BufferedBenchmark.channel_iterative                                        10  avgt   15   186.288 ±   7.063  ns/op
BufferedBenchmark.channel_iterative                                       100  avgt   15   135.884 ±   5.413  ns/op
RendezvousBenchmark.channel                                               N/A  avgt   15   194.741 ±  10.713  ns/op
RendezvousBenchmark.channel:receiveFromChannel                            N/A  avgt   15   194.740 ±  10.713  ns/op
RendezvousBenchmark.channel:sendToChannel                                 N/A  avgt   15   194.742 ±  10.713  ns/op
RendezvousBenchmark.channel_iterative                                     N/A  avgt   15   197.196 ±   7.689  ns/op
RendezvousBenchmark.exchanger                                             N/A  avgt   15    96.516 ±   4.325  ns/op
RendezvousBenchmark.exchanger:exchange1                                   N/A  avgt   15    96.517 ±   4.325  ns/op
RendezvousBenchmark.exchanger:exchange2                                   N/A  avgt   15    96.516 ±   4.325  ns/op
RendezvousBenchmark.synchronous_queue                                     N/A  avgt   15   202.050 ±   6.938  ns/op
RendezvousBenchmark.synchronous_queue:putToSynchronousQueue               N/A  avgt   15   202.050 ±   6.938  ns/op
RendezvousBenchmark.synchronous_queue:takeFromSynchronousQueue            N/A  avgt   15   202.050 ±   6.938  ns/op
SelectBenchmark.channel                                                   N/A  avgt   15   210.645 ±   4.797  ns/op
SelectBenchmark.channel:receiveFromChannelUsingSelect                     N/A  avgt   15   210.644 ±   4.798  ns/op
SelectBenchmark.channel:sendToChannel                                     N/A  avgt   15   210.646 ±   4.796  ns/op
SelectBenchmark.single_channel_iterative                                  N/A  avgt   15   211.281 ±  14.728  ns/op
SelectBenchmark.two_channels_iterative                                    N/A  avgt   15   259.711 ±  61.991  ns/op

Kotlin:
(capacity)  Mode  Cnt    Score    Error  Units
BufferedKotlinBenchmark.sendReceiveUsingDefaultDispatcher                              1  avgt   15  112.005 ±  3.625  ns/op
BufferedKotlinBenchmark.sendReceiveUsingDefaultDispatcher                             10  avgt   15   51.304 ±  2.056  ns/op
BufferedKotlinBenchmark.sendReceiveUsingDefaultDispatcher                            100  avgt   15   32.678 ±  0.746  ns/op
RendezvousKotlinBenchmark.sendReceiveUsingDefaultDispatcher                          N/A  avgt   15  141.715 ±  1.344  ns/op
SelectKotlinBenchmark.sendReceiveUsingSelect_singleChannel_defaultDispatcher         N/A  avgt   15  252.024 ± 11.521  ns/op
SelectKotlinBenchmark.sendReceiveUsingSelect_twoChannels_defaultDispatcher           N/A  avgt   15  334.294 ± 22.932  ns/op

Copy link

github-actions bot commented Jan 3, 2024

Benchmark results
Java:
(capacity)  Mode  Cnt     Score    Error  Units
BufferedBenchmark.array_blocking_queue                                      1  avgt   15  1150.968 ± 60.131  ns/op
BufferedBenchmark.array_blocking_queue:putToArrayBlockingQueue              1  avgt   15  1150.969 ± 60.129  ns/op
BufferedBenchmark.array_blocking_queue:takeFromArrayBlockingQueue           1  avgt   15  1150.967 ± 60.133  ns/op
BufferedBenchmark.array_blocking_queue                                     10  avgt   15   232.850 ± 14.198  ns/op
BufferedBenchmark.array_blocking_queue:putToArrayBlockingQueue             10  avgt   15   232.851 ± 14.196  ns/op
BufferedBenchmark.array_blocking_queue:takeFromArrayBlockingQueue          10  avgt   15   232.848 ± 14.199  ns/op
BufferedBenchmark.array_blocking_queue                                    100  avgt   15   154.283 ± 15.834  ns/op
BufferedBenchmark.array_blocking_queue:putToArrayBlockingQueue            100  avgt   15   154.283 ± 15.834  ns/op
BufferedBenchmark.array_blocking_queue:takeFromArrayBlockingQueue         100  avgt   15   154.282 ± 15.834  ns/op
BufferedBenchmark.channel                                                   1  avgt   15   201.258 ± 21.205  ns/op
BufferedBenchmark.channel:receiveFromChannel                                1  avgt   15   201.262 ± 21.196  ns/op
BufferedBenchmark.channel:sendToChannel                                     1  avgt   15   201.254 ± 21.214  ns/op
BufferedBenchmark.channel                                                  10  avgt   15   175.106 ±  8.832  ns/op
BufferedBenchmark.channel:receiveFromChannel                               10  avgt   15   175.106 ±  8.832  ns/op
BufferedBenchmark.channel:sendToChannel                                    10  avgt   15   175.105 ±  8.832  ns/op
BufferedBenchmark.channel                                                 100  avgt   15   143.983 ± 16.885  ns/op
BufferedBenchmark.channel:receiveFromChannel                              100  avgt   15   143.981 ± 16.884  ns/op
BufferedBenchmark.channel:sendToChannel                                   100  avgt   15   143.984 ± 16.886  ns/op
BufferedBenchmark.channel_iterative                                         1  avgt   15   212.299 ±  3.869  ns/op
BufferedBenchmark.channel_iterative                                        10  avgt   15   180.289 ±  9.865  ns/op
BufferedBenchmark.channel_iterative                                       100  avgt   15   150.653 ± 22.181  ns/op
RendezvousBenchmark.channel                                               N/A  avgt   15   195.795 ±  3.693  ns/op
RendezvousBenchmark.channel:receiveFromChannel                            N/A  avgt   15   195.793 ±  3.690  ns/op
RendezvousBenchmark.channel:sendToChannel                                 N/A  avgt   15   195.798 ±  3.695  ns/op
RendezvousBenchmark.channel_iterative                                     N/A  avgt   15   180.473 ±  9.986  ns/op
RendezvousBenchmark.exchanger                                             N/A  avgt   15    99.432 ±  2.731  ns/op
RendezvousBenchmark.exchanger:exchange1                                   N/A  avgt   15    99.432 ±  2.730  ns/op
RendezvousBenchmark.exchanger:exchange2                                   N/A  avgt   15    99.432 ±  2.731  ns/op
RendezvousBenchmark.synchronous_queue                                     N/A  avgt   15   195.135 ±  4.661  ns/op
RendezvousBenchmark.synchronous_queue:putToSynchronousQueue               N/A  avgt   15   195.133 ±  4.664  ns/op
RendezvousBenchmark.synchronous_queue:takeFromSynchronousQueue            N/A  avgt   15   195.136 ±  4.659  ns/op
SelectBenchmark.channel                                                   N/A  avgt   15   243.669 ± 25.138  ns/op
SelectBenchmark.channel:receiveFromChannelUsingSelect                     N/A  avgt   15   243.665 ± 25.137  ns/op
SelectBenchmark.channel:sendToChannel                                     N/A  avgt   15   243.673 ± 25.140  ns/op
SelectBenchmark.single_channel_iterative                                  N/A  avgt   15   208.894 ±  6.450  ns/op
SelectBenchmark.two_channels_iterative                                    N/A  avgt   15   259.004 ± 64.000  ns/op

Kotlin:
(capacity)  Mode  Cnt    Score    Error  Units
BufferedKotlinBenchmark.sendReceiveUsingDefaultDispatcher                              1  avgt   15  118.591 ± 15.776  ns/op
BufferedKotlinBenchmark.sendReceiveUsingDefaultDispatcher                             10  avgt   15   52.226 ±  1.052  ns/op
BufferedKotlinBenchmark.sendReceiveUsingDefaultDispatcher                            100  avgt   15   32.017 ±  0.236  ns/op
RendezvousKotlinBenchmark.sendReceiveUsingDefaultDispatcher                          N/A  avgt   15  144.673 ±  5.181  ns/op
SelectKotlinBenchmark.sendReceiveUsingSelect_singleChannel_defaultDispatcher         N/A  avgt   15  246.301 ±  9.268  ns/op
SelectKotlinBenchmark.sendReceiveUsingSelect_twoChannels_defaultDispatcher           N/A  avgt   15  331.942 ± 17.141  ns/op

Copy link

github-actions bot commented Jan 3, 2024

Benchmark results
Java:
(capacity)  Mode  Cnt     Score    Error  Units
BufferedBenchmark.array_blocking_queue                                      1  avgt   15  1181.170 ± 94.313  ns/op
BufferedBenchmark.array_blocking_queue:putToArrayBlockingQueue              1  avgt   15  1181.174 ± 94.314  ns/op
BufferedBenchmark.array_blocking_queue:takeFromArrayBlockingQueue           1  avgt   15  1181.166 ± 94.313  ns/op
BufferedBenchmark.array_blocking_queue                                     10  avgt   15   236.054 ± 17.690  ns/op
BufferedBenchmark.array_blocking_queue:putToArrayBlockingQueue             10  avgt   15   236.055 ± 17.689  ns/op
BufferedBenchmark.array_blocking_queue:takeFromArrayBlockingQueue          10  avgt   15   236.053 ± 17.691  ns/op
BufferedBenchmark.array_blocking_queue                                    100  avgt   15   145.824 ± 13.470  ns/op
BufferedBenchmark.array_blocking_queue:putToArrayBlockingQueue            100  avgt   15   145.824 ± 13.470  ns/op
BufferedBenchmark.array_blocking_queue:takeFromArrayBlockingQueue         100  avgt   15   145.824 ± 13.470  ns/op
BufferedBenchmark.channel                                                   1  avgt   15   209.487 ±  4.451  ns/op
BufferedBenchmark.channel:receiveFromChannel                                1  avgt   15   209.490 ±  4.451  ns/op
BufferedBenchmark.channel:sendToChannel                                     1  avgt   15   209.484 ±  4.451  ns/op
BufferedBenchmark.channel                                                  10  avgt   15   169.204 ±  7.840  ns/op
BufferedBenchmark.channel:receiveFromChannel                               10  avgt   15   169.205 ±  7.839  ns/op
BufferedBenchmark.channel:sendToChannel                                    10  avgt   15   169.203 ±  7.842  ns/op
BufferedBenchmark.channel                                                 100  avgt   15   147.997 ±  3.802  ns/op
BufferedBenchmark.channel:receiveFromChannel                              100  avgt   15   147.997 ±  3.802  ns/op
BufferedBenchmark.channel:sendToChannel                                   100  avgt   15   147.997 ±  3.802  ns/op
BufferedBenchmark.channel_iterative                                         1  avgt   15   204.973 ± 14.533  ns/op
BufferedBenchmark.channel_iterative                                        10  avgt   15   185.083 ±  9.433  ns/op
BufferedBenchmark.channel_iterative                                       100  avgt   15   130.239 ±  7.256  ns/op
RendezvousBenchmark.channel                                               N/A  avgt   15   190.836 ±  4.492  ns/op
RendezvousBenchmark.channel:receiveFromChannel                            N/A  avgt   15   190.836 ±  4.492  ns/op
RendezvousBenchmark.channel:sendToChannel                                 N/A  avgt   15   190.837 ±  4.492  ns/op
RendezvousBenchmark.channel_iterative                                     N/A  avgt   15   183.322 ±  9.179  ns/op
RendezvousBenchmark.exchanger                                             N/A  avgt   15    93.124 ±  4.241  ns/op
RendezvousBenchmark.exchanger:exchange1                                   N/A  avgt   15    93.124 ±  4.241  ns/op
RendezvousBenchmark.exchanger:exchange2                                   N/A  avgt   15    93.123 ±  4.241  ns/op
RendezvousBenchmark.synchronous_queue                                     N/A  avgt   15   205.813 ±  3.084  ns/op
RendezvousBenchmark.synchronous_queue:putToSynchronousQueue               N/A  avgt   15   205.816 ±  3.081  ns/op
RendezvousBenchmark.synchronous_queue:takeFromSynchronousQueue            N/A  avgt   15   205.810 ±  3.087  ns/op
SelectBenchmark.channel                                                   N/A  avgt   15   223.541 ± 20.808  ns/op
SelectBenchmark.channel:receiveFromChannelUsingSelect                     N/A  avgt   15   223.542 ± 20.806  ns/op
SelectBenchmark.channel:sendToChannel                                     N/A  avgt   15   223.541 ± 20.810  ns/op
SelectBenchmark.single_channel_iterative                                  N/A  avgt   15   219.529 ± 22.735  ns/op
SelectBenchmark.two_channels_iterative                                    N/A  avgt   15   256.614 ± 63.012  ns/op

Kotlin:
(capacity)  Mode  Cnt    Score    Error  Units
BufferedKotlinBenchmark.sendReceiveUsingDefaultDispatcher                              1  avgt   15  115.177 ±  2.373  ns/op
BufferedKotlinBenchmark.sendReceiveUsingDefaultDispatcher                             10  avgt   15   50.277 ±  1.194  ns/op
BufferedKotlinBenchmark.sendReceiveUsingDefaultDispatcher                            100  avgt   15   32.961 ±  1.229  ns/op
RendezvousKotlinBenchmark.sendReceiveUsingDefaultDispatcher                          N/A  avgt   15  146.892 ±  6.755  ns/op
SelectKotlinBenchmark.sendReceiveUsingSelect_singleChannel_defaultDispatcher         N/A  avgt   15  251.129 ±  9.985  ns/op
SelectKotlinBenchmark.sendReceiveUsingSelect_twoChannels_defaultDispatcher           N/A  avgt   15  344.696 ± 18.624  ns/op

Copy link

github-actions bot commented Jan 4, 2024

Benchmark results
Java:
(capacity)  Mode  Cnt     Score     Error  Units
BufferedBenchmark.array_blocking_queue                                      1  avgt   15  1160.602 ±  97.858  ns/op
BufferedBenchmark.array_blocking_queue:putToArrayBlockingQueue              1  avgt   15  1160.597 ±  97.858  ns/op
BufferedBenchmark.array_blocking_queue:takeFromArrayBlockingQueue           1  avgt   15  1160.607 ±  97.858  ns/op
BufferedBenchmark.array_blocking_queue                                     10  avgt   15   223.369 ±  15.936  ns/op
BufferedBenchmark.array_blocking_queue:putToArrayBlockingQueue             10  avgt   15   223.370 ±  15.938  ns/op
BufferedBenchmark.array_blocking_queue:takeFromArrayBlockingQueue          10  avgt   15   223.369 ±  15.935  ns/op
BufferedBenchmark.array_blocking_queue                                    100  avgt   15   152.674 ±  19.782  ns/op
BufferedBenchmark.array_blocking_queue:putToArrayBlockingQueue            100  avgt   15   152.674 ±  19.782  ns/op
BufferedBenchmark.array_blocking_queue:takeFromArrayBlockingQueue         100  avgt   15   152.674 ±  19.782  ns/op
BufferedBenchmark.channel                                                   1  avgt   15   208.040 ±   6.045  ns/op
BufferedBenchmark.channel:receiveFromChannel                                1  avgt   15   208.037 ±   6.046  ns/op
BufferedBenchmark.channel:sendToChannel                                     1  avgt   15   208.044 ±   6.045  ns/op
BufferedBenchmark.channel                                                  10  avgt   15   177.470 ±   5.550  ns/op
BufferedBenchmark.channel:receiveFromChannel                               10  avgt   15   177.470 ±   5.549  ns/op
BufferedBenchmark.channel:sendToChannel                                    10  avgt   15   177.469 ±   5.550  ns/op
BufferedBenchmark.channel                                                 100  avgt   15   132.261 ±   4.320  ns/op
BufferedBenchmark.channel:receiveFromChannel                              100  avgt   15   132.262 ±   4.320  ns/op
BufferedBenchmark.channel:sendToChannel                                   100  avgt   15   132.260 ±   4.320  ns/op
BufferedBenchmark.channel_iterative                                         1  avgt   15   216.378 ±   4.637  ns/op
BufferedBenchmark.channel_iterative                                        10  avgt   15   169.987 ±   7.476  ns/op
BufferedBenchmark.channel_iterative                                       100  avgt   15   135.928 ±   8.897  ns/op
RendezvousBenchmark.channel                                               N/A  avgt   15   191.212 ±   7.622  ns/op
RendezvousBenchmark.channel:receiveFromChannel                            N/A  avgt   15   191.212 ±   7.624  ns/op
RendezvousBenchmark.channel:sendToChannel                                 N/A  avgt   15   191.213 ±   7.619  ns/op
RendezvousBenchmark.channel_iterative                                     N/A  avgt   15   177.967 ±   5.002  ns/op
RendezvousBenchmark.exchanger                                             N/A  avgt   15    95.072 ±   4.374  ns/op
RendezvousBenchmark.exchanger:exchange1                                   N/A  avgt   15    95.072 ±   4.374  ns/op
RendezvousBenchmark.exchanger:exchange2                                   N/A  avgt   15    95.072 ±   4.374  ns/op
RendezvousBenchmark.synchronous_queue                                     N/A  avgt   15   198.605 ±   7.298  ns/op
RendezvousBenchmark.synchronous_queue:putToSynchronousQueue               N/A  avgt   15   198.604 ±   7.295  ns/op
RendezvousBenchmark.synchronous_queue:takeFromSynchronousQueue            N/A  avgt   15   198.605 ±   7.300  ns/op
SelectBenchmark.channel                                                   N/A  avgt   15   316.763 ± 125.582  ns/op
SelectBenchmark.channel:receiveFromChannelUsingSelect                     N/A  avgt   15   316.763 ± 125.583  ns/op
SelectBenchmark.channel:sendToChannel                                     N/A  avgt   15   316.762 ± 125.581  ns/op
SelectBenchmark.single_channel_iterative                                  N/A  avgt   15   225.111 ±  20.800  ns/op
SelectBenchmark.two_channels_iterative                                    N/A  avgt   15   257.941 ±  61.111  ns/op

Kotlin:
(capacity)  Mode  Cnt    Score   Error  Units
BufferedKotlinBenchmark.sendReceiveUsingDefaultDispatcher                              1  avgt   15  112.395 ± 6.368  ns/op
BufferedKotlinBenchmark.sendReceiveUsingDefaultDispatcher                             10  avgt   15   50.445 ± 1.905  ns/op
BufferedKotlinBenchmark.sendReceiveUsingDefaultDispatcher                            100  avgt   15   33.356 ± 1.850  ns/op
RendezvousKotlinBenchmark.sendReceiveUsingDefaultDispatcher                          N/A  avgt   15  146.561 ± 9.395  ns/op
SelectKotlinBenchmark.sendReceiveUsingSelect_singleChannel_defaultDispatcher         N/A  avgt   15  259.868 ± 4.936  ns/op
SelectKotlinBenchmark.sendReceiveUsingSelect_twoChannels_defaultDispatcher           N/A  avgt   15  361.178 ± 1.855  ns/op

@adamw adamw merged commit 004ef17 into main Jan 4, 2024
1 check passed
@adamw adamw deleted the select branch January 4, 2024 13:01
Copy link

github-actions bot commented Jan 4, 2024

Benchmark results
Java:
(capacity)  Mode  Cnt     Score     Error  Units
BufferedBenchmark.array_blocking_queue                                      1  avgt   15  1135.743 ± 113.184  ns/op
BufferedBenchmark.array_blocking_queue:putToArrayBlockingQueue              1  avgt   15  1135.746 ± 113.186  ns/op
BufferedBenchmark.array_blocking_queue:takeFromArrayBlockingQueue           1  avgt   15  1135.740 ± 113.182  ns/op
BufferedBenchmark.array_blocking_queue                                     10  avgt   15   226.517 ±  25.689  ns/op
BufferedBenchmark.array_blocking_queue:putToArrayBlockingQueue             10  avgt   15   226.517 ±  25.689  ns/op
BufferedBenchmark.array_blocking_queue:takeFromArrayBlockingQueue          10  avgt   15   226.516 ±  25.689  ns/op
BufferedBenchmark.array_blocking_queue                                    100  avgt   15   143.305 ±  12.634  ns/op
BufferedBenchmark.array_blocking_queue:putToArrayBlockingQueue            100  avgt   15   143.305 ±  12.634  ns/op
BufferedBenchmark.array_blocking_queue:takeFromArrayBlockingQueue         100  avgt   15   143.305 ±  12.634  ns/op
BufferedBenchmark.channel                                                   1  avgt   15   209.795 ±   5.226  ns/op
BufferedBenchmark.channel:receiveFromChannel                                1  avgt   15   209.793 ±   5.231  ns/op
BufferedBenchmark.channel:sendToChannel                                     1  avgt   15   209.796 ±   5.222  ns/op
BufferedBenchmark.channel                                                  10  avgt   15   176.716 ±  15.399  ns/op
BufferedBenchmark.channel:receiveFromChannel                               10  avgt   15   176.714 ±  15.399  ns/op
BufferedBenchmark.channel:sendToChannel                                    10  avgt   15   176.718 ±  15.399  ns/op
BufferedBenchmark.channel                                                 100  avgt   15   123.667 ±   7.158  ns/op
BufferedBenchmark.channel:receiveFromChannel                              100  avgt   15   123.667 ±   7.157  ns/op
BufferedBenchmark.channel:sendToChannel                                   100  avgt   15   123.668 ±   7.159  ns/op
BufferedBenchmark.channel_iterative                                         1  avgt   15   210.705 ±   8.061  ns/op
BufferedBenchmark.channel_iterative                                        10  avgt   15   174.777 ±   9.907  ns/op
BufferedBenchmark.channel_iterative                                       100  avgt   15   150.865 ±  10.156  ns/op
RendezvousBenchmark.channel                                               N/A  avgt   15   184.925 ±   5.224  ns/op
RendezvousBenchmark.channel:receiveFromChannel                            N/A  avgt   15   184.924 ±   5.222  ns/op
RendezvousBenchmark.channel:sendToChannel                                 N/A  avgt   15   184.925 ±   5.226  ns/op
RendezvousBenchmark.channel_iterative                                     N/A  avgt   15   180.357 ±  16.146  ns/op
RendezvousBenchmark.exchanger                                             N/A  avgt   15    93.897 ±   2.653  ns/op
RendezvousBenchmark.exchanger:exchange1                                   N/A  avgt   15    93.897 ±   2.653  ns/op
RendezvousBenchmark.exchanger:exchange2                                   N/A  avgt   15    93.897 ±   2.653  ns/op
RendezvousBenchmark.synchronous_queue                                     N/A  avgt   15   205.832 ±   4.707  ns/op
RendezvousBenchmark.synchronous_queue:putToSynchronousQueue               N/A  avgt   15   205.832 ±   4.708  ns/op
RendezvousBenchmark.synchronous_queue:takeFromSynchronousQueue            N/A  avgt   15   205.831 ±   4.706  ns/op
SelectBenchmark.channel                                                   N/A  avgt   15   227.530 ±   8.669  ns/op
SelectBenchmark.channel:receiveFromChannelUsingSelect                     N/A  avgt   15   227.530 ±   8.668  ns/op
SelectBenchmark.channel:sendToChannel                                     N/A  avgt   15   227.531 ±   8.670  ns/op
SelectBenchmark.single_channel_iterative                                  N/A  avgt   15   364.075 ± 128.569  ns/op
SelectBenchmark.two_channels_iterative                                    N/A  avgt   15   251.090 ±  51.122  ns/op

Kotlin:
(capacity)  Mode  Cnt    Score    Error  Units
BufferedKotlinBenchmark.sendReceiveUsingDefaultDispatcher                              1  avgt   15  111.367 ±  4.642  ns/op
BufferedKotlinBenchmark.sendReceiveUsingDefaultDispatcher                             10  avgt   15   52.088 ±  1.380  ns/op
BufferedKotlinBenchmark.sendReceiveUsingDefaultDispatcher                            100  avgt   15   31.912 ±  0.295  ns/op
RendezvousKotlinBenchmark.sendReceiveUsingDefaultDispatcher                          N/A  avgt   15  147.316 ±  6.226  ns/op
SelectKotlinBenchmark.sendReceiveUsingSelect_singleChannel_defaultDispatcher         N/A  avgt   15  256.616 ±  5.301  ns/op
SelectKotlinBenchmark.sendReceiveUsingSelect_twoChannels_defaultDispatcher           N/A  avgt   15  329.200 ± 12.635  ns/op

Copy link

github-actions bot commented Jan 4, 2024

Benchmark results
Java:
(capacity)  Mode  Cnt     Score     Error  Units
BufferedBenchmark.array_blocking_queue                                      1  avgt   15  1236.644 ± 110.842  ns/op
BufferedBenchmark.array_blocking_queue:putToArrayBlockingQueue              1  avgt   15  1236.659 ± 110.847  ns/op
BufferedBenchmark.array_blocking_queue:takeFromArrayBlockingQueue           1  avgt   15  1236.630 ± 110.838  ns/op
BufferedBenchmark.array_blocking_queue                                     10  avgt   15   221.596 ±  20.609  ns/op
BufferedBenchmark.array_blocking_queue:putToArrayBlockingQueue             10  avgt   15   221.597 ±  20.608  ns/op
BufferedBenchmark.array_blocking_queue:takeFromArrayBlockingQueue          10  avgt   15   221.595 ±  20.609  ns/op
BufferedBenchmark.array_blocking_queue                                    100  avgt   15   153.508 ±  16.629  ns/op
BufferedBenchmark.array_blocking_queue:putToArrayBlockingQueue            100  avgt   15   153.508 ±  16.629  ns/op
BufferedBenchmark.array_blocking_queue:takeFromArrayBlockingQueue         100  avgt   15   153.508 ±  16.629  ns/op
BufferedBenchmark.channel                                                   1  avgt   15   207.086 ±  17.840  ns/op
BufferedBenchmark.channel:receiveFromChannel                                1  avgt   15   207.082 ±  17.837  ns/op
BufferedBenchmark.channel:sendToChannel                                     1  avgt   15   207.090 ±  17.843  ns/op
BufferedBenchmark.channel                                                  10  avgt   15   170.851 ±   4.746  ns/op
BufferedBenchmark.channel:receiveFromChannel                               10  avgt   15   170.852 ±   4.747  ns/op
BufferedBenchmark.channel:sendToChannel                                    10  avgt   15   170.850 ±   4.745  ns/op
BufferedBenchmark.channel                                                 100  avgt   15   152.689 ±  19.584  ns/op
BufferedBenchmark.channel:receiveFromChannel                              100  avgt   15   152.689 ±  19.584  ns/op
BufferedBenchmark.channel:sendToChannel                                   100  avgt   15   152.689 ±  19.583  ns/op
BufferedBenchmark.channel_iterative                                         1  avgt   15   213.380 ±   7.429  ns/op
BufferedBenchmark.channel_iterative                                        10  avgt   15   174.932 ±   7.341  ns/op
BufferedBenchmark.channel_iterative                                       100  avgt   15   130.798 ±  11.102  ns/op
RendezvousBenchmark.channel                                               N/A  avgt   15   193.240 ±   5.366  ns/op
RendezvousBenchmark.channel:receiveFromChannel                            N/A  avgt   15   193.239 ±   5.365  ns/op
RendezvousBenchmark.channel:sendToChannel                                 N/A  avgt   15   193.241 ±   5.367  ns/op
RendezvousBenchmark.channel_iterative                                     N/A  avgt   15   189.958 ±   4.406  ns/op
RendezvousBenchmark.exchanger                                             N/A  avgt   15   103.749 ±  10.163  ns/op
RendezvousBenchmark.exchanger:exchange1                                   N/A  avgt   15   103.749 ±  10.164  ns/op
RendezvousBenchmark.exchanger:exchange2                                   N/A  avgt   15   103.749 ±  10.163  ns/op
RendezvousBenchmark.synchronous_queue                                     N/A  avgt   15   202.319 ±  17.118  ns/op
RendezvousBenchmark.synchronous_queue:putToSynchronousQueue               N/A  avgt   15   202.319 ±  17.117  ns/op
RendezvousBenchmark.synchronous_queue:takeFromSynchronousQueue            N/A  avgt   15   202.320 ±  17.119  ns/op
SelectBenchmark.channel                                                   N/A  avgt   15   326.199 ± 134.842  ns/op
SelectBenchmark.channel:receiveFromChannelUsingSelect                     N/A  avgt   15   326.203 ± 134.850  ns/op
SelectBenchmark.channel:sendToChannel                                     N/A  avgt   15   326.196 ± 134.834  ns/op
SelectBenchmark.single_channel_iterative                                  N/A  avgt   15   308.473 ± 132.940  ns/op
SelectBenchmark.two_channels_iterative                                    N/A  avgt   15   260.359 ±  33.723  ns/op

Kotlin:
(capacity)  Mode  Cnt    Score    Error  Units
BufferedKotlinBenchmark.sendReceiveUsingDefaultDispatcher                              1  avgt   15  110.014 ±  4.452  ns/op
BufferedKotlinBenchmark.sendReceiveUsingDefaultDispatcher                             10  avgt   15   52.587 ±  0.854  ns/op
BufferedKotlinBenchmark.sendReceiveUsingDefaultDispatcher                            100  avgt   15   32.036 ±  0.124  ns/op
RendezvousKotlinBenchmark.sendReceiveUsingDefaultDispatcher                          N/A  avgt   15  145.400 ±  1.695  ns/op
SelectKotlinBenchmark.sendReceiveUsingSelect_singleChannel_defaultDispatcher         N/A  avgt   15  253.109 ± 12.690  ns/op
SelectKotlinBenchmark.sendReceiveUsingSelect_twoChannels_defaultDispatcher           N/A  avgt   15  353.462 ±  9.078  ns/op

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.

Support selecting from multiple channels
1 participant