Benchmark: https://godbolt.org/z/rfW1Wqajh
Run on (4 X 1800 MHz CPU s)
Load Average: 0.32, 0.28, 0.25
--------------------------------------------------------------
Benchmark Time CPU Iterations
--------------------------------------------------------------
pass_by_value<1> 1.68 ns 1.67 ns 414112970
pass_by_ref<1> 1.67 ns 1.67 ns 419408110
pass_by_value<2> 1.67 ns 1.67 ns 419412510
pass_by_ref<2> 1.67 ns 1.67 ns 418970277
pass_by_value<4> 1.67 ns 1.67 ns 419323844
pass_by_ref<4> 1.67 ns 1.67 ns 419381729
pass_by_value<8> 1.67 ns 1.67 ns 419331900
pass_by_ref<8> 1.67 ns 1.67 ns 419371468
pass_by_value<16> 1.67 ns 1.67 ns 419222763
pass_by_ref<16> 1.11 ns 1.11 ns 629000047
pass_by_value<32> 3.90 ns 3.89 ns 179723855
pass_by_ref<32> 1.11 ns 1.11 ns 629070943
pass_by_value<64> 7.79 ns 7.79 ns 89862398
pass_by_ref<64> 1.11 ns 1.11 ns 629158343
pass_by_value<128> 21.2 ns 21.2 ns 33105503
pass_by_ref<128> 1.11 ns 1.11 ns 628866547
pass_by_value<256> 40.0 ns 39.9 ns 17457707
pass_by_ref<256> 1.11 ns 1.11 ns 628881383
pass_by_value<512> 57.9 ns 57.9 ns 12083922
pass_by_ref<512> 1.11 ns 1.11 ns 629033023
pass_by_value<1024> 102 ns 102 ns 6846794
pass_by_ref<1024> 1.11 ns 1.11 ns 629094032
pass_by_value<2048> 198 ns 197 ns 3568508
pass_by_ref<2048> 1.11 ns 1.11 ns 629041264
pass_by_value<4096> 388 ns 388 ns 1800457
pass_by_ref<4096> 1.11 ns 1.11 ns 629092375
Run on (8 X 1989 MHz CPU s)
Load Average: 3.51, 3.27, 3.13
--------------------------------------------------------------
Benchmark Time CPU Iterations
--------------------------------------------------------------
pass_by_value<1> 1.53 ns 1.51 ns 463829640
pass_by_ref<1> 1.51 ns 1.51 ns 463856645
pass_by_value<2> 1.51 ns 1.51 ns 463826665
pass_by_ref<2> 1.51 ns 1.51 ns 463858587
pass_by_value<4> 1.51 ns 1.51 ns 463853184
pass_by_ref<4> 1.51 ns 1.51 ns 463837112
pass_by_value<8> 1.51 ns 1.51 ns 463807759
pass_by_ref<8> 1.52 ns 1.51 ns 463855280
pass_by_value<16> 1.51 ns 1.51 ns 463826610
pass_by_ref<16> 1.01 ns 1.01 ns 695711654
pass_by_value<32> 2.65 ns 2.64 ns 264724781
pass_by_ref<32> 1.01 ns 1.01 ns 695773883
pass_by_value<64> 6.13 ns 6.10 ns 114812851
pass_by_ref<64> 1.01 ns 1.01 ns 695772728
pass_by_value<128> 18.2 ns 18.1 ns 38648337
pass_by_ref<128> 1.01 ns 1.01 ns 695774865
pass_by_value<256> 28.3 ns 28.2 ns 24842264
pass_by_ref<256> 1.01 ns 1.01 ns 695717082
pass_by_value<512> 48.5 ns 48.3 ns 14487966
pass_by_ref<512> 1.01 ns 1.01 ns 695719170
pass_by_value<1024> 79.4 ns 79.1 ns 8842548
pass_by_ref<1024> 1.01 ns 1.01 ns 695774395
pass_by_value<2048> 150 ns 149 ns 4688401
pass_by_ref<2048> 1.01 ns 1.01 ns 695768538
pass_by_value<4096> 291 ns 290 ns 2415661
pass_by_ref<4096> 1.01 ns 1.01 ns 695775204
Run on (4 X 3400 MHz CPU s)
CPU Caches:
L1 Data 32 KiB (x4)
L1 Instruction 32 KiB (x4)
L2 Unified 256 KiB (x4)
L3 Unified 6144 KiB (x1)
Load Average: 0.14, 0.03, 0.01
--------------------------------------------------------------
Benchmark Time CPU Iterations
--------------------------------------------------------------
pass_by_value<1> 0.297 ns 0.297 ns 1000000000
pass_by_ref<1> 0.296 ns 0.295 ns 1000000000
pass_by_value<2> 0.296 ns 0.295 ns 1000000000
pass_by_ref<2> 0.296 ns 0.296 ns 1000000000
pass_by_value<4> 0.296 ns 0.295 ns 1000000000
pass_by_ref<4> 0.296 ns 0.295 ns 1000000000
pass_by_value<8> 0.296 ns 0.295 ns 1000000000
pass_by_ref<8> 0.296 ns 0.295 ns 1000000000
pass_by_value<16> 0.297 ns 0.296 ns 1000000000
pass_by_ref<16> 0.296 ns 0.295 ns 1000000000
pass_by_value<32> 0.593 ns 0.591 ns 1000000000
pass_by_ref<32> 0.296 ns 0.295 ns 1000000000
pass_by_value<64> 1.18 ns 1.18 ns 592189853
pass_by_ref<64> 0.296 ns 0.296 ns 1000000000
pass_by_value<128> 2.37 ns 2.36 ns 295845564
pass_by_ref<128> 0.295 ns 0.295 ns 1000000000
pass_by_value<256> 4.13 ns 4.13 ns 169355920
pass_by_ref<256> 0.295 ns 0.295 ns 1000000000
pass_by_value<512> 6.52 ns 6.52 ns 107232892
pass_by_ref<512> 0.295 ns 0.295 ns 1000000000
pass_by_value<1024> 10.6 ns 10.6 ns 65855114
pass_by_ref<1024> 0.295 ns 0.295 ns 1000000000
pass_by_value<2048> 20.1 ns 20.1 ns 34864467
pass_by_ref<2048> 0.295 ns 0.295 ns 1000000000
pass_by_value<4096> 75.1 ns 75.1 ns 9315670
pass_by_ref<4096> 0.295 ns 0.295 ns 1000000000
Run on (96 X 2000.17 MHz CPU s)
CPU Caches:
L1 Data 32 KiB (x48)
L1 Instruction 32 KiB (x48)
L2 Unified 1024 KiB (x48)
L3 Unified 39424 KiB (x2)
Load Average: 0.21, 0.32, 0.59
--------------------------------------------------------------
Benchmark Time CPU Iterations
--------------------------------------------------------------
pass_by_value<1> 0.331 ns 0.330 ns 1000000000
pass_by_ref<1> 0.333 ns 0.333 ns 1000000000
pass_by_value<2> 0.501 ns 0.501 ns 1000000000
pass_by_ref<2> 0.330 ns 0.330 ns 1000000000
pass_by_value<4> 0.333 ns 0.333 ns 1000000000
pass_by_ref<4> 0.332 ns 0.332 ns 1000000000
pass_by_value<8> 0.335 ns 0.335 ns 1000000000
pass_by_ref<8> 0.335 ns 0.335 ns 1000000000
pass_by_value<16> 0.335 ns 0.334 ns 1000000000
pass_by_ref<16> 0.333 ns 0.333 ns 1000000000
pass_by_value<32> 0.674 ns 0.674 ns 1000000000
pass_by_ref<32> 0.337 ns 0.337 ns 1000000000
pass_by_value<64> 1.40 ns 1.40 ns 504301359
pass_by_ref<64> 0.352 ns 0.352 ns 1000000000
pass_by_value<128> 2.79 ns 2.79 ns 247285624
pass_by_ref<128> 0.351 ns 0.351 ns 1000000000
pass_by_value<256> 4.97 ns 4.96 ns 141354462
pass_by_ref<256> 0.353 ns 0.353 ns 1000000000
pass_by_value<512> 7.86 ns 7.86 ns 89783631
pass_by_ref<512> 0.348 ns 0.348 ns 1000000000
pass_by_value<1024> 12.7 ns 12.7 ns 54306431
pass_by_ref<1024> 0.352 ns 0.352 ns 1000000000
pass_by_value<2048> 24.3 ns 24.3 ns 28849555
pass_by_ref<2048> 0.353 ns 0.353 ns 1000000000
pass_by_value<4096> 47.6 ns 47.6 ns 14807572
pass_by_ref<4096> 0.355 ns 0.355 ns 1000000000
Run on (8 X 24.1207 MHz CPU s)
CPU Caches:
L1 Data 64 KiB (x8)
L1 Instruction 128 KiB (x8)
L2 Unified 4096 KiB (x8)
Load Average: 2.94, 5.97, 4.86
--------------------------------------------------------------
Benchmark Time CPU Iterations
--------------------------------------------------------------
pass_by_value<1> 0.320 ns 0.320 ns 1000000000
pass_by_ref<1> 0.319 ns 0.319 ns 1000000000
pass_by_value<2> 0.315 ns 0.315 ns 1000000000
pass_by_ref<2> 0.317 ns 0.317 ns 1000000000
pass_by_value<4> 0.320 ns 0.320 ns 1000000000
pass_by_ref<4> 0.315 ns 0.315 ns 1000000000
pass_by_value<8> 0.314 ns 0.314 ns 1000000000
pass_by_ref<8> 0.314 ns 0.314 ns 1000000000
pass_by_value<16> 0.314 ns 0.314 ns 1000000000
pass_by_ref<16> 0.314 ns 0.314 ns 1000000000
pass_by_value<32> 0.356 ns 0.356 ns 1000000000
pass_by_ref<32> 0.315 ns 0.315 ns 1000000000
pass_by_value<64> 0.709 ns 0.709 ns 984459602
pass_by_ref<64> 0.321 ns 0.321 ns 1000000000
pass_by_value<128> 1.87 ns 1.87 ns 375998410
pass_by_ref<128> 0.314 ns 0.314 ns 1000000000
pass_by_value<256> 3.43 ns 3.43 ns 203587207
pass_by_ref<256> 0.314 ns 0.314 ns 1000000000
pass_by_value<512> 7.06 ns 7.06 ns 101180926
pass_by_ref<512> 0.319 ns 0.319 ns 1000000000
pass_by_value<1024> 15.4 ns 15.4 ns 45312723
pass_by_ref<1024> 0.314 ns 0.314 ns 1000000000
pass_by_value<2048> 29.3 ns 29.3 ns 24002688
pass_by_ref<2048> 0.314 ns 0.314 ns 1000000000
pass_by_value<4096> 54.2 ns 54.2 ns 12992075
pass_by_ref<4096> 0.316 ns 0.316 ns 1000000000