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

Remove @preconcurrency from internal EventLoopFuture methods #2135

Merged
merged 10 commits into from
Jun 7, 2022

Conversation

dnadoba
Copy link
Member

@dnadoba dnadoba commented May 31, 2022

Motivation:

We want to remove @preconcurrency from our internal methods and fix the resulting sendable warnings/errors.

Modifications:

  • Remove @preconcurrency from internal methods and remove code duplication that is no longer necessary.
  • Introduce a new UnsafeMutableTransferBox that can be used to make non-Sendable values Sendable and mutable. It can be used to capture local mutable values in a @Sendable closure and mutate them from within the closure.
  • Use UnsafeMutableTransferBox where we currently capture mutable variables from @Sendable closures.

Result:

All internal only uses of @preconcurrency are now gone. Less code duplication.

no longer needed because  `@preconcurrency` is gone from the method definition.
@dnadoba dnadoba added the 🔼 needs-minor-version-bump For PRs that when merged cause a bump of the minor version, ie. 1.x.0 -> 1.(x+1).0 label May 31, 2022
@dnadoba
Copy link
Member Author

dnadoba commented May 31, 2022

@swift-nio-bot test perf please

@swift-server-bot
Copy link

performance report

build id: 141

timestamp: Tue May 31 09:05:08 UTC 2022

results

nameminmaxmeanstd
write_http_headers 0.041841595 0.042162621 0.04194412 0.00013921816304714703
http_headers_canonical_form 0.08721896 0.088221045 0.087837235 0.00032144592671275494
http_headers_canonical_form_trimming_whitespace 0.016506351 0.017025838 0.0165691824 0.00016118466766014454
http_headers_canonical_form_trimming_whitespace_from_short_string 0.014996332 0.015050907 0.015011883600000001 1.5254212294022795e-05
http_headers_canonical_form_trimming_whitespace_from_long_string 0.023867765 0.024381373 0.023990360999999998 0.00020605236812788925
bytebuffer_write_12MB_short_string_literals 0.165185929 0.170940291 0.1673064631 0.0018240455372442125
bytebuffer_write_12MB_short_calculated_strings 0.072586224 0.073513558 0.0729645453 0.00035470963337012185
bytebuffer_write_12MB_medium_string_literals 1.009969927 1.012639894 1.0115863307 0.0008578460020171829
bytebuffer_write_12MB_medium_calculated_strings 0.089454901 0.091148415 0.08982014990000001 0.0005020792438491156
bytebuffer_write_12MB_large_calculated_strings 0.1421585 0.143900141 0.142915755 0.0005882406858865057
bytebuffer_lots_of_rw 0.039778213 0.045097278 0.0409538593 0.0019902264817202773
bytebuffer_write_http_response_ascii_only_as_string 0.03276263 0.033701894 0.033196120600000004 0.0003237062987222981
bytebuffer_write_http_response_ascii_only_as_staticstring 0.024131249 0.024681109 0.0242256029 0.0001624382500127696
bytebuffer_write_http_response_some_nonascii_as_string 0.033040439 0.033720065 0.0332121195 0.00023670773360517767
bytebuffer_write_http_response_some_nonascii_as_staticstring 0.023862239 0.024408695 0.0239568226 0.00016183755821206803
no-net_http1_1k_reqs_1_conn 0.010814066 0.011164298 0.0108907586 0.00010329276619202308
http1_1k_reqs_1_conn 0.060365102 0.062175678 0.061271123999999996 0.0006338943397617621
http1_1k_reqs_100_conns 0.089160529 0.090177564 0.0896020712 0.00036621948717698954
future_whenallsucceed_100k_immediately_succeeded_off_loop 0.070763159 0.072420519 0.0713883153 0.0004656737594516023
future_whenallsucceed_100k_immediately_succeeded_on_loop 0.070885267 0.0783877 0.0720905846 0.002236539296062767
future_whenallsucceed_10k_deferred_off_loop 0.029751828 0.031830907 0.0300612523 0.0006297181703923055
future_whenallsucceed_10k_deferred_on_loop 0.012516612 0.013637979 0.012698389 0.0003323244252768001
future_whenallcomplete_100k_immediately_succeeded_off_loop 0.035193679 0.035872026 0.0354733342 0.00022710476204841477
future_whenallcomplete_100k_immediately_succeeded_on_loop 0.03473865 0.03531867 0.0349784679 0.0002309231198691464
future_whenallcomplete_10k_deferred_off_loop 0.022853936 0.023457037 0.0230331932 0.00020561522637295128
future_whenallcomplete_100k_deferred_on_loop 0.069513746 0.072210976 0.0700103197 0.0008180745098920518
future_reduce_10k_futures 0.015592012 0.016128513 0.0157111842 0.00015722638907907438
future_reduce_into_10k_futures 0.013323201 0.013827008 0.0134706576 0.0001428818993210827
channel_pipeline_1m_events 0.09776943 0.098087877 0.0979529851 0.00010505474429653925
websocket_encode_50b_space_at_front_100k_frames_cow 0.044753471 0.04519399 0.044894303600000005 0.00019890514873130424
websocket_encode_50b_space_at_front_1m_frames_cow_masking 0.611042035 0.614919358 0.6117505872 0.0011799416164323805
websocket_encode_1kb_space_at_front_1m_frames_cow 0.469314245 0.469860886 0.46948815890000006 0.00021545395609603662
websocket_encode_50b_no_space_at_front_100k_frames_cow 0.046015042 0.04646243 0.0461525937 0.0002046552681060687
websocket_encode_1kb_no_space_at_front_100k_frames_cow 0.046840418 0.047286808 0.0469376966 0.0001827655102147133
websocket_encode_50b_space_at_front_100k_frames 0.065407365 0.06582775 0.0655502615 0.00018595171671237197
websocket_encode_50b_space_at_front_10k_frames_masking 0.008085133 0.008119663 0.0080951776 1.063024617881536e-05
websocket_encode_1kb_space_at_front_10k_frames 0.012927764 0.013346738 0.0130068941 0.00012318546167687354
websocket_encode_50b_no_space_at_front_100k_frames 0.065581299 0.066216377 0.0657946491 0.00024894414655877696
websocket_encode_1kb_no_space_at_front_10k_frames 0.012242071 0.012333838 0.0122769846 3.026533181784813e-05
websocket_decode_125b_10k_frames 0.01242112 0.012917711 0.0125505172 0.00013913470007378536
websocket_decode_125b_with_a_masking_key_10k_frames 0.012887947 0.013456871 0.013064683099999998 0.0001492514437662907
websocket_decode_64kb_10k_frames 0.012744654 0.012892634 0.0128396439 3.9523078792157905e-05
websocket_decode_64kb_with_a_masking_key_10k_frames 0.013186275 0.01380302 0.0133751272 0.00017454449774057898
websocket_decode_64kb_+1_10k_frames 0.012707507 0.013245631 0.012911679700000001 0.00013355281518231764
websocket_decode_64kb_+1_with_a_masking_key_10k_frames 0.013165012 0.013767081 0.0133817516 0.0001627811310667727
circular_buffer_into_byte_buffer_1kb 0.033015804 0.033461469 0.0330781973 0.0001356366086079927
circular_buffer_into_byte_buffer_1mb 0.064672115 0.065124719 0.0648229379 0.0002008392600577508
byte_buffer_view_iterator_1mb 0.017565411 0.018043702 0.0176293494 0.00014611736861334715
byte_buffer_view_contains_12mb 0.052877288 0.053431932 0.0530487104 0.0002427325973994153
byte_to_message_decoder_decode_many_small 0.040473935 0.041017083 0.040599434000000004 0.000205529901756412
generate_10k_random_request_keys 0.089998361 0.090255506 0.09014280150000001 9.027927254082261e-05
bytebuffer_rw_10_uint32s 0.038552718 0.050471018 0.041463517699999994 0.003260091070866785
bytebuffer_multi_rw_10_uint32s 0.056266382 0.057894415 0.056812978199999996 0.0005653024934471029
lock_1_thread_10M_ops 0.159307072 0.16321952 0.1605934545 0.0013693689066959357
lock_2_threads_10M_ops 0.874296431 0.954113555 0.907574552 0.028111759118031293
lock_4_threads_10M_ops 0.905863823 0.934467087 0.9246733243999999 0.008043961939149693
lock_8_threads_10M_ops 0.938911281 0.978620584 0.9614001876 0.01061209672529046
schedule_100k_tasks 0.073939435 0.112611505 0.081222617 0.012124835351897819
schedule_and_run_100k_tasks 0.413598427 0.433194476 0.4211813642 0.006673638764015786
execute_100k_tasks 0.213184432 0.213502886 0.21328177199999998 8.94189379767445e-05
bytebufferview_copy_to_array_100k_times_1kb 0.011717875 0.011768749 0.0117427906 1.6055858579070366e-05
circularbuffer_copy_to_array_10k_times_1kb 0.02115871 0.021600659 0.0212561133 0.00017688393155654397
deadline_now_1M_times 0.027083897 0.027363673 0.0271659806 7.868037880381092e-05

comparison

name current previous winner diff
write_http_headers 0.041841595 0.04494874 current -6%
http_headers_canonical_form 0.08721896 0.08618971 previous 1%
http_headers_canonical_form_trimming_whitespace 0.016506351 0.016404275 previous 0%
http_headers_canonical_form_trimming_whitespace_from_short_string 0.014996332 0.014909545 previous 0%
http_headers_canonical_form_trimming_whitespace_from_long_string 0.023867765 0.023880567 current 0%
bytebuffer_write_12MB_short_string_literals 0.165185929 0.159650229 previous 3%
bytebuffer_write_12MB_short_calculated_strings 0.072586224 0.074616205 current -2%
bytebuffer_write_12MB_medium_string_literals 1.009969927 0.986515434 previous 2%
bytebuffer_write_12MB_medium_calculated_strings 0.089454901 0.089371476 previous 0%
bytebuffer_write_12MB_large_calculated_strings 0.1421585 0.143660807 current -1%
bytebuffer_lots_of_rw 0.039778213 0.0438909 current -9%
bytebuffer_write_http_response_ascii_only_as_string 0.03276263 0.033554623 current -2%
bytebuffer_write_http_response_ascii_only_as_staticstring 0.024131249 0.025243081 current -4%
bytebuffer_write_http_response_some_nonascii_as_string 0.033040439 0.032895021 previous 0%
bytebuffer_write_http_response_some_nonascii_as_staticstring 0.023862239 0.02498751 current -4%
no-net_http1_1k_reqs_1_conn 0.010814066 0.010932114 current -1%
http1_1k_reqs_1_conn 0.060365102 0.061019775 current -1%
http1_1k_reqs_100_conns 0.089160529 0.089786101 current 0%
future_whenallsucceed_100k_immediately_succeeded_off_loop 0.070763159 0.079238159 current -10%
future_whenallsucceed_100k_immediately_succeeded_on_loop 0.070885267 0.079403646 current -10%
future_whenallsucceed_10k_deferred_off_loop 0.029751828 0.030746471 current -3%
future_whenallsucceed_10k_deferred_on_loop 0.012516612 0.013532113 current -7%
future_whenallcomplete_100k_immediately_succeeded_off_loop 0.035193679 0.034848315 previous 0%
future_whenallcomplete_100k_immediately_succeeded_on_loop 0.03473865 0.03482763 current 0%
future_whenallcomplete_10k_deferred_off_loop 0.022853936 0.02280221 previous 0%
future_whenallcomplete_100k_deferred_on_loop 0.069513746 0.069156762 previous 0%
future_reduce_10k_futures 0.015592012 0.016073763 current -2%
future_reduce_into_10k_futures 0.013323201 0.014186241 current -6%
channel_pipeline_1m_events 0.09776943 0.097200487 previous 0%
websocket_encode_50b_space_at_front_100k_frames_cow 0.044753471 0.044755096 current 0%
websocket_encode_50b_space_at_front_1m_frames_cow_masking 0.611042035 0.606642781 previous 0%
websocket_encode_1kb_space_at_front_1m_frames_cow 0.469314245 0.469363237 current 0%
websocket_encode_50b_no_space_at_front_100k_frames_cow 0.046015042 0.044705859 previous 2%
websocket_encode_1kb_no_space_at_front_100k_frames_cow 0.046840418 0.047033902 current 0%
websocket_encode_50b_space_at_front_100k_frames 0.065407365 0.064693822 previous 1%
websocket_encode_50b_space_at_front_10k_frames_masking 0.008085133 0.008051824 previous 0%
websocket_encode_1kb_space_at_front_10k_frames 0.012927764 0.012761536 previous 1%
websocket_encode_50b_no_space_at_front_100k_frames 0.065581299 0.064412746 previous 1%
websocket_encode_1kb_no_space_at_front_10k_frames 0.012242071 0.012173678 previous 0%
websocket_decode_125b_10k_frames 0.01242112 0.01266064 current -1%
websocket_decode_125b_with_a_masking_key_10k_frames 0.012887947 0.012894587 current 0%
websocket_decode_64kb_10k_frames 0.012744654 0.012904563 current -1%
websocket_decode_64kb_with_a_masking_key_10k_frames 0.013186275 0.013493888 current -2%
websocket_decode_64kb_+1_10k_frames 0.012707507 0.012973875 current -2%
websocket_decode_64kb_+1_with_a_masking_key_10k_frames 0.013165012 0.013584908 current -3%
circular_buffer_into_byte_buffer_1kb 0.033015804 0.033008279 previous 0%
circular_buffer_into_byte_buffer_1mb 0.064672115 0.064673907 current 0%
byte_buffer_view_iterator_1mb 0.017565411 0.017568225 current 0%
byte_buffer_view_contains_12mb 0.052877288 0.052867013 previous 0%
byte_to_message_decoder_decode_many_small 0.040473935 0.040386191 previous 0%
generate_10k_random_request_keys 0.089998361 0.089246848 previous 0%
bytebuffer_rw_10_uint32s 0.038552718 0.037941617 previous 1%
bytebuffer_multi_rw_10_uint32s 0.056266382 0.056369823 current 0%
lock_1_thread_10M_ops 0.159307072 0.159332719 current 0%
lock_2_threads_10M_ops 0.874296431 0.892526582 current -2%
lock_4_threads_10M_ops 0.905863823 0.844787078 previous 7%
lock_8_threads_10M_ops 0.938911281 0.923208205 previous 1%
schedule_100k_tasks 0.073939435 0.073543081 previous 0%
schedule_and_run_100k_tasks 0.413598427 0.407285025 previous 1%
execute_100k_tasks 0.213184432 0.213286841 current 0%
bytebufferview_copy_to_array_100k_times_1kb 0.011717875 0.010611783 previous 10%
circularbuffer_copy_to_array_10k_times_1kb 0.02115871 0.021147771 previous 0%
deadline_now_1M_times 0.027083897 0.027131436 current 0%

significant differences found

@dnadoba
Copy link
Member Author

dnadoba commented May 31, 2022

@swift-nio-bot test perf please

@swift-server-bot
Copy link

performance report

build id: 142

timestamp: Tue May 31 09:10:48 UTC 2022

results

nameminmaxmeanstd
write_http_headers 0.041833049 0.042124505 0.041926576 0.00012531055534861283
http_headers_canonical_form 0.088358311 0.08901971 0.0886922703 0.0002543373130121371
http_headers_canonical_form_trimming_whitespace 0.016686863 0.016733653 0.016707091700000003 1.548652366880471e-05
http_headers_canonical_form_trimming_whitespace_from_short_string 0.015192984 0.015714047 0.0152682342 0.0001596619726845155
http_headers_canonical_form_trimming_whitespace_from_long_string 0.024121283 0.024643599 0.024246342400000002 0.00020667278781483426
bytebuffer_write_12MB_short_string_literals 0.165031397 0.170391047 0.1661983837 0.0019499128680484366
bytebuffer_write_12MB_short_calculated_strings 0.072477607 0.073270513 0.07284232090000001 0.00028640782908427175
bytebuffer_write_12MB_medium_string_literals 1.005495327 1.008555135 1.0067830852 0.0009198760129512317
bytebuffer_write_12MB_medium_calculated_strings 0.089464335 0.089987616 0.08964735539999999 0.00019734400369360853
bytebuffer_write_12MB_large_calculated_strings 0.14258249 0.143721218 0.14309133229999998 0.00033882789089514996
bytebuffer_lots_of_rw 0.039778412 0.045357113 0.0406703347 0.0017388240298444391
bytebuffer_write_http_response_ascii_only_as_string 0.032509791 0.033763572 0.0327234337 0.000394598402086095
bytebuffer_write_http_response_ascii_only_as_staticstring 0.024133994 0.024737976 0.024240819599999998 0.00017674006927387246
bytebuffer_write_http_response_some_nonascii_as_string 0.033092038 0.033622712 0.033213468600000004 0.00021382023651251247
bytebuffer_write_http_response_some_nonascii_as_staticstring 0.023866614 0.024489465 0.0239975305 0.0001983868371480598
no-net_http1_1k_reqs_1_conn 0.010866507 0.011056519 0.0109879201 6.757910385688771e-05
http1_1k_reqs_1_conn 0.060134776 0.061432021 0.060856309399999996 0.000493342634893213
http1_1k_reqs_100_conns 0.089282053 0.089881075 0.08950983209999999 0.0001965810448330548
future_whenallsucceed_100k_immediately_succeeded_off_loop 0.070124454 0.071364748 0.0705120364 0.0003797241686897956
future_whenallsucceed_100k_immediately_succeeded_on_loop 0.070289593 0.077662443 0.0713224905 0.0022375178545226424
future_whenallsucceed_10k_deferred_off_loop 0.029688586 0.03021506 0.029834477999999998 0.0001807777934131661
future_whenallsucceed_10k_deferred_on_loop 0.012522119 0.01301808 0.0126327987 0.0001403405668666603
future_whenallcomplete_100k_immediately_succeeded_off_loop 0.034749464 0.036433892 0.0351054921 0.0005188199364160625
future_whenallcomplete_100k_immediately_succeeded_on_loop 0.034534074 0.035258332 0.0347821995 0.0002317706737360361
future_whenallcomplete_10k_deferred_off_loop 0.022891665 0.023424832 0.0230289712 0.00017782898432032956
future_whenallcomplete_100k_deferred_on_loop 0.069099385 0.071460602 0.0696705353 0.0006866139816503793
future_reduce_10k_futures 0.015503449 0.015619738 0.015540420099999999 3.72999660305175e-05
future_reduce_into_10k_futures 0.013251591 0.013733529 0.013334484499999999 0.00014586740189276144
channel_pipeline_1m_events 0.096646785 0.096776634 0.0966971539 4.637475806333899e-05
websocket_encode_50b_space_at_front_100k_frames_cow 0.044767994 0.045200379 0.0448730154 0.0001719689126100027
websocket_encode_50b_space_at_front_1m_frames_cow_masking 0.609506124 0.613053252 0.6101206686999999 0.0011099687856154876
websocket_encode_1kb_space_at_front_1m_frames_cow 0.470600619 0.471177428 0.4708633017 0.0002355248223790453
websocket_encode_50b_no_space_at_front_100k_frames_cow 0.045174396 0.045606467 0.0452683867 0.00017407630541872477
websocket_encode_1kb_no_space_at_front_100k_frames_cow 0.046994859 0.047461877 0.0471064546 0.0001862005731141681
websocket_encode_50b_space_at_front_100k_frames 0.065234665 0.066656362 0.06552837190000001 0.0004456069866454182
websocket_encode_50b_space_at_front_10k_frames_masking 0.008076388 0.008611533 0.0081624743 0.00016480578949650592
websocket_encode_1kb_space_at_front_10k_frames 0.012870209 0.012965401 0.0128990953 3.6572436548885015e-05
websocket_encode_50b_no_space_at_front_100k_frames 0.065146588 0.065621596 0.0653396183 0.00019516153429519967
websocket_encode_1kb_no_space_at_front_10k_frames 0.012228821 0.012657422 0.012281223599999998 0.0001326162096378535
websocket_decode_125b_10k_frames 0.012233282 0.012366945 0.0123047777 3.95150532836679e-05
websocket_decode_125b_with_a_masking_key_10k_frames 0.01281294 0.013276892 0.0129415902 0.00012906996531149737
websocket_decode_64kb_10k_frames 0.012577654 0.01318344 0.0127363164 0.00016959017022038063
websocket_decode_64kb_with_a_masking_key_10k_frames 0.013216508 0.013314903 0.0132595459 3.5720548784045e-05
websocket_decode_64kb_+1_10k_frames 0.012777282 0.013235639 0.012894371600000001 0.0001277286411231075
websocket_decode_64kb_+1_with_a_masking_key_10k_frames 0.0131595 0.01375441 0.013298722199999998 0.00016455270454295183
circular_buffer_into_byte_buffer_1kb 0.033009662 0.033483895 0.0331128863 0.0001846860597157909
circular_buffer_into_byte_buffer_1mb 0.064673169 0.065160918 0.06483072349999999 0.00020480796641854476
byte_buffer_view_iterator_1mb 0.01756998 0.018063249 0.017630277399999998 0.00015255523210023158
byte_buffer_view_contains_12mb 0.052891197 0.053355064 0.052997531 0.00018715560117838932
byte_to_message_decoder_decode_many_small 0.04066174 0.04121646 0.0407856267 0.00021164063945915091
generate_10k_random_request_keys 0.089407779 0.089714635 0.0895282598 9.834151027109571e-05
bytebuffer_rw_10_uint32s 0.038725979 0.050847383 0.04161273 0.0033593561782622717
bytebuffer_multi_rw_10_uint32s 0.056287957 0.058063068 0.0568715744 0.0005525491810923468
lock_1_thread_10M_ops 0.159346478 0.164067004 0.1602103379 0.0014316474621507743
lock_2_threads_10M_ops 0.883900059 0.930883552 0.8990645519999999 0.017269769918649872
lock_4_threads_10M_ops 1.019644556 1.05938278 1.0471553483 0.011571727730963544
lock_8_threads_10M_ops 0.851770537 0.890177785 0.8768528513 0.011189518094133752
schedule_100k_tasks 0.073459561 0.112253651 0.0810968369 0.012165123735545236
schedule_and_run_100k_tasks 0.413425018 0.430777234 0.4246161752 0.005727545795190063
execute_100k_tasks 0.213427933 0.214849888 0.2141128531 0.0004715686096414966
bytebufferview_copy_to_array_100k_times_1kb 0.011027687 0.011102502 0.0110634859 2.1721332210269623e-05
circularbuffer_copy_to_array_10k_times_1kb 0.021161644 0.021613506 0.0212601387 0.00018216613954913103
deadline_now_1M_times 0.027101207 0.027455766 0.0271621043 0.00010517630580870704

comparison

name current previous winner diff
write_http_headers 0.041833049 0.04494874 current -6%
http_headers_canonical_form 0.088358311 0.08618971 previous 2%
http_headers_canonical_form_trimming_whitespace 0.016686863 0.016404275 previous 1%
http_headers_canonical_form_trimming_whitespace_from_short_string 0.015192984 0.014909545 previous 1%
http_headers_canonical_form_trimming_whitespace_from_long_string 0.024121283 0.023880567 previous 1%
bytebuffer_write_12MB_short_string_literals 0.165031397 0.159650229 previous 3%
bytebuffer_write_12MB_short_calculated_strings 0.072477607 0.074616205 current -2%
bytebuffer_write_12MB_medium_string_literals 1.005495327 0.986515434 previous 1%
bytebuffer_write_12MB_medium_calculated_strings 0.089464335 0.089371476 previous 0%
bytebuffer_write_12MB_large_calculated_strings 0.14258249 0.143660807 current 0%
bytebuffer_lots_of_rw 0.039778412 0.0438909 current -9%
bytebuffer_write_http_response_ascii_only_as_string 0.032509791 0.033554623 current -3%
bytebuffer_write_http_response_ascii_only_as_staticstring 0.024133994 0.025243081 current -4%
bytebuffer_write_http_response_some_nonascii_as_string 0.033092038 0.032895021 previous 0%
bytebuffer_write_http_response_some_nonascii_as_staticstring 0.023866614 0.02498751 current -4%
no-net_http1_1k_reqs_1_conn 0.010866507 0.010932114 current 0%
http1_1k_reqs_1_conn 0.060134776 0.061019775 current -1%
http1_1k_reqs_100_conns 0.089282053 0.089786101 current 0%
future_whenallsucceed_100k_immediately_succeeded_off_loop 0.070124454 0.079238159 current -11%
future_whenallsucceed_100k_immediately_succeeded_on_loop 0.070289593 0.079403646 current -11%
future_whenallsucceed_10k_deferred_off_loop 0.029688586 0.030746471 current -3%
future_whenallsucceed_10k_deferred_on_loop 0.012522119 0.013532113 current -7%
future_whenallcomplete_100k_immediately_succeeded_off_loop 0.034749464 0.034848315 current 0%
future_whenallcomplete_100k_immediately_succeeded_on_loop 0.034534074 0.03482763 current 0%
future_whenallcomplete_10k_deferred_off_loop 0.022891665 0.02280221 previous 0%
future_whenallcomplete_100k_deferred_on_loop 0.069099385 0.069156762 current 0%
future_reduce_10k_futures 0.015503449 0.016073763 current -3%
future_reduce_into_10k_futures 0.013251591 0.014186241 current -6%
channel_pipeline_1m_events 0.096646785 0.097200487 current 0%
websocket_encode_50b_space_at_front_100k_frames_cow 0.044767994 0.044755096 previous 0%
websocket_encode_50b_space_at_front_1m_frames_cow_masking 0.609506124 0.606642781 previous 0%
websocket_encode_1kb_space_at_front_1m_frames_cow 0.470600619 0.469363237 previous 0%
websocket_encode_50b_no_space_at_front_100k_frames_cow 0.045174396 0.044705859 previous 1%
websocket_encode_1kb_no_space_at_front_100k_frames_cow 0.046994859 0.047033902 current 0%
websocket_encode_50b_space_at_front_100k_frames 0.065234665 0.064693822 previous 0%
websocket_encode_50b_space_at_front_10k_frames_masking 0.008076388 0.008051824 previous 0%
websocket_encode_1kb_space_at_front_10k_frames 0.012870209 0.012761536 previous 0%
websocket_encode_50b_no_space_at_front_100k_frames 0.065146588 0.064412746 previous 1%
websocket_encode_1kb_no_space_at_front_10k_frames 0.012228821 0.012173678 previous 0%
websocket_decode_125b_10k_frames 0.012233282 0.01266064 current -3%
websocket_decode_125b_with_a_masking_key_10k_frames 0.01281294 0.012894587 current 0%
websocket_decode_64kb_10k_frames 0.012577654 0.012904563 current -2%
websocket_decode_64kb_with_a_masking_key_10k_frames 0.013216508 0.013493888 current -2%
websocket_decode_64kb_+1_10k_frames 0.012777282 0.012973875 current -1%
websocket_decode_64kb_+1_with_a_masking_key_10k_frames 0.0131595 0.013584908 current -3%
circular_buffer_into_byte_buffer_1kb 0.033009662 0.033008279 previous 0%
circular_buffer_into_byte_buffer_1mb 0.064673169 0.064673907 current 0%
byte_buffer_view_iterator_1mb 0.01756998 0.017568225 previous 0%
byte_buffer_view_contains_12mb 0.052891197 0.052867013 previous 0%
byte_to_message_decoder_decode_many_small 0.04066174 0.040386191 previous 0%
generate_10k_random_request_keys 0.089407779 0.089246848 previous 0%
bytebuffer_rw_10_uint32s 0.038725979 0.037941617 previous 2%
bytebuffer_multi_rw_10_uint32s 0.056287957 0.056369823 current 0%
lock_1_thread_10M_ops 0.159346478 0.159332719 previous 0%
lock_2_threads_10M_ops 0.883900059 0.892526582 current 0%
lock_4_threads_10M_ops 1.019644556 0.844787078 previous 20%
lock_8_threads_10M_ops 0.851770537 0.923208205 current -7%
schedule_100k_tasks 0.073459561 0.073543081 current 0%
schedule_and_run_100k_tasks 0.413425018 0.407285025 previous 1%
execute_100k_tasks 0.213427933 0.213286841 previous 0%
bytebufferview_copy_to_array_100k_times_1kb 0.011027687 0.010611783 previous 3%
circularbuffer_copy_to_array_10k_times_1kb 0.021161644 0.021147771 previous 0%
deadline_now_1M_times 0.027101207 0.027131436 current 0%

significant differences found

Copy link
Contributor

@Lukasa Lukasa left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice, LGTM.

@dnadoba
Copy link
Member Author

dnadoba commented Jun 3, 2022

If we remove @preconcurency from EventLoopFuture._whenComplete we have a memory regression in our test_1000_udpconnections.swift allocation test of 1 allocation per iteration. I have added @preconcurency for this method again with a TODO and reported the issue here: swiftlang/swift#59249
We can still decided later if we accept this regression or not and remove @preconcurency in a separate PR.

@dnadoba dnadoba enabled auto-merge (squash) June 7, 2022 13:43
@dnadoba dnadoba merged commit 0e2818b into apple:main Jun 7, 2022
@dnadoba dnadoba deleted the dn-unsafe-mutable-transfer-box branch July 5, 2022 09:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
🔼 needs-minor-version-bump For PRs that when merged cause a bump of the minor version, ie. 1.x.0 -> 1.(x+1).0
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants