The following autogenerated tables contain a representative set of potential use cases for this package, along with measurements that summarize each case's performance, compilation, and memory usage:

  • run time (best of several trial measurements)
  • compilation time (as reported by the compiler)
  • overall level of optimization (type stability, constant propagation, etc.) and allocations during run time (as reported by the garbage collector)
  • total allocations during compilation and first run (as reported by the garbage collector and, when possible, the Julia process's resident set size estimator)

The rows of the tables are highlighted as follows:

  • light blue indicates better optimization and either an improvement or no change in run time, compilation time, and total allocations
  • dark blue indicates better optimization and either slower run time, slower compilation, or more total allocations
  • green indicates similar optimization, either faster run time or fewer allocations during run time, and either an improvement or no change in compilation time and total allocations
  • yellow indicates similar optimization, either faster run time or fewer allocations during run time, and either slower compilation or more total allocations
  • magenta indicates no change in performance and either an improvement or no change in compilation time and total allocations
  • light gray indicates no change in performance and either faster compilation with more total allocations or slower compilation with fewer total allocations
  • dark gray indicates no change in performance, compilation time, or total allocations
  • red indicates a deterioration in performance, or no change in performance and either slower compilation or more total allocations

Rows highlighted in gray present no clear advantage to loop unrolling, while those highlighted in red present a clear disadvantage. It is recommended that you only call unrolled functions when your use case is similar to a row in one of the remaining categories, each of which demonstrates some advantage to loop unrolling.

The tables are also printed out by this package's test suite, so they can be compared across different operating systems by consulting the CI pipeline.

Isolated Unrolled Functions

Unrolled Expression Reference Expression Itr Type Itr Length Itr Contents Optimization Run Time Compilation Time Total Allocations
unrolled_push(itr, itr[1]) (itr..., itr[1]) Tuple 1 empty singleton Tuple similar (optimized out) similar (40 ns vs. 40 ns) similar (27 ms vs. 26 ms) Inf times more (58 kB vs. 0 B)
unrolled_push(itr, itr[1]) (itr..., itr[1]) Tuple 1 nonempty singleton Tuple similar (optimized out) similar (49 ns vs. 49 ns) similar (25 ms vs. 25 ms) 668 times more (63 kB vs. 96 B)
unrolled_push(itr, itr[1]) (itr..., itr[1]) Tuple 1 nonempty non-singleton Tuple similar (10 LLVM lines) similar (49 ns vs. 49 ns) similar (32 ms vs. 26 ms) 1650 times more (155 kB vs. 96 B)
unrolled_push(itr, itr[1]) (itr..., itr[1]) Tuple 2 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (28 ms vs. 27 ms) 309 times more (63 kB vs. 208 B)
unrolled_push(itr, itr[1]) (itr..., itr[1]) Tuple 8 identical nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (29 ms vs. 28 ms) 253 times more (63 kB vs. 256 B)
unrolled_push(itr, itr[1]) (itr..., itr[1]) Tuple 32 identical nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (27 ms vs. 29 ms) 150 times more (66 kB vs. 448 B)
unrolled_push(itr, itr[1]) (itr..., itr[1]) Tuple 128 identical nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) 2 times more (67 ms vs. 28 ms) 692 times more (844 kB vs. 1 kB)
unrolled_push(itr, itr[1]) (itr..., itr[1]) Tuple 2 identical nonempty non-singleton Tuples similar (11 LLVM lines) similar (60 ns vs. 50 ns) similar (33 ms vs. 28 ms) 719 times more (157 kB vs. 224 B)
unrolled_push(itr, itr[1]) (itr..., itr[1]) Tuple 8 identical nonempty non-singleton Tuples similar (15 LLVM lines) similar (49 ns vs. 50 ns) similar (31 ms vs. 27 ms) 433 times more (176 kB vs. 416 B)
unrolled_push(itr, itr[1]) (itr..., itr[1]) Tuple 32 identical nonempty non-singleton Tuples similar (39 LLVM lines) similar (60 ns vs. 60 ns) similar (33 ms vs. 26 ms) 205 times more (237 kB vs. 1 kB)
unrolled_push(itr, itr[1]) (itr..., itr[1]) Tuple 128 identical nonempty non-singleton Tuples similar (135 LLVM lines) 60 times less (80 ns vs. 5 μs) 3 times more (101 ms vs. 26 ms) 1208 times more (5 MB vs. 4 kB)
unrolled_push(itr, itr[1]) (itr..., itr[1]) Tuple 2 empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (26 ms vs. 27 ms) 573 times more (63 kB vs. 112 B)
unrolled_push(itr, itr[1]) (itr..., itr[1]) Tuple 8 empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (26 ms vs. 27 ms) 405 times more (63 kB vs. 160 B)
unrolled_push(itr, itr[1]) (itr..., itr[1]) Tuple 32 empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (27 ms vs. 29 ms) 191 times more (66 kB vs. 352 B)
unrolled_push(itr, itr[1]) (itr..., itr[1]) Tuple 128 empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) 2 times more (72 ms vs. 31 ms) 748 times more (843 kB vs. 1 kB)
unrolled_push(itr, itr[1]) (itr..., itr[1]) Tuple 2 nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (25 ms vs. 26 ms) 309 times more (63 kB vs. 208 B)
unrolled_push(itr, itr[1]) (itr..., itr[1]) Tuple 8 nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (25 ms vs. 26 ms) 253 times more (63 kB vs. 256 B)
unrolled_push(itr, itr[1]) (itr..., itr[1]) Tuple 32 nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (25 ms vs. 25 ms) 150 times more (66 kB vs. 448 B)
unrolled_push(itr, itr[1]) (itr..., itr[1]) Tuple 128 nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) 2 times more (61 ms vs. 26 ms) 691 times more (842 kB vs. 1 kB)
unrolled_push(itr, itr[1]) (itr..., itr[1]) Tuple 2 nonempty non-singleton Tuples similar (13 LLVM lines) similar (60 ns vs. 60 ns) similar (29 ms vs. 26 ms) 629 times more (157 kB vs. 256 B)
unrolled_push(itr, itr[1]) (itr..., itr[1]) Tuple 8 nonempty non-singleton Tuples similar (31 LLVM lines) similar (60 ns vs. 60 ns) similar (31 ms vs. 26 ms) 268 times more (176 kB vs. 672 B)
unrolled_push(itr, itr[1]) (itr..., itr[1]) Tuple 32 nonempty non-singleton Tuples similar (95 LLVM lines) similar (80 ns vs. 80 ns) similar (38 ms vs. 26 ms) 79 times more (239 kB vs. 3 kB)
unrolled_push(itr, itr[1]) (itr..., itr[1]) Tuple 128 nonempty non-singleton Tuples similar (559 LLVM lines) 15 times less (361 ns vs. 6 μs) 7 times more (186 ms vs. 26 ms) 482 times more (5 MB vs. 11 kB)
unrolled_append(itr, Iterators.reverse(itr)) (itr..., Iterators.reverse(itr)...) Tuple 1 empty singleton Tuple similar (optimized out) similar (40 ns vs. 40 ns) similar (41 ms vs. 37 ms) 5 times more (613 kB vs. 109 kB)
unrolled_append(itr, Iterators.reverse(itr)) (itr..., Iterators.reverse(itr)...) Tuple 1 nonempty singleton Tuple similar (optimized out) similar (40 ns vs. 40 ns) similar (41 ms vs. 34 ms) 4 times more (643 kB vs. 139 kB)
unrolled_append(itr, Iterators.reverse(itr)) (itr..., Iterators.reverse(itr)...) Tuple 1 nonempty non-singleton Tuple similar (10 LLVM lines) similar (49 ns vs. 49 ns) similar (41 ms vs. 37 ms) 4 times more (926 kB vs. 210 kB)
unrolled_append(itr, Iterators.reverse(itr)) (itr..., Iterators.reverse(itr)...) Tuple 2 identical nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (64 ms vs. 38 ms) 5 times more (701 kB vs. 139 kB)
unrolled_append(itr, Iterators.reverse(itr)) (itr..., Iterators.reverse(itr)...) Tuple 8 identical nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (67 ms vs. 39 ms) 5 times more (748 kB vs. 139 kB)
unrolled_append(itr, Iterators.reverse(itr)) (itr..., Iterators.reverse(itr)...) Tuple 32 identical nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (70 ms vs. 37 ms) 6 times more (939 kB vs. 141 kB)
unrolled_append(itr, Iterators.reverse(itr)) (itr..., Iterators.reverse(itr)...) Tuple 128 identical nonempty singleton Tuples better (optimized out vs. 7 kB allocs) 198 times less (49 ns vs. 10 μs) 2 times more (77 ms vs. 37 ms) 11 times more (2 MB vs. 148 kB)
unrolled_append(itr, Iterators.reverse(itr)) (itr..., Iterators.reverse(itr)...) Tuple 2 identical nonempty non-singleton Tuples similar (9 LLVM lines) similar (60 ns vs. 50 ns) similar (67 ms vs. 38 ms) 5 times more (1 MB vs. 210 kB)
unrolled_append(itr, Iterators.reverse(itr)) (itr..., Iterators.reverse(itr)...) Tuple 8 identical nonempty non-singleton Tuples similar (37 LLVM lines) similar (60 ns vs. 60 ns) similar (64 ms vs. 44 ms) 7 times more (2 MB vs. 236 kB)
unrolled_append(itr, Iterators.reverse(itr)) (itr..., Iterators.reverse(itr)...) Tuple 32 identical nonempty non-singleton Tuples similar (181 LLVM lines) similar (80 ns vs. 80 ns) similar (78 ms vs. 40 ms) 16 times more (4 MB vs. 239 kB)
unrolled_append(itr, Iterators.reverse(itr)) (itr..., Iterators.reverse(itr)...) Tuple 128 identical nonempty non-singleton Tuples better (641 LLVM lines vs. 17 kB allocs) 54 times less (260 ns vs. 14 μs) 5 times more (205 ms vs. 38 ms) 51 times more (13 MB vs. 253 kB)
unrolled_append(itr, Iterators.reverse(itr)) (itr..., Iterators.reverse(itr)...) Tuple 2 empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (64 ms vs. 38 ms) 5 times more (700 kB vs. 139 kB)
unrolled_append(itr, Iterators.reverse(itr)) (itr..., Iterators.reverse(itr)...) Tuple 8 empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (62 ms vs. 36 ms) 5 times more (749 kB vs. 141 kB)
unrolled_append(itr, Iterators.reverse(itr)) (itr..., Iterators.reverse(itr)...) Tuple 32 empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (66 ms vs. 36 ms) 6 times more (939 kB vs. 143 kB)
unrolled_append(itr, Iterators.reverse(itr)) (itr..., Iterators.reverse(itr)...) Tuple 128 empty & nonempty singleton Tuples better (optimized out vs. 7 kB allocs) 338 times less (49 ns vs. 17 μs) 2 times more (73 ms vs. 36 ms) 7 times more (2 MB vs. 214 kB)
unrolled_append(itr, Iterators.reverse(itr)) (itr..., Iterators.reverse(itr)...) Tuple 2 nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (59 ms vs. 33 ms) 5 times more (700 kB vs. 139 kB)
unrolled_append(itr, Iterators.reverse(itr)) (itr..., Iterators.reverse(itr)...) Tuple 8 nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (58 ms vs. 33 ms) 3 times more (749 kB vs. 205 kB)
unrolled_append(itr, Iterators.reverse(itr)) (itr..., Iterators.reverse(itr)...) Tuple 32 nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (60 ms vs. 34 ms) 6 times more (939 kB vs. 142 kB)
unrolled_append(itr, Iterators.reverse(itr)) (itr..., Iterators.reverse(itr)...) Tuple 128 nonempty singleton Tuples better (optimized out vs. 7 kB allocs) 425 times less (40 ns vs. 17 μs) 2 times more (70 ms vs. 33 ms) 11 times more (2 MB vs. 150 kB)
unrolled_append(itr, Iterators.reverse(itr)) (itr..., Iterators.reverse(itr)...) Tuple 2 nonempty non-singleton Tuples similar (15 LLVM lines) similar (60 ns vs. 60 ns) similar (59 ms vs. 37 ms) 4 times more (1 MB vs. 236 kB)
unrolled_append(itr, Iterators.reverse(itr)) (itr..., Iterators.reverse(itr)...) Tuple 8 nonempty non-singleton Tuples similar (45 LLVM lines) similar (69 ns vs. 69 ns) similar (65 ms vs. 41 ms) 6 times more (2 MB vs. 239 kB)
unrolled_append(itr, Iterators.reverse(itr)) (itr..., Iterators.reverse(itr)...) Tuple 32 nonempty non-singleton Tuples similar (163 LLVM lines) similar (200 ns vs. 220 ns) 2 times more (93 ms vs. 39 ms) 13 times more (4 MB vs. 283 kB)
unrolled_append(itr, Iterators.reverse(itr)) (itr..., Iterators.reverse(itr)...) Tuple 128 nonempty non-singleton Tuples better (1053 LLVM lines vs. 560 kB allocs) 114 times less (642 ns vs. 74 μs) 12 times more (472 ms vs. 39 ms) 16 times more (13 MB vs. 794 kB)
unrolled_prepend(itr, Iterators.reverse(itr)) (Iterators.reverse(itr)..., itr...) Tuple 1 empty singleton Tuple similar (optimized out) similar (40 ns vs. 40 ns) similar (42 ms vs. 39 ms) 5 times more (622 kB vs. 109 kB)
unrolled_prepend(itr, Iterators.reverse(itr)) (Iterators.reverse(itr)..., itr...) Tuple 1 nonempty singleton Tuple similar (optimized out) similar (40 ns vs. 49 ns) similar (42 ms vs. 34 ms) 4 times more (652 kB vs. 139 kB)
unrolled_prepend(itr, Iterators.reverse(itr)) (Iterators.reverse(itr)..., itr...) Tuple 1 nonempty non-singleton Tuple similar (10 LLVM lines) similar (49 ns vs. 50 ns) similar (42 ms vs. 42 ms) 4 times more (974 kB vs. 210 kB)
unrolled_prepend(itr, Iterators.reverse(itr)) (Iterators.reverse(itr)..., itr...) Tuple 2 identical nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (66 ms vs. 38 ms) 5 times more (709 kB vs. 139 kB)
unrolled_prepend(itr, Iterators.reverse(itr)) (Iterators.reverse(itr)..., itr...) Tuple 8 identical nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (68 ms vs. 39 ms) 5 times more (757 kB vs. 139 kB)
unrolled_prepend(itr, Iterators.reverse(itr)) (Iterators.reverse(itr)..., itr...) Tuple 32 identical nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (73 ms vs. 39 ms) 6 times more (948 kB vs. 141 kB)
unrolled_prepend(itr, Iterators.reverse(itr)) (Iterators.reverse(itr)..., itr...) Tuple 128 identical nonempty singleton Tuples better (optimized out vs. 7 kB allocs) 199 times less (49 ns vs. 10 μs) 2 times more (79 ms vs. 39 ms) 11 times more (2 MB vs. 148 kB)
unrolled_prepend(itr, Iterators.reverse(itr)) (Iterators.reverse(itr)..., itr...) Tuple 2 identical nonempty non-singleton Tuples similar (9 LLVM lines) similar (49 ns vs. 50 ns) similar (61 ms vs. 40 ms) 5 times more (1 MB vs. 210 kB)
unrolled_prepend(itr, Iterators.reverse(itr)) (Iterators.reverse(itr)..., itr...) Tuple 8 identical nonempty non-singleton Tuples similar (36 LLVM lines) similar (60 ns vs. 60 ns) similar (66 ms vs. 39 ms) 7 times more (2 MB vs. 236 kB)
unrolled_prepend(itr, Iterators.reverse(itr)) (Iterators.reverse(itr)..., itr...) Tuple 32 identical nonempty non-singleton Tuples similar (180 LLVM lines) similar (80 ns vs. 80 ns) 2 times more (83 ms vs. 40 ms) 18 times more (4 MB vs. 239 kB)
unrolled_prepend(itr, Iterators.reverse(itr)) (Iterators.reverse(itr)..., itr...) Tuple 128 identical nonempty non-singleton Tuples better (642 LLVM lines vs. 17 kB allocs) 59 times less (240 ns vs. 14 μs) 5 times more (207 ms vs. 41 ms) 57 times more (14 MB vs. 253 kB)
unrolled_prepend(itr, Iterators.reverse(itr)) (Iterators.reverse(itr)..., itr...) Tuple 2 empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (65 ms vs. 37 ms) 5 times more (709 kB vs. 139 kB)
unrolled_prepend(itr, Iterators.reverse(itr)) (Iterators.reverse(itr)..., itr...) Tuple 8 empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (63 ms vs. 37 ms) 5 times more (758 kB vs. 141 kB)
unrolled_prepend(itr, Iterators.reverse(itr)) (Iterators.reverse(itr)..., itr...) Tuple 32 empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (64 ms vs. 37 ms) 6 times more (948 kB vs. 143 kB)
unrolled_prepend(itr, Iterators.reverse(itr)) (Iterators.reverse(itr)..., itr...) Tuple 128 empty & nonempty singleton Tuples better (optimized out vs. 7 kB allocs) 410 times less (40 ns vs. 16 μs) 2 times more (78 ms vs. 38 ms) 7 times more (2 MB vs. 214 kB)
unrolled_prepend(itr, Iterators.reverse(itr)) (Iterators.reverse(itr)..., itr...) Tuple 2 nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (59 ms vs. 34 ms) 5 times more (709 kB vs. 139 kB)
unrolled_prepend(itr, Iterators.reverse(itr)) (Iterators.reverse(itr)..., itr...) Tuple 8 nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (58 ms vs. 33 ms) 3 times more (758 kB vs. 205 kB)
unrolled_prepend(itr, Iterators.reverse(itr)) (Iterators.reverse(itr)..., itr...) Tuple 32 nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (60 ms vs. 34 ms) 6 times more (947 kB vs. 142 kB)
unrolled_prepend(itr, Iterators.reverse(itr)) (Iterators.reverse(itr)..., itr...) Tuple 128 nonempty singleton Tuples better (optimized out vs. 7 kB allocs) 343 times less (49 ns vs. 17 μs) similar (68 ms vs. 35 ms) 11 times more (2 MB vs. 150 kB)
unrolled_prepend(itr, Iterators.reverse(itr)) (Iterators.reverse(itr)..., itr...) Tuple 2 nonempty non-singleton Tuples similar (15 LLVM lines) similar (49 ns vs. 60 ns) similar (60 ms vs. 38 ms) 4 times more (1 MB vs. 236 kB)
unrolled_prepend(itr, Iterators.reverse(itr)) (Iterators.reverse(itr)..., itr...) Tuple 8 nonempty non-singleton Tuples similar (47 LLVM lines) similar (69 ns vs. 69 ns) similar (66 ms vs. 38 ms) 7 times more (2 MB vs. 239 kB)
unrolled_prepend(itr, Iterators.reverse(itr)) (Iterators.reverse(itr)..., itr...) Tuple 32 nonempty non-singleton Tuples similar (169 LLVM lines) similar (200 ns vs. 200 ns) 2 times more (100 ms vs. 39 ms) 15 times more (4 MB vs. 283 kB)
unrolled_prepend(itr, Iterators.reverse(itr)) (Iterators.reverse(itr)..., itr...) Tuple 128 nonempty non-singleton Tuples better (1022 LLVM lines vs. 560 kB allocs) 106 times less (641 ns vs. 68 μs) 11 times more (449 ms vs. 39 ms) 18 times more (14 MB vs. 794 kB)
unrolled_take(itr, Val(length(itr) ÷ 2)) itr[1:length(itr) ÷ 2] Tuple 1 empty singleton Tuple similar (optimized out) similar (40 ns vs. 40 ns) similar (30 ms vs. 29 ms) 838 times more (183 kB vs. 224 B)
unrolled_take(itr, Val(length(itr) ÷ 2)) itr[1:length(itr) ÷ 2] Tuple 1 nonempty singleton Tuple similar (optimized out) similar (40 ns vs. 40 ns) similar (31 ms vs. 28 ms) 859 times more (188 kB vs. 224 B)
unrolled_take(itr, Val(length(itr) ÷ 2)) itr[1:length(itr) ÷ 2] Tuple 1 nonempty non-singleton Tuple similar (optimized out) similar (40 ns vs. 49 ns) similar (31 ms vs. 30 ms) 858 times more (188 kB vs. 224 B)
unrolled_take(itr, Val(length(itr) ÷ 2)) itr[1:length(itr) ÷ 2] Tuple 2 identical nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (41 ms vs. 30 ms) 990 times more (309 kB vs. 320 B)
unrolled_take(itr, Val(length(itr) ÷ 2)) itr[1:length(itr) ÷ 2] Tuple 8 identical nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) 2 times more (63 ms vs. 31 ms) 1127 times more (370 kB vs. 336 B)
unrolled_take(itr, Val(length(itr) ÷ 2)) itr[1:length(itr) ÷ 2] Tuple 32 identical nonempty singleton Tuples better (optimized out vs. 64 B allocs) 9 times less (40 ns vs. 380 ns) similar (65 ms vs. 48 ms) similar (418 kB vs. 723 kB)
unrolled_take(itr, Val(length(itr) ÷ 2)) itr[1:length(itr) ÷ 2] Tuple 128 identical nonempty singleton Tuples better (optimized out vs. 64 B allocs) 26 times less (40 ns vs. 1 μs) similar (65 ms vs. 49 ms) similar (608 kB vs. 723 kB)
unrolled_take(itr, Val(length(itr) ÷ 2)) itr[1:length(itr) ÷ 2] Tuple 2 identical nonempty non-singleton Tuples similar (8 LLVM lines) similar (49 ns vs. 49 ns) similar (40 ms vs. 30 ms) 1579 times more (419 kB vs. 272 B)
unrolled_take(itr, Val(length(itr) ÷ 2)) itr[1:length(itr) ÷ 2] Tuple 8 identical nonempty non-singleton Tuples similar (8 LLVM lines) similar (49 ns vs. 49 ns) 2 times more (57 ms vs. 29 ms) 1122 times more (561 kB vs. 512 B)
unrolled_take(itr, Val(length(itr) ÷ 2)) itr[1:length(itr) ÷ 2] Tuple 32 identical nonempty non-singleton Tuples better (20 LLVM lines vs. 592 B allocs) 12 times less (60 ns vs. 771 ns) similar (58 ms vs. 44 ms) similar (834 kB vs. 724 kB)
unrolled_take(itr, Val(length(itr) ÷ 2)) itr[1:length(itr) ÷ 2] Tuple 128 identical nonempty non-singleton Tuples better (68 LLVM lines vs. 2 kB allocs) 36 times less (69 ns vs. 3 μs) similar (70 ms vs. 45 ms) 2 times more (2 MB vs. 726 kB)
unrolled_take(itr, Val(length(itr) ÷ 2)) itr[1:length(itr) ÷ 2] Tuple 2 empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (39 ms vs. 29 ms) 1413 times more (309 kB vs. 224 B)
unrolled_take(itr, Val(length(itr) ÷ 2)) itr[1:length(itr) ÷ 2] Tuple 8 empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (59 ms vs. 30 ms) 1129 times more (371 kB vs. 336 B)
unrolled_take(itr, Val(length(itr) ÷ 2)) itr[1:length(itr) ÷ 2] Tuple 32 empty & nonempty singleton Tuples better (optimized out vs. 192 B allocs) 13 times less (40 ns vs. 520 ns) similar (64 ms vs. 80 ms) 5 times less (418 kB vs. 2 MB)
unrolled_take(itr, Val(length(itr) ÷ 2)) itr[1:length(itr) ÷ 2] Tuple 128 empty & nonempty singleton Tuples better (optimized out vs. 576 B allocs) 33 times less (49 ns vs. 2 μs) similar (65 ms vs. 87 ms) 4 times less (608 kB vs. 3 MB)
unrolled_take(itr, Val(length(itr) ÷ 2)) itr[1:length(itr) ÷ 2] Tuple 2 nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (37 ms vs. 28 ms) 989 times more (309 kB vs. 320 B)
unrolled_take(itr, Val(length(itr) ÷ 2)) itr[1:length(itr) ÷ 2] Tuple 8 nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (54 ms vs. 28 ms) 1129 times more (370 kB vs. 336 B)
unrolled_take(itr, Val(length(itr) ÷ 2)) itr[1:length(itr) ÷ 2] Tuple 32 nonempty singleton Tuples better (optimized out vs. 192 B allocs) 29 times less (49 ns vs. 1 μs) similar (55 ms vs. 65 ms) 5 times less (418 kB vs. 2 MB)
unrolled_take(itr, Val(length(itr) ÷ 2)) itr[1:length(itr) ÷ 2] Tuple 128 nonempty singleton Tuples better (optimized out vs. 576 B allocs) 98 times less (40 ns vs. 4 μs) similar (58 ms vs. 69 ms) 4 times less (608 kB vs. 2 MB)
unrolled_take(itr, Val(length(itr) ÷ 2)) itr[1:length(itr) ÷ 2] Tuple 2 nonempty non-singleton Tuples similar (8 LLVM lines) similar (49 ns vs. 49 ns) similar (37 ms vs. 28 ms) 1674 times more (445 kB vs. 272 B)
unrolled_take(itr, Val(length(itr) ÷ 2)) itr[1:length(itr) ÷ 2] Tuple 8 nonempty non-singleton Tuples similar (17 LLVM lines) similar (49 ns vs. 60 ns) similar (59 ms vs. 31 ms) 817 times more (562 kB vs. 704 B)
unrolled_take(itr, Val(length(itr) ÷ 2)) itr[1:length(itr) ÷ 2] Tuple 32 nonempty non-singleton Tuples better (53 LLVM lines vs. 20 kB allocs) 40 times less (69 ns vs. 3 μs) similar (61 ms vs. 86 ms) 2 times less (835 kB vs. 2 MB)
unrolled_take(itr, Val(length(itr) ÷ 2)) itr[1:length(itr) ÷ 2] Tuple 128 nonempty non-singleton Tuples better (181 LLVM lines vs. 268 kB allocs) 244 times less (110 ns vs. 27 μs) similar (82 ms vs. 92 ms) similar (2 MB vs. 2 MB)
unrolled_drop(itr, Val(length(itr) ÷ 2)) itr[length(itr) ÷ 2 + 1:end] Tuple 1 empty singleton Tuple similar (optimized out) similar (40 ns vs. 40 ns) similar (39 ms vs. 28 ms) 1340 times more (293 kB vs. 224 B)
unrolled_drop(itr, Val(length(itr) ÷ 2)) itr[length(itr) ÷ 2 + 1:end] Tuple 1 nonempty singleton Tuple similar (optimized out) similar (49 ns vs. 49 ns) similar (38 ms vs. 28 ms) 1478 times more (323 kB vs. 224 B)
unrolled_drop(itr, Val(length(itr) ÷ 2)) itr[length(itr) ÷ 2 + 1:end] Tuple 1 nonempty non-singleton Tuple similar (8 LLVM lines) similar (60 ns vs. 50 ns) similar (39 ms vs. 27 ms) 1742 times more (436 kB vs. 256 B)
unrolled_drop(itr, Val(length(itr) ÷ 2)) itr[length(itr) ÷ 2 + 1:end] Tuple 2 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (39 ms vs. 30 ms) 1035 times more (323 kB vs. 320 B)
unrolled_drop(itr, Val(length(itr) ÷ 2)) itr[length(itr) ÷ 2 + 1:end] Tuple 8 identical nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) 2 times more (64 ms vs. 30 ms) 1170 times more (384 kB vs. 336 B)
unrolled_drop(itr, Val(length(itr) ÷ 2)) itr[length(itr) ÷ 2 + 1:end] Tuple 32 identical nonempty singleton Tuples better (optimized out vs. 64 B allocs) 7 times less (49 ns vs. 370 ns) similar (63 ms vs. 47 ms) similar (432 kB vs. 723 kB)
unrolled_drop(itr, Val(length(itr) ÷ 2)) itr[length(itr) ÷ 2 + 1:end] Tuple 128 identical nonempty singleton Tuples better (optimized out vs. 64 B allocs) 26 times less (40 ns vs. 1 μs) similar (66 ms vs. 47 ms) similar (622 kB vs. 723 kB)
unrolled_drop(itr, Val(length(itr) ÷ 2)) itr[length(itr) ÷ 2 + 1:end] Tuple 2 identical nonempty non-singleton Tuples similar (9 LLVM lines) similar (60 ns vs. 49 ns) similar (40 ms vs. 28 ms) 1640 times more (436 kB vs. 272 B)
unrolled_drop(itr, Val(length(itr) ÷ 2)) itr[length(itr) ÷ 2 + 1:end] Tuple 8 identical nonempty non-singleton Tuples similar (9 LLVM lines) similar (49 ns vs. 60 ns) 2 times more (59 ms vs. 28 ms) 1160 times more (580 kB vs. 512 B)
unrolled_drop(itr, Val(length(itr) ÷ 2)) itr[length(itr) ÷ 2 + 1:end] Tuple 32 identical nonempty non-singleton Tuples better (21 LLVM lines vs. 592 B allocs) 12 times less (60 ns vs. 751 ns) similar (58 ms vs. 43 ms) similar (866 kB vs. 724 kB)
unrolled_drop(itr, Val(length(itr) ÷ 2)) itr[length(itr) ÷ 2 + 1:end] Tuple 128 identical nonempty non-singleton Tuples better (69 LLVM lines vs. 2 kB allocs) 36 times less (69 ns vs. 3 μs) similar (68 ms vs. 42 ms) 2 times more (2 MB vs. 726 kB)
unrolled_drop(itr, Val(length(itr) ÷ 2)) itr[length(itr) ÷ 2 + 1:end] Tuple 2 empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (47 ms vs. 30 ms) 1035 times more (323 kB vs. 320 B)
unrolled_drop(itr, Val(length(itr) ÷ 2)) itr[length(itr) ÷ 2 + 1:end] Tuple 8 empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) 2 times more (57 ms vs. 28 ms) 1172 times more (385 kB vs. 336 B)
unrolled_drop(itr, Val(length(itr) ÷ 2)) itr[length(itr) ÷ 2 + 1:end] Tuple 32 empty & nonempty singleton Tuples better (optimized out vs. 192 B allocs) 10 times less (49 ns vs. 521 ns) similar (64 ms vs. 58 ms) 4 times less (432 kB vs. 2 MB)
unrolled_drop(itr, Val(length(itr) ÷ 2)) itr[length(itr) ÷ 2 + 1:end] Tuple 128 empty & nonempty singleton Tuples better (optimized out vs. 576 B allocs) 32 times less (49 ns vs. 2 μs) similar (66 ms vs. 79 ms) 3 times less (622 kB vs. 2 MB)
unrolled_drop(itr, Val(length(itr) ÷ 2)) itr[length(itr) ÷ 2 + 1:end] Tuple 2 nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (37 ms vs. 27 ms) 1035 times more (323 kB vs. 320 B)
unrolled_drop(itr, Val(length(itr) ÷ 2)) itr[length(itr) ÷ 2 + 1:end] Tuple 8 nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) 2 times more (56 ms vs. 27 ms) 1172 times more (385 kB vs. 336 B)
unrolled_drop(itr, Val(length(itr) ÷ 2)) itr[length(itr) ÷ 2 + 1:end] Tuple 32 nonempty singleton Tuples better (optimized out vs. 192 B allocs) 17 times less (49 ns vs. 841 ns) similar (54 ms vs. 52 ms) 4 times less (432 kB vs. 2 MB)
unrolled_drop(itr, Val(length(itr) ÷ 2)) itr[length(itr) ÷ 2 + 1:end] Tuple 128 nonempty singleton Tuples better (optimized out vs. 576 B allocs) 64 times less (49 ns vs. 3 μs) similar (56 ms vs. 64 ms) 3 times less (622 kB vs. 2 MB)
unrolled_drop(itr, Val(length(itr) ÷ 2)) itr[length(itr) ÷ 2 + 1:end] Tuple 2 nonempty non-singleton Tuples similar (8 LLVM lines) similar (49 ns vs. 60 ns) similar (37 ms vs. 27 ms) 1552 times more (461 kB vs. 304 B)
unrolled_drop(itr, Val(length(itr) ÷ 2)) itr[length(itr) ÷ 2 + 1:end] Tuple 8 nonempty non-singleton Tuples similar (19 LLVM lines) similar (60 ns vs. 60 ns) 2 times more (62 ms vs. 27 ms) 744 times more (582 kB vs. 800 B)
unrolled_drop(itr, Val(length(itr) ÷ 2)) itr[length(itr) ÷ 2 + 1:end] Tuple 32 nonempty non-singleton Tuples better (47 LLVM lines vs. 21 kB allocs) 26 times less (80 ns vs. 2 μs) similar (62 ms vs. 61 ms) 2 times less (868 kB vs. 2 MB)
unrolled_drop(itr, Val(length(itr) ÷ 2)) itr[length(itr) ÷ 2 + 1:end] Tuple 128 nonempty non-singleton Tuples better (174 LLVM lines vs. 268 kB allocs) 109 times less (250 ns vs. 27 μs) similar (84 ms vs. 83 ms) similar (2 MB vs. 2 MB)
unrolled_setindex(itr, itr[1], Val(length(itr) ÷ 2 + 1)) (itr[1:length(itr) ÷ 2]..., itr[1], itr[length(itr) ÷ 2 + 2:end]...) Tuple 1 empty singleton Tuple similar (optimized out) similar (49 ns vs. 40 ns) similar (38 ms vs. 34 ms) 975 times more (305 kB vs. 320 B)
unrolled_setindex(itr, itr[1], Val(length(itr) ÷ 2 + 1)) (itr[1:length(itr) ÷ 2]..., itr[1], itr[length(itr) ÷ 2 + 2:end]...) Tuple 1 nonempty singleton Tuple similar (optimized out) similar (49 ns vs. 49 ns) similar (38 ms vs. 32 ms) 1071 times more (335 kB vs. 320 B)
unrolled_setindex(itr, itr[1], Val(length(itr) ÷ 2 + 1)) (itr[1:length(itr) ÷ 2]..., itr[1], itr[length(itr) ÷ 2 + 2:end]...) Tuple 1 nonempty non-singleton Tuple similar (8 LLVM lines) similar (49 ns vs. 49 ns) similar (38 ms vs. 32 ms) 1235 times more (463 kB vs. 384 B)
unrolled_setindex(itr, itr[1], Val(length(itr) ÷ 2 + 1)) (itr[1:length(itr) ÷ 2]..., itr[1], itr[length(itr) ÷ 2 + 2:end]...) Tuple 2 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (40 ms vs. 34 ms) 831 times more (338 kB vs. 416 B)
unrolled_setindex(itr, itr[1], Val(length(itr) ÷ 2 + 1)) (itr[1:length(itr) ÷ 2]..., itr[1], itr[length(itr) ÷ 2 + 2:end]...) Tuple 8 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (64 ms vs. 36 ms) 658 times more (411 kB vs. 640 B)
unrolled_setindex(itr, itr[1], Val(length(itr) ÷ 2 + 1)) (itr[1:length(itr) ÷ 2]..., itr[1], itr[length(itr) ÷ 2 + 2:end]...) Tuple 32 identical nonempty singleton Tuples better (optimized out vs. 128 B allocs) 29 times less (49 ns vs. 1 μs) similar (64 ms vs. 54 ms) similar (507 kB vs. 723 kB)
unrolled_setindex(itr, itr[1], Val(length(itr) ÷ 2 + 1)) (itr[1:length(itr) ÷ 2]..., itr[1], itr[length(itr) ÷ 2 + 2:end]...) Tuple 128 identical nonempty singleton Tuples better (optimized out vs. 128 B allocs) 116 times less (40 ns vs. 5 μs) similar (68 ms vs. 48 ms) similar (891 kB vs. 724 kB)
unrolled_setindex(itr, itr[1], Val(length(itr) ÷ 2 + 1)) (itr[1:length(itr) ÷ 2]..., itr[1], itr[length(itr) ÷ 2 + 2:end]...) Tuple 2 identical nonempty non-singleton Tuples similar (10 LLVM lines) similar (49 ns vs. 49 ns) similar (46 ms vs. 34 ms) 1091 times more (512 kB vs. 480 B)
unrolled_setindex(itr, itr[1], Val(length(itr) ÷ 2 + 1)) (itr[1:length(itr) ÷ 2]..., itr[1], itr[length(itr) ÷ 2 + 2:end]...) Tuple 8 identical nonempty non-singleton Tuples similar (19 LLVM lines) similar (50 ns vs. 60 ns) similar (61 ms vs. 32 ms) 777 times more (838 kB vs. 1 kB)
unrolled_setindex(itr, itr[1], Val(length(itr) ÷ 2 + 1)) (itr[1:length(itr) ÷ 2]..., itr[1], itr[length(itr) ÷ 2 + 2:end]...) Tuple 32 identical nonempty non-singleton Tuples better (43 LLVM lines vs. 2 kB allocs) 45 times less (60 ns vs. 3 μs) similar (68 ms vs. 48 ms) 2 times more (2 MB vs. 725 kB)
unrolled_setindex(itr, itr[1], Val(length(itr) ÷ 2 + 1)) (itr[1:length(itr) ÷ 2]..., itr[1], itr[length(itr) ÷ 2 + 2:end]...) Tuple 128 identical nonempty non-singleton Tuples better (139 LLVM lines vs. 7 kB allocs) 121 times less (80 ns vs. 10 μs) 2 times more (104 ms vs. 50 ms) 8 times more (6 MB vs. 733 kB)
unrolled_setindex(itr, itr[1], Val(length(itr) ÷ 2 + 1)) (itr[1:length(itr) ÷ 2]..., itr[1], itr[length(itr) ÷ 2 + 2:end]...) Tuple 2 empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (43 ms vs. 35 ms) 1080 times more (338 kB vs. 320 B)
unrolled_setindex(itr, itr[1], Val(length(itr) ÷ 2 + 1)) (itr[1:length(itr) ÷ 2]..., itr[1], itr[length(itr) ÷ 2 + 2:end]...) Tuple 8 empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (58 ms vs. 33 ms) 613 times more (412 kB vs. 688 B)
unrolled_setindex(itr, itr[1], Val(length(itr) ÷ 2 + 1)) (itr[1:length(itr) ÷ 2]..., itr[1], itr[length(itr) ÷ 2 + 2:end]...) Tuple 32 empty & nonempty singleton Tuples better (optimized out vs. 368 B allocs) 42 times less (40 ns vs. 2 μs) similar (61 ms vs. 85 ms) 5 times less (508 kB vs. 3 MB)
unrolled_setindex(itr, itr[1], Val(length(itr) ÷ 2 + 1)) (itr[1:length(itr) ÷ 2]..., itr[1], itr[length(itr) ÷ 2 + 2:end]...) Tuple 128 empty & nonempty singleton Tuples better (optimized out vs. 1 kB allocs) 119 times less (49 ns vs. 6 μs) similar (67 ms vs. 86 ms) 2 times less (891 kB vs. 3 MB)
unrolled_setindex(itr, itr[1], Val(length(itr) ÷ 2 + 1)) (itr[1:length(itr) ÷ 2]..., itr[1], itr[length(itr) ÷ 2 + 2:end]...) Tuple 2 nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (39 ms vs. 32 ms) 675 times more (338 kB vs. 512 B)
unrolled_setindex(itr, itr[1], Val(length(itr) ÷ 2 + 1)) (itr[1:length(itr) ÷ 2]..., itr[1], itr[length(itr) ÷ 2 + 2:end]...) Tuple 8 nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (57 ms vs. 32 ms) 538 times more (412 kB vs. 784 B)
unrolled_setindex(itr, itr[1], Val(length(itr) ÷ 2 + 1)) (itr[1:length(itr) ÷ 2]..., itr[1], itr[length(itr) ÷ 2 + 2:end]...) Tuple 32 nonempty singleton Tuples better (optimized out vs. 368 B allocs) 62 times less (49 ns vs. 3 μs) similar (58 ms vs. 73 ms) 4 times less (508 kB vs. 2 MB)
unrolled_setindex(itr, itr[1], Val(length(itr) ÷ 2 + 1)) (itr[1:length(itr) ÷ 2]..., itr[1], itr[length(itr) ÷ 2 + 2:end]...) Tuple 128 nonempty singleton Tuples better (optimized out vs. 1 kB allocs) 204 times less (49 ns vs. 10 μs) similar (61 ms vs. 74 ms) 2 times less (891 kB vs. 2 MB)
unrolled_setindex(itr, itr[1], Val(length(itr) ÷ 2 + 1)) (itr[1:length(itr) ÷ 2]..., itr[1], itr[length(itr) ÷ 2 + 2:end]...) Tuple 2 nonempty non-singleton Tuples similar (10 LLVM lines) similar (49 ns vs. 49 ns) similar (39 ms vs. 32 ms) 1145 times more (537 kB vs. 480 B)
unrolled_setindex(itr, itr[1], Val(length(itr) ÷ 2 + 1)) (itr[1:length(itr) ÷ 2]..., itr[1], itr[length(itr) ÷ 2 + 2:end]...) Tuple 8 nonempty non-singleton Tuples similar (28 LLVM lines) similar (60 ns vs. 60 ns) similar (59 ms vs. 33 ms) 447 times more (840 kB vs. 2 kB)
unrolled_setindex(itr, itr[1], Val(length(itr) ÷ 2 + 1)) (itr[1:length(itr) ÷ 2]..., itr[1], itr[length(itr) ÷ 2 + 2:end]...) Tuple 32 nonempty non-singleton Tuples better (92 LLVM lines vs. 42 kB allocs) 77 times less (89 ns vs. 7 μs) similar (70 ms vs. 93 ms) similar (2 MB vs. 2 MB)
unrolled_setindex(itr, itr[1], Val(length(itr) ÷ 2 + 1)) (itr[1:length(itr) ÷ 2]..., itr[1], itr[length(itr) ÷ 2 + 2:end]...) Tuple 128 nonempty non-singleton Tuples better (553 LLVM lines vs. 541 kB allocs) 170 times less (370 ns vs. 63 μs) similar (192 ms vs. 97 ms) 2 times more (6 MB vs. 2 MB)
unrolled_insert(itr, itr[1], Val(length(itr) ÷ 2 + 1)) (itr[1:length(itr) ÷ 2]..., itr[1], itr[length(itr) ÷ 2 + 1:end]...) Tuple 1 empty singleton Tuple similar (optimized out) similar (49 ns vs. 40 ns) similar (41 ms vs. 34 ms) 1076 times more (336 kB vs. 320 B)
unrolled_insert(itr, itr[1], Val(length(itr) ÷ 2 + 1)) (itr[1:length(itr) ÷ 2]..., itr[1], itr[length(itr) ÷ 2 + 1:end]...) Tuple 1 nonempty singleton Tuple similar (optimized out) similar (49 ns vs. 40 ns) similar (39 ms vs. 32 ms) 901 times more (366 kB vs. 416 B)
unrolled_insert(itr, itr[1], Val(length(itr) ÷ 2 + 1)) (itr[1:length(itr) ÷ 2]..., itr[1], itr[length(itr) ÷ 2 + 1:end]...) Tuple 1 nonempty non-singleton Tuple similar (10 LLVM lines) similar (49 ns vs. 49 ns) similar (39 ms vs. 33 ms) 1271 times more (556 kB vs. 448 B)
unrolled_insert(itr, itr[1], Val(length(itr) ÷ 2 + 1)) (itr[1:length(itr) ÷ 2]..., itr[1], itr[length(itr) ÷ 2 + 1:end]...) Tuple 2 identical nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (39 ms vs. 34 ms) 716 times more (369 kB vs. 528 B)
unrolled_insert(itr, itr[1], Val(length(itr) ÷ 2 + 1)) (itr[1:length(itr) ÷ 2]..., itr[1], itr[length(itr) ÷ 2 + 1:end]...) Tuple 8 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (67 ms vs. 35 ms) 660 times more (444 kB vs. 688 B)
unrolled_insert(itr, itr[1], Val(length(itr) ÷ 2 + 1)) (itr[1:length(itr) ÷ 2]..., itr[1], itr[length(itr) ÷ 2 + 1:end]...) Tuple 32 identical nonempty singleton Tuples better (optimized out vs. 128 B allocs) 29 times less (49 ns vs. 1 μs) similar (68 ms vs. 54 ms) similar (540 kB vs. 724 kB)
unrolled_insert(itr, itr[1], Val(length(itr) ÷ 2 + 1)) (itr[1:length(itr) ÷ 2]..., itr[1], itr[length(itr) ÷ 2 + 1:end]...) Tuple 128 identical nonempty singleton Tuples better (optimized out vs. 128 B allocs) 117 times less (40 ns vs. 5 μs) similar (69 ms vs. 50 ms) similar (924 kB vs. 725 kB)
unrolled_insert(itr, itr[1], Val(length(itr) ÷ 2 + 1)) (itr[1:length(itr) ÷ 2]..., itr[1], itr[length(itr) ÷ 2 + 1:end]...) Tuple 2 identical nonempty non-singleton Tuples similar (11 LLVM lines) similar (60 ns vs. 60 ns) similar (43 ms vs. 34 ms) 979 times more (612 kB vs. 640 B)
unrolled_insert(itr, itr[1], Val(length(itr) ÷ 2 + 1)) (itr[1:length(itr) ÷ 2]..., itr[1], itr[length(itr) ÷ 2 + 1:end]...) Tuple 8 identical nonempty non-singleton Tuples similar (15 LLVM lines) similar (50 ns vs. 60 ns) similar (60 ms vs. 34 ms) 857 times more (1005 kB vs. 1 kB)
unrolled_insert(itr, itr[1], Val(length(itr) ÷ 2 + 1)) (itr[1:length(itr) ÷ 2]..., itr[1], itr[length(itr) ÷ 2 + 1:end]...) Tuple 32 identical nonempty non-singleton Tuples better (39 LLVM lines vs. 2 kB allocs) 46 times less (60 ns vs. 3 μs) similar (69 ms vs. 46 ms) 3 times more (2 MB vs. 726 kB)
unrolled_insert(itr, itr[1], Val(length(itr) ÷ 2 + 1)) (itr[1:length(itr) ÷ 2]..., itr[1], itr[length(itr) ÷ 2 + 1:end]...) Tuple 128 identical nonempty non-singleton Tuples better (135 LLVM lines vs. 7 kB allocs) 121 times less (80 ns vs. 10 μs) 2 times more (109 ms vs. 51 ms) 10 times more (8 MB vs. 734 kB)
unrolled_insert(itr, itr[1], Val(length(itr) ÷ 2 + 1)) (itr[1:length(itr) ÷ 2]..., itr[1], itr[length(itr) ÷ 2 + 1:end]...) Tuple 2 empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (44 ms vs. 36 ms) 716 times more (369 kB vs. 528 B)
unrolled_insert(itr, itr[1], Val(length(itr) ÷ 2 + 1)) (itr[1:length(itr) ÷ 2]..., itr[1], itr[length(itr) ÷ 2 + 1:end]...) Tuple 8 empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (59 ms vs. 34 ms) 646 times more (445 kB vs. 704 B)
unrolled_insert(itr, itr[1], Val(length(itr) ÷ 2 + 1)) (itr[1:length(itr) ÷ 2]..., itr[1], itr[length(itr) ÷ 2 + 1:end]...) Tuple 32 empty & nonempty singleton Tuples better (optimized out vs. 384 B allocs) 43 times less (40 ns vs. 2 μs) similar (66 ms vs. 90 ms) 4 times less (540 kB vs. 3 MB)
unrolled_insert(itr, itr[1], Val(length(itr) ÷ 2 + 1)) (itr[1:length(itr) ÷ 2]..., itr[1], itr[length(itr) ÷ 2 + 1:end]...) Tuple 128 empty & nonempty singleton Tuples better (optimized out vs. 1 kB allocs) 119 times less (49 ns vs. 6 μs) similar (67 ms vs. 85 ms) 2 times less (923 kB vs. 3 MB)
unrolled_insert(itr, itr[1], Val(length(itr) ÷ 2 + 1)) (itr[1:length(itr) ÷ 2]..., itr[1], itr[length(itr) ÷ 2 + 1:end]...) Tuple 2 nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (39 ms vs. 33 ms) 606 times more (369 kB vs. 624 B)
unrolled_insert(itr, itr[1], Val(length(itr) ÷ 2 + 1)) (itr[1:length(itr) ÷ 2]..., itr[1], itr[length(itr) ÷ 2 + 1:end]...) Tuple 8 nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (57 ms vs. 32 ms) 568 times more (444 kB vs. 800 B)
unrolled_insert(itr, itr[1], Val(length(itr) ÷ 2 + 1)) (itr[1:length(itr) ÷ 2]..., itr[1], itr[length(itr) ÷ 2 + 1:end]...) Tuple 32 nonempty singleton Tuples better (optimized out vs. 384 B allocs) 78 times less (40 ns vs. 3 μs) similar (58 ms vs. 75 ms) 4 times less (540 kB vs. 2 MB)
unrolled_insert(itr, itr[1], Val(length(itr) ÷ 2 + 1)) (itr[1:length(itr) ÷ 2]..., itr[1], itr[length(itr) ÷ 2 + 1:end]...) Tuple 128 nonempty singleton Tuples better (optimized out vs. 1 kB allocs) 251 times less (40 ns vs. 10 μs) similar (61 ms vs. 73 ms) 2 times less (923 kB vs. 2 MB)
unrolled_insert(itr, itr[1], Val(length(itr) ÷ 2 + 1)) (itr[1:length(itr) ÷ 2]..., itr[1], itr[length(itr) ÷ 2 + 1:end]...) Tuple 2 nonempty non-singleton Tuples similar (13 LLVM lines) similar (60 ns vs. 49 ns) similar (39 ms vs. 32 ms) 927 times more (638 kB vs. 704 B)
unrolled_insert(itr, itr[1], Val(length(itr) ÷ 2 + 1)) (itr[1:length(itr) ÷ 2]..., itr[1], itr[length(itr) ÷ 2 + 1:end]...) Tuple 8 nonempty non-singleton Tuples similar (31 LLVM lines) similar (60 ns vs. 60 ns) similar (62 ms vs. 32 ms) 503 times more (1006 kB vs. 2 kB)
unrolled_insert(itr, itr[1], Val(length(itr) ÷ 2 + 1)) (itr[1:length(itr) ÷ 2]..., itr[1], itr[length(itr) ÷ 2 + 1:end]...) Tuple 32 nonempty non-singleton Tuples better (95 LLVM lines vs. 44 kB allocs) 75 times less (89 ns vs. 7 μs) similar (74 ms vs. 97 ms) similar (2 MB vs. 2 MB)
unrolled_insert(itr, itr[1], Val(length(itr) ÷ 2 + 1)) (itr[1:length(itr) ÷ 2]..., itr[1], itr[length(itr) ÷ 2 + 1:end]...) Tuple 128 nonempty non-singleton Tuples better (558 LLVM lines vs. 546 kB allocs) 168 times less (380 ns vs. 64 μs) 2 times more (193 ms vs. 94 ms) 3 times more (8 MB vs. 2 MB)
unrolled_map(length, itr) map(length, itr) Tuple 1 empty singleton Tuple similar (optimized out) similar (49 ns vs. 40 ns) similar (30 ms vs. 27 ms) 6 times more (61 kB vs. 9 kB)
unrolled_map(length, itr) map(length, itr) Tuple 1 nonempty singleton Tuple similar (optimized out) similar (49 ns vs. 49 ns) similar (30 ms vs. 26 ms) 2 times more (95 kB vs. 40 kB)
unrolled_map(length, itr) map(length, itr) Tuple 1 nonempty non-singleton Tuple similar (optimized out) similar (40 ns vs. 49 ns) similar (26 ms vs. 25 ms) 5 times more (68 kB vs. 13 kB)
unrolled_map(length, itr) map(length, itr) Tuple 2 identical nonempty singleton Tuples similar (7 LLVM lines w/ Const) similar (49 ns vs. 40 ns) similar (32 ms vs. 27 ms) 2 times more (98 kB vs. 43 kB)
unrolled_map(length, itr) map(length, itr) Tuple 8 identical nonempty singleton Tuples similar (7 LLVM lines w/ Const) similar (49 ns vs. 40 ns) similar (52 ms vs. 26 ms) similar (170 kB vs. 303 kB)
unrolled_map(length, itr) map(length, itr) Tuple 32 identical nonempty singleton Tuples better (7 LLVM lines w/ Const vs. 592 B allocs) 19 times less (40 ns vs. 781 ns) similar (53 ms vs. 38 ms) similar (259 kB vs. 296 kB)
unrolled_map(length, itr) map(length, itr) Tuple 128 identical nonempty singleton Tuples better (69 LLVM lines w/ Const vs. 2 kB allocs) 38 times less (69 ns vs. 3 μs) 2 times more (75 ms vs. 36 ms) 2 times more (798 kB vs. 298 kB)
unrolled_map(length, itr) map(length, itr) Tuple 2 identical nonempty non-singleton Tuples similar (7 LLVM lines w/ Const) similar (40 ns vs. 40 ns) similar (27 ms vs. 28 ms) 3 times more (75 kB vs. 20 kB)
unrolled_map(length, itr) map(length, itr) Tuple 8 identical nonempty non-singleton Tuples similar (7 LLVM lines w/ Const) similar (40 ns vs. 40 ns) similar (45 ms vs. 27 ms) 2 times less (199 kB vs. 591 kB)
unrolled_map(length, itr) map(length, itr) Tuple 32 identical nonempty non-singleton Tuples better (7 LLVM lines w/ Const vs. 592 B allocs) 19 times less (40 ns vs. 782 ns) similar (45 ms vs. 33 ms) similar (394 kB vs. 295 kB)
unrolled_map(length, itr) map(length, itr) Tuple 128 identical nonempty non-singleton Tuples better (69 LLVM lines w/ Const vs. 2 kB allocs) 37 times less (70 ns vs. 3 μs) similar (70 ms vs. 36 ms) 4 times more (1 MB vs. 298 kB)
unrolled_map(length, itr) map(length, itr) Tuple 2 empty & nonempty singleton Tuples similar (7 LLVM lines w/ Const) similar (49 ns vs. 40 ns) similar (34 ms vs. 28 ms) 2 times more (98 kB vs. 43 kB)
unrolled_map(length, itr) map(length, itr) Tuple 8 empty & nonempty singleton Tuples similar (7 LLVM lines w/ Const) similar (49 ns vs. 40 ns) similar (49 ms vs. 27 ms) similar (180 kB vs. 330 kB)
unrolled_map(length, itr) map(length, itr) Tuple 32 empty & nonempty singleton Tuples better (7 LLVM lines w/ Const vs. 592 B allocs) 24 times less (49 ns vs. 1 μs) similar (52 ms vs. 37 ms) similar (287 kB vs. 320 kB)
unrolled_map(length, itr) map(length, itr) Tuple 128 empty & nonempty singleton Tuples better (71 LLVM lines w/ Const vs. 2 kB allocs) 53 times less (80 ns vs. 4 μs) similar (71 ms vs. 37 ms) 2 times more (825 kB vs. 322 kB)
unrolled_map(length, itr) map(length, itr) Tuple 2 nonempty singleton Tuples similar (7 LLVM lines w/ Const) similar (40 ns vs. 40 ns) similar (30 ms vs. 25 ms) 2 times more (103 kB vs. 47 kB)
unrolled_map(length, itr) map(length, itr) Tuple 8 nonempty singleton Tuples similar (7 LLVM lines w/ Const) similar (40 ns vs. 40 ns) similar (47 ms vs. 26 ms) similar (184 kB vs. 318 kB)
unrolled_map(length, itr) map(length, itr) Tuple 32 nonempty singleton Tuples better (7 LLVM lines w/ Const vs. 592 B allocs) 30 times less (40 ns vs. 1 μs) similar (47 ms vs. 35 ms) similar (287 kB vs. 324 kB)
unrolled_map(length, itr) map(length, itr) Tuple 128 nonempty singleton Tuples better (69 LLVM lines w/ Const vs. 2 kB allocs) 53 times less (80 ns vs. 4 μs) similar (66 ms vs. 34 ms) 2 times more (825 kB vs. 326 kB)
unrolled_map(length, itr) map(length, itr) Tuple 2 nonempty non-singleton Tuples similar (7 LLVM lines w/ Const) similar (40 ns vs. 40 ns) similar (25 ms vs. 25 ms) 2 times more (101 kB vs. 47 kB)
unrolled_map(length, itr) map(length, itr) Tuple 8 nonempty non-singleton Tuples similar (7 LLVM lines w/ Const) similar (40 ns vs. 40 ns) similar (43 ms vs. 27 ms) 2 times less (200 kB vs. 594 kB)
unrolled_map(length, itr) map(length, itr) Tuple 32 nonempty non-singleton Tuples better (7 LLVM lines w/ Const vs. 39 kB allocs) 90 times less (40 ns vs. 4 μs) similar (46 ms vs. 37 ms) similar (409 kB vs. 339 kB)
unrolled_map(length, itr) map(length, itr) Tuple 128 nonempty non-singleton Tuples better (69 LLVM lines w/ Const vs. 528 kB allocs) 625 times less (70 ns vs. 44 μs) similar (65 ms vs. 37 ms) similar (1 MB vs. 829 kB)
unrolled_any(isempty, itr) any(isempty, itr) Tuple 1 empty singleton Tuple similar (optimized out) similar (49 ns vs. 40 ns) similar (30 ms vs. 33 ms) 2 times less (54 kB vs. 159 kB)
unrolled_any(isempty, itr) any(isempty, itr) Tuple 1 nonempty singleton Tuple similar (optimized out) similar (49 ns vs. 49 ns) similar (29 ms vs. 32 ms) 3 times less (88 kB vs. 281 kB)
unrolled_any(isempty, itr) any(isempty, itr) Tuple 1 nonempty non-singleton Tuple similar (optimized out) similar (40 ns vs. 40 ns) similar (26 ms vs. 33 ms) 5 times less (62 kB vs. 337 kB)
unrolled_any(isempty, itr) any(isempty, itr) Tuple 2 identical nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (32 ms vs. 36 ms) 4 times less (92 kB vs. 450 kB)
unrolled_any(isempty, itr) any(isempty, itr) Tuple 8 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (54 ms vs. 39 ms) 2 times less (175 kB vs. 450 kB)
unrolled_any(isempty, itr) any(isempty, itr) Tuple 32 identical nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (57 ms vs. 37 ms) similar (300 kB vs. 450 kB)
unrolled_any(isempty, itr) any(isempty, itr) Tuple 128 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (68 ms vs. 41 ms) similar (799 kB vs. 450 kB)
unrolled_any(isempty, itr) any(isempty, itr) Tuple 2 identical nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (31 ms vs. 37 ms) 7 times less (70 kB vs. 521 kB)
unrolled_any(isempty, itr) any(isempty, itr) Tuple 8 identical nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (46 ms vs. 35 ms) 2 times less (205 kB vs. 546 kB)
unrolled_any(isempty, itr) any(isempty, itr) Tuple 32 identical nonempty non-singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (48 ms vs. 35 ms) similar (436 kB vs. 546 kB)
unrolled_any(isempty, itr) any(isempty, itr) Tuple 128 identical nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (57 ms vs. 37 ms) 2 times more (1 MB vs. 547 kB)
unrolled_any(isempty, itr) any(isempty, itr) Tuple 2 empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (31 ms vs. 34 ms) 4 times less (86 kB vs. 377 kB)
unrolled_any(isempty, itr) any(isempty, itr) Tuple 8 empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (51 ms vs. 33 ms) 5 times less (156 kB vs. 805 kB)
unrolled_any(isempty, itr) any(isempty, itr) Tuple 32 empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (56 ms vs. 40 ms) 12 times less (224 kB vs. 3 MB)
unrolled_any(isempty, itr) any(isempty, itr) Tuple 128 empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (62 ms vs. 31 ms) similar (497 kB vs. 340 kB)
unrolled_any(isempty, itr) any(isempty, itr) Tuple 2 nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (30 ms vs. 34 ms) 5 times less (97 kB vs. 532 kB)
unrolled_any(isempty, itr) any(isempty, itr) Tuple 8 nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (48 ms vs. 55 ms) 7 times less (188 kB vs. 1 MB)
unrolled_any(isempty, itr) any(isempty, itr) Tuple 32 nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (52 ms vs. 96 ms) 12 times less (327 kB vs. 4 MB)
unrolled_any(isempty, itr) any(isempty, itr) Tuple 128 nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (59 ms vs. 36 ms) similar (825 kB vs. 504 kB)
unrolled_any(isempty, itr) any(isempty, itr) Tuple 2 nonempty non-singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (25 ms vs. 36 ms) 5 times less (100 kB vs. 532 kB)
unrolled_any(isempty, itr) any(isempty, itr) Tuple 8 nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (46 ms vs. 60 ms) 6 times less (218 kB vs. 1 MB)
unrolled_any(isempty, itr) any(isempty, itr) Tuple 32 nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) 2 times less (49 ms vs. 121 ms) 10 times less (462 kB vs. 5 MB)
unrolled_any(isempty, itr) any(isempty, itr) Tuple 128 nonempty non-singleton Tuples better (optimized out vs. 521 kB allocs) 1110 times less (40 ns vs. 44 μs) similar (57 ms vs. 40 ms) similar (1 MB vs. 1 MB)
unrolled_any((x->length(x) == rand(8:10)), itr) any((x->length(x) == rand(8:10)), itr) Tuple 1 empty singleton Tuple similar (9 LLVM lines) similar (49 ns vs. 49 ns) similar (74 ms vs. 74 ms) similar (2 MB vs. 3 MB)
unrolled_any((x->length(x) == rand(8:10)), itr) any((x->length(x) == rand(8:10)), itr) Tuple 1 nonempty singleton Tuple similar (9 LLVM lines) similar (49 ns vs. 49 ns) similar (74 ms vs. 79 ms) similar (2 MB vs. 3 MB)
unrolled_any((x->length(x) == rand(8:10)), itr) any((x->length(x) == rand(8:10)), itr) Tuple 1 nonempty non-singleton Tuple similar (9 LLVM lines) similar (49 ns vs. 49 ns) similar (73 ms vs. 78 ms) similar (2 MB vs. 3 MB)
unrolled_any((x->length(x) == rand(8:10)), itr) any((x->length(x) == rand(8:10)), itr) Tuple 2 identical nonempty singleton Tuples similar (18 LLVM lines) similar (49 ns vs. 49 ns) similar (83 ms vs. 77 ms) similar (2 MB vs. 3 MB)
unrolled_any((x->length(x) == rand(8:10)), itr) any((x->length(x) == rand(8:10)), itr) Tuple 8 identical nonempty singleton Tuples similar (48 LLVM lines) similar (70 ns vs. 69 ns) similar (109 ms vs. 90 ms) similar (3 MB vs. 3 MB)
unrolled_any((x->length(x) == rand(8:10)), itr) any((x->length(x) == rand(8:10)), itr) Tuple 32 identical nonempty singleton Tuples similar (168 LLVM lines) similar (140 ns vs. 150 ns) similar (113 ms vs. 88 ms) similar (3 MB vs. 3 MB)
unrolled_any((x->length(x) == rand(8:10)), itr) any((x->length(x) == rand(8:10)), itr) Tuple 128 identical nonempty singleton Tuples similar (648 LLVM lines) similar (430 ns vs. 450 ns) similar (147 ms vs. 89 ms) similar (5 MB vs. 3 MB)
unrolled_any((x->length(x) == rand(8:10)), itr) any((x->length(x) == rand(8:10)), itr) Tuple 2 identical nonempty non-singleton Tuples similar (18 LLVM lines) similar (49 ns vs. 60 ns) similar (75 ms vs. 83 ms) similar (2 MB vs. 3 MB)
unrolled_any((x->length(x) == rand(8:10)), itr) any((x->length(x) == rand(8:10)), itr) Tuple 8 identical nonempty non-singleton Tuples similar (48 LLVM lines) similar (69 ns vs. 69 ns) similar (94 ms vs. 87 ms) similar (3 MB vs. 3 MB)
unrolled_any((x->length(x) == rand(8:10)), itr) any((x->length(x) == rand(8:10)), itr) Tuple 32 identical nonempty non-singleton Tuples similar (168 LLVM lines) similar (140 ns vs. 150 ns) similar (103 ms vs. 83 ms) similar (3 MB vs. 3 MB)
unrolled_any((x->length(x) == rand(8:10)), itr) any((x->length(x) == rand(8:10)), itr) Tuple 128 identical nonempty non-singleton Tuples similar (648 LLVM lines) similar (441 ns vs. 450 ns) similar (135 ms vs. 81 ms) 2 times more (6 MB vs. 3 MB)
unrolled_any((x->length(x) == rand(8:10)), itr) any((x->length(x) == rand(8:10)), itr) Tuple 2 empty & nonempty singleton Tuples similar (18 LLVM lines) similar (49 ns vs. 49 ns) similar (86 ms vs. 85 ms) similar (3 MB vs. 3 MB)
unrolled_any((x->length(x) == rand(8:10)), itr) any((x->length(x) == rand(8:10)), itr) Tuple 8 empty & nonempty singleton Tuples better (48 LLVM lines vs. 96 B allocs) 33 times less (69 ns vs. 2 μs) similar (103 ms vs. 115 ms) similar (3 MB vs. 5 MB)
unrolled_any((x->length(x) == rand(8:10)), itr) any((x->length(x) == rand(8:10)), itr) Tuple 32 empty & nonempty singleton Tuples better (168 LLVM lines vs. 496 B allocs) 541 times less (140 ns vs. 76 μs) similar (113 ms vs. 183 ms) 2 times less (4 MB vs. 9 MB)
unrolled_any((x->length(x) == rand(8:10)), itr) any((x->length(x) == rand(8:10)), itr) Tuple 128 empty & nonempty singleton Tuples similar (648 LLVM lines) 4 times less (410 ns vs. 2 μs) similar (137 ms vs. 82 ms) similar (6 MB vs. 3 MB)
unrolled_any((x->length(x) == rand(8:10)), itr) any((x->length(x) == rand(8:10)), itr) Tuple 2 nonempty singleton Tuples similar (18 LLVM lines) similar (49 ns vs. 60 ns) similar (78 ms vs. 78 ms) similar (3 MB vs. 3 MB)
unrolled_any((x->length(x) == rand(8:10)), itr) any((x->length(x) == rand(8:10)), itr) Tuple 8 nonempty singleton Tuples better (48 LLVM lines vs. 112 B allocs) 232 times less (70 ns vs. 16 μs) similar (99 ms vs. 111 ms) similar (3 MB vs. 5 MB)
unrolled_any((x->length(x) == rand(8:10)), itr) any((x->length(x) == rand(8:10)), itr) Tuple 32 nonempty singleton Tuples better (168 LLVM lines vs. 496 B allocs) 559 times less (150 ns vs. 84 μs) similar (103 ms vs. 158 ms) 2 times less (3 MB vs. 9 MB)
unrolled_any((x->length(x) == rand(8:10)), itr) any((x->length(x) == rand(8:10)), itr) Tuple 128 nonempty singleton Tuples similar (648 LLVM lines) 3 times less (430 ns vs. 2 μs) similar (134 ms vs. 79 ms) similar (6 MB vs. 3 MB)
unrolled_any((x->length(x) == rand(8:10)), itr) any((x->length(x) == rand(8:10)), itr) Tuple 2 nonempty non-singleton Tuples similar (18 LLVM lines) similar (49 ns vs. 49 ns) similar (70 ms vs. 79 ms) similar (3 MB vs. 3 MB)
unrolled_any((x->length(x) == rand(8:10)), itr) any((x->length(x) == rand(8:10)), itr) Tuple 8 nonempty non-singleton Tuples better (48 LLVM lines vs. 2 kB allocs) 154 times less (80 ns vs. 12 μs) similar (95 ms vs. 111 ms) similar (3 MB vs. 5 MB)
unrolled_any((x->length(x) == rand(8:10)), itr) any((x->length(x) == rand(8:10)), itr) Tuple 32 nonempty non-singleton Tuples better (168 LLVM lines vs. 45 kB allocs) 647 times less (140 ns vs. 91 μs) similar (102 ms vs. 179 ms) 2 times less (4 MB vs. 9 MB)
unrolled_any((x->length(x) == rand(8:10)), itr) any((x->length(x) == rand(8:10)), itr) Tuple 128 nonempty non-singleton Tuples better (648 LLVM lines vs. 521 kB allocs) 116 times less (410 ns vs. 48 μs) similar (138 ms vs. 88 ms) similar (7 MB vs. 3 MB)
unrolled_all(isempty, itr) all(isempty, itr) Tuple 1 empty singleton Tuple similar (optimized out) similar (40 ns vs. 40 ns) similar (29 ms vs. 31 ms) 3 times less (54 kB vs. 165 kB)
unrolled_all(isempty, itr) all(isempty, itr) Tuple 1 nonempty singleton Tuple similar (optimized out) similar (49 ns vs. 49 ns) similar (29 ms vs. 30 ms) 3 times less (88 kB vs. 283 kB)
unrolled_all(isempty, itr) all(isempty, itr) Tuple 1 nonempty non-singleton Tuple similar (optimized out) similar (49 ns vs. 40 ns) similar (25 ms vs. 33 ms) 5 times less (62 kB vs. 326 kB)
unrolled_all(isempty, itr) all(isempty, itr) Tuple 2 identical nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (30 ms vs. 32 ms) 3 times less (90 kB vs. 332 kB)
unrolled_all(isempty, itr) all(isempty, itr) Tuple 8 identical nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (56 ms vs. 33 ms) 2 times less (159 kB vs. 332 kB)
unrolled_all(isempty, itr) all(isempty, itr) Tuple 32 identical nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (55 ms vs. 34 ms) similar (227 kB vs. 332 kB)
unrolled_all(isempty, itr) all(isempty, itr) Tuple 128 identical nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (61 ms vs. 34 ms) similar (500 kB vs. 332 kB)
unrolled_all(isempty, itr) all(isempty, itr) Tuple 2 identical nonempty non-singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (27 ms vs. 33 ms) 5 times less (64 kB vs. 376 kB)
unrolled_all(isempty, itr) all(isempty, itr) Tuple 8 identical nonempty non-singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (50 ms vs. 35 ms) 2 times less (158 kB vs. 401 kB)
unrolled_all(isempty, itr) all(isempty, itr) Tuple 32 identical nonempty non-singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (47 ms vs. 32 ms) similar (226 kB vs. 401 kB)
unrolled_all(isempty, itr) all(isempty, itr) Tuple 128 identical nonempty non-singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (52 ms vs. 31 ms) similar (499 kB vs. 402 kB)
unrolled_all(isempty, itr) all(isempty, itr) Tuple 2 empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (31 ms vs. 32 ms) 4 times less (92 kB vs. 415 kB)
unrolled_all(isempty, itr) all(isempty, itr) Tuple 8 empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (50 ms vs. 35 ms) 5 times less (162 kB vs. 860 kB)
unrolled_all(isempty, itr) all(isempty, itr) Tuple 32 empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (56 ms vs. 40 ms) 12 times less (230 kB vs. 3 MB)
unrolled_all(isempty, itr) all(isempty, itr) Tuple 128 empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (58 ms vs. 37 ms) similar (503 kB vs. 508 kB)
unrolled_all(isempty, itr) all(isempty, itr) Tuple 2 nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (29 ms vs. 30 ms) 4 times less (90 kB vs. 398 kB)
unrolled_all(isempty, itr) all(isempty, itr) Tuple 8 nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (50 ms vs. 31 ms) 5 times less (160 kB vs. 842 kB)
unrolled_all(isempty, itr) all(isempty, itr) Tuple 32 nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (50 ms vs. 38 ms) 12 times less (228 kB vs. 3 MB)
unrolled_all(isempty, itr) all(isempty, itr) Tuple 128 nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (55 ms vs. 30 ms) similar (501 kB vs. 347 kB)
unrolled_all(isempty, itr) all(isempty, itr) Tuple 2 nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (25 ms vs. 31 ms) 4 times less (89 kB vs. 397 kB)
unrolled_all(isempty, itr) all(isempty, itr) Tuple 8 nonempty non-singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (48 ms vs. 36 ms) 5 times less (159 kB vs. 898 kB)
unrolled_all(isempty, itr) all(isempty, itr) Tuple 32 nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (49 ms vs. 52 ms) 15 times less (227 kB vs. 3 MB)
unrolled_all(isempty, itr) all(isempty, itr) Tuple 128 nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (52 ms vs. 32 ms) similar (499 kB vs. 414 kB)
unrolled_all((x->length(x) == rand(8:10)), itr) all((x->length(x) == rand(8:10)), itr) Tuple 1 empty singleton Tuple similar (9 LLVM lines) similar (49 ns vs. 49 ns) similar (76 ms vs. 77 ms) similar (2 MB vs. 3 MB)
unrolled_all((x->length(x) == rand(8:10)), itr) all((x->length(x) == rand(8:10)), itr) Tuple 1 nonempty singleton Tuple similar (9 LLVM lines) similar (49 ns vs. 49 ns) similar (72 ms vs. 75 ms) similar (2 MB vs. 3 MB)
unrolled_all((x->length(x) == rand(8:10)), itr) all((x->length(x) == rand(8:10)), itr) Tuple 1 nonempty non-singleton Tuple similar (9 LLVM lines) similar (49 ns vs. 49 ns) similar (78 ms vs. 83 ms) similar (2 MB vs. 3 MB)
unrolled_all((x->length(x) == rand(8:10)), itr) all((x->length(x) == rand(8:10)), itr) Tuple 2 identical nonempty singleton Tuples similar (18 LLVM lines) similar (49 ns vs. 49 ns) similar (76 ms vs. 83 ms) similar (2 MB vs. 3 MB)
unrolled_all((x->length(x) == rand(8:10)), itr) all((x->length(x) == rand(8:10)), itr) Tuple 8 identical nonempty singleton Tuples similar (48 LLVM lines) similar (49 ns vs. 60 ns) similar (109 ms vs. 107 ms) similar (3 MB vs. 3 MB)
unrolled_all((x->length(x) == rand(8:10)), itr) all((x->length(x) == rand(8:10)), itr) Tuple 32 identical nonempty singleton Tuples similar (168 LLVM lines) similar (49 ns vs. 49 ns) similar (119 ms vs. 87 ms) similar (3 MB vs. 3 MB)
unrolled_all((x->length(x) == rand(8:10)), itr) all((x->length(x) == rand(8:10)), itr) Tuple 128 identical nonempty singleton Tuples similar (648 LLVM lines) similar (49 ns vs. 60 ns) similar (146 ms vs. 85 ms) similar (5 MB vs. 3 MB)
unrolled_all((x->length(x) == rand(8:10)), itr) all((x->length(x) == rand(8:10)), itr) Tuple 2 identical nonempty non-singleton Tuples similar (18 LLVM lines) similar (49 ns vs. 60 ns) similar (76 ms vs. 88 ms) similar (2 MB vs. 3 MB)
unrolled_all((x->length(x) == rand(8:10)), itr) all((x->length(x) == rand(8:10)), itr) Tuple 8 identical nonempty non-singleton Tuples similar (48 LLVM lines) similar (49 ns vs. 60 ns) similar (103 ms vs. 88 ms) similar (3 MB vs. 3 MB)
unrolled_all((x->length(x) == rand(8:10)), itr) all((x->length(x) == rand(8:10)), itr) Tuple 32 identical nonempty non-singleton Tuples similar (168 LLVM lines) similar (49 ns vs. 60 ns) similar (99 ms vs. 83 ms) similar (3 MB vs. 3 MB)
unrolled_all((x->length(x) == rand(8:10)), itr) all((x->length(x) == rand(8:10)), itr) Tuple 128 identical nonempty non-singleton Tuples similar (648 LLVM lines) similar (49 ns vs. 60 ns) similar (135 ms vs. 81 ms) 2 times more (6 MB vs. 3 MB)
unrolled_all((x->length(x) == rand(8:10)), itr) all((x->length(x) == rand(8:10)), itr) Tuple 2 empty & nonempty singleton Tuples similar (18 LLVM lines) similar (49 ns vs. 49 ns) similar (81 ms vs. 87 ms) similar (3 MB vs. 3 MB)
unrolled_all((x->length(x) == rand(8:10)), itr) all((x->length(x) == rand(8:10)), itr) Tuple 8 empty & nonempty singleton Tuples similar (48 LLVM lines) 7 times less (49 ns vs. 370 ns) similar (109 ms vs. 90 ms) similar (3 MB vs. 3 MB)
unrolled_all((x->length(x) == rand(8:10)), itr) all((x->length(x) == rand(8:10)), itr) Tuple 32 empty & nonempty singleton Tuples similar (168 LLVM lines) 58 times less (49 ns vs. 3 μs) similar (114 ms vs. 92 ms) similar (4 MB vs. 5 MB)
unrolled_all((x->length(x) == rand(8:10)), itr) all((x->length(x) == rand(8:10)), itr) Tuple 128 empty & nonempty singleton Tuples similar (648 LLVM lines) similar (49 ns vs. 49 ns) similar (136 ms vs. 81 ms) similar (6 MB vs. 3 MB)
unrolled_all((x->length(x) == rand(8:10)), itr) all((x->length(x) == rand(8:10)), itr) Tuple 2 nonempty singleton Tuples similar (18 LLVM lines) similar (49 ns vs. 49 ns) similar (76 ms vs. 78 ms) similar (3 MB vs. 3 MB)
unrolled_all((x->length(x) == rand(8:10)), itr) all((x->length(x) == rand(8:10)), itr) Tuple 8 nonempty singleton Tuples similar (48 LLVM lines) 47 times less (49 ns vs. 2 μs) similar (98 ms vs. 80 ms) similar (3 MB vs. 3 MB)
unrolled_all((x->length(x) == rand(8:10)), itr) all((x->length(x) == rand(8:10)), itr) Tuple 32 nonempty singleton Tuples similar (168 LLVM lines) 59 times less (49 ns vs. 3 μs) similar (103 ms vs. 85 ms) similar (3 MB vs. 5 MB)
unrolled_all((x->length(x) == rand(8:10)), itr) all((x->length(x) == rand(8:10)), itr) Tuple 128 nonempty singleton Tuples similar (648 LLVM lines) similar (49 ns vs. 49 ns) similar (130 ms vs. 78 ms) similar (6 MB vs. 3 MB)
unrolled_all((x->length(x) == rand(8:10)), itr) all((x->length(x) == rand(8:10)), itr) Tuple 2 nonempty non-singleton Tuples similar (18 LLVM lines) similar (49 ns vs. 49 ns) similar (87 ms vs. 78 ms) similar (3 MB vs. 3 MB)
unrolled_all((x->length(x) == rand(8:10)), itr) all((x->length(x) == rand(8:10)), itr) Tuple 8 nonempty non-singleton Tuples better (48 LLVM lines vs. 448 B allocs) 48 times less (49 ns vs. 2 μs) similar (94 ms vs. 84 ms) similar (3 MB vs. 4 MB)
unrolled_all((x->length(x) == rand(8:10)), itr) all((x->length(x) == rand(8:10)), itr) Tuple 32 nonempty non-singleton Tuples better (168 LLVM lines vs. 3 kB allocs) 67 times less (49 ns vs. 3 μs) similar (107 ms vs. 107 ms) similar (4 MB vs. 6 MB)
unrolled_all((x->length(x) == rand(8:10)), itr) all((x->length(x) == rand(8:10)), itr) Tuple 128 nonempty non-singleton Tuples similar (648 LLVM lines) similar (60 ns vs. 49 ns) similar (131 ms vs. 83 ms) 2 times more (7 MB vs. 3 MB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) foreach((x->@assert(length(x) <= 7)), itr) Tuple 1 empty singleton Tuple similar (optimized out) similar (40 ns vs. 40 ns) similar (53 ms vs. 75 ms) 8 times less (66 kB vs. 544 kB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) foreach((x->@assert(length(x) <= 7)), itr) Tuple 1 nonempty singleton Tuple similar (optimized out) similar (40 ns vs. 40 ns) similar (51 ms vs. 75 ms) 5 times less (100 kB vs. 582 kB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) foreach((x->@assert(length(x) <= 7)), itr) Tuple 1 nonempty non-singleton Tuple similar (optimized out) similar (40 ns vs. 40 ns) similar (50 ms vs. 54 ms) 9 times less (73 kB vs. 726 kB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) foreach((x->@assert(length(x) <= 7)), itr) Tuple 2 identical nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (53 ms vs. 77 ms) 5 times less (103 kB vs. 585 kB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) foreach((x->@assert(length(x) <= 7)), itr) Tuple 8 identical nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (84 ms vs. 87 ms) 3 times less (174 kB vs. 606 kB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) foreach((x->@assert(length(x) <= 7)), itr) Tuple 32 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (78 ms vs. 82 ms) 2 times less (261 kB vs. 703 kB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) foreach((x->@assert(length(x) <= 7)), itr) Tuple 128 identical nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (81 ms vs. 88 ms) 2 times less (612 kB vs. 1 MB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) foreach((x->@assert(length(x) <= 7)), itr) Tuple 2 identical nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (54 ms vs. 59 ms) 9 times less (80 kB vs. 732 kB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) foreach((x->@assert(length(x) <= 7)), itr) Tuple 8 identical nonempty non-singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (72 ms vs. 54 ms) 3 times less (203 kB vs. 806 kB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) foreach((x->@assert(length(x) <= 7)), itr) Tuple 32 identical nonempty non-singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (68 ms vs. 55 ms) 2 times less (397 kB vs. 1005 kB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) foreach((x->@assert(length(x) <= 7)), itr) Tuple 128 identical nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (73 ms vs. 60 ms) similar (1 MB vs. 2 MB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) foreach((x->@assert(length(x) <= 7)), itr) Tuple 2 empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (56 ms vs. 101 ms) 5 times less (112 kB vs. 608 kB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) foreach((x->@assert(length(x) <= 7)), itr) Tuple 8 empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (80 ms vs. 84 ms) 3 times less (212 kB vs. 684 kB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) foreach((x->@assert(length(x) <= 7)), itr) Tuple 32 empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (77 ms vs. 83 ms) 2 times less (356 kB vs. 891 kB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) foreach((x->@assert(length(x) <= 7)), itr) Tuple 128 empty & nonempty singleton Tuples better (optimized out vs. 54 LLVM lines w/ Const) 35 times less (40 ns vs. 1 μs) similar (76 ms vs. 89 ms) 2 times less (705 kB vs. 2 MB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) foreach((x->@assert(length(x) <= 7)), itr) Tuple 2 nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (53 ms vs. 74 ms) 5 times less (117 kB vs. 613 kB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) foreach((x->@assert(length(x) <= 7)), itr) Tuple 8 nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (72 ms vs. 72 ms) 3 times less (217 kB vs. 688 kB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) foreach((x->@assert(length(x) <= 7)), itr) Tuple 32 nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (70 ms vs. 75 ms) 2 times less (346 kB vs. 868 kB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) foreach((x->@assert(length(x) <= 7)), itr) Tuple 128 nonempty singleton Tuples better (optimized out vs. 54 LLVM lines w/ Const) 28 times less (49 ns vs. 1 μs) similar (78 ms vs. 85 ms) 2 times less (695 kB vs. 2 MB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) foreach((x->@assert(length(x) <= 7)), itr) Tuple 2 nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (48 ms vs. 53 ms) 6 times less (115 kB vs. 781 kB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) foreach((x->@assert(length(x) <= 7)), itr) Tuple 8 nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (67 ms vs. 56 ms) 3 times less (232 kB vs. 875 kB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) foreach((x->@assert(length(x) <= 7)), itr) Tuple 32 nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (73 ms vs. 57 ms) 2 times less (468 kB vs. 1 MB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) foreach((x->@assert(length(x) <= 7)), itr) Tuple 128 nonempty non-singleton Tuples better (optimized out vs. 521 kB allocs) 1107 times less (40 ns vs. 44 μs) similar (73 ms vs. 65 ms) 2 times less (1 MB vs. 2 MB)
unrolled_reduce(tuple, itr) reduce(tuple, itr) Tuple 1 empty singleton Tuple similar (optimized out) similar (40 ns vs. 40 ns) 2 times less (30 ms vs. 61 ms) 21 times less (96 kB vs. 2 MB)
unrolled_reduce(tuple, itr) reduce(tuple, itr) Tuple 1 nonempty singleton Tuple similar (optimized out) similar (49 ns vs. 40 ns) 2 times less (30 ms vs. 62 ms) 16 times less (126 kB vs. 2 MB)
unrolled_reduce(tuple, itr) reduce(tuple, itr) Tuple 1 nonempty non-singleton Tuple similar (8 LLVM lines) similar (60 ns vs. 60 ns) similar (31 ms vs. 53 ms) 10 times less (320 kB vs. 3 MB)
unrolled_reduce(tuple, itr) reduce(tuple, itr) Tuple 2 identical nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) 2 times less (30 ms vs. 63 ms) 19 times less (129 kB vs. 2 MB)
unrolled_reduce(tuple, itr) reduce(tuple, itr) Tuple 8 identical nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (63 ms vs. 74 ms) similar (2 MB vs. 3 MB)
unrolled_reduce(tuple, itr) reduce(tuple, itr) Tuple 32 identical nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (62 ms vs. 72 ms) similar (2 MB vs. 4 MB)
unrolled_reduce(tuple, itr) reduce(tuple, itr) Tuple 128 identical nonempty singleton Tuples better (optimized out vs. 35 LLVM lines) 108 times less (40 ns vs. 4 μs) similar (72 ms vs. 77 ms) similar (3 MB vs. 2 MB)
unrolled_reduce(tuple, itr) reduce(tuple, itr) Tuple 2 identical nonempty non-singleton Tuples similar (8 LLVM lines) similar (49 ns vs. 49 ns) similar (34 ms vs. 53 ms) 9 times less (350 kB vs. 3 MB)
unrolled_reduce(tuple, itr) reduce(tuple, itr) Tuple 8 identical nonempty non-singleton Tuples similar (12 LLVM lines) similar (49 ns vs. 60 ns) similar (60 ms vs. 54 ms) similar (2 MB vs. 4 MB)
unrolled_reduce(tuple, itr) reduce(tuple, itr) Tuple 32 identical nonempty non-singleton Tuples similar (36 LLVM lines) similar (60 ns vs. 60 ns) similar (68 ms vs. 61 ms) 2 times less (3 MB vs. 7 MB)
unrolled_reduce(tuple, itr) reduce(tuple, itr) Tuple 128 identical nonempty non-singleton Tuples better (132 LLVM lines vs. 70 kB allocs) 168 times less (80 ns vs. 14 μs) similar (108 ms vs. 55 ms) 2 times more (6 MB vs. 3 MB)
unrolled_reduce(tuple, itr) reduce(tuple, itr) Tuple 2 empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) 2 times less (32 ms vs. 70 ms) 21 times less (133 kB vs. 3 MB)
unrolled_reduce(tuple, itr) reduce(tuple, itr) Tuple 8 empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (62 ms vs. 73 ms) similar (2 MB vs. 4 MB)
unrolled_reduce(tuple, itr) reduce(tuple, itr) Tuple 32 empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (66 ms vs. 79 ms) 2 times less (2 MB vs. 5 MB)
unrolled_reduce(tuple, itr) reduce(tuple, itr) Tuple 128 empty & nonempty singleton Tuples better (optimized out vs. 40 LLVM lines) 140 times less (49 ns vs. 7 μs) similar (69 ms vs. 70 ms) similar (3 MB vs. 3 MB)
unrolled_reduce(tuple, itr) reduce(tuple, itr) Tuple 2 nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) 2 times less (29 ms vs. 60 ms) 21 times less (133 kB vs. 3 MB)
unrolled_reduce(tuple, itr) reduce(tuple, itr) Tuple 8 nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (55 ms vs. 65 ms) similar (2 MB vs. 4 MB)
unrolled_reduce(tuple, itr) reduce(tuple, itr) Tuple 32 nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (60 ms vs. 70 ms) 2 times less (2 MB vs. 5 MB)
unrolled_reduce(tuple, itr) reduce(tuple, itr) Tuple 128 nonempty singleton Tuples better (optimized out vs. 39 LLVM lines) 139 times less (49 ns vs. 7 μs) similar (69 ms vs. 72 ms) similar (3 MB vs. 3 MB)
unrolled_reduce(tuple, itr) reduce(tuple, itr) Tuple 2 nonempty non-singleton Tuples similar (11 LLVM lines) similar (49 ns vs. 49 ns) similar (29 ms vs. 49 ms) 9 times less (397 kB vs. 4 MB)
unrolled_reduce(tuple, itr) reduce(tuple, itr) Tuple 8 nonempty non-singleton Tuples similar (29 LLVM lines) similar (60 ns vs. 60 ns) similar (63 ms vs. 61 ms) 2 times less (2 MB vs. 5 MB)
unrolled_reduce(tuple, itr) reduce(tuple, itr) Tuple 32 nonempty non-singleton Tuples similar (93 LLVM lines) similar (89 ns vs. 89 ns) similar (71 ms vs. 75 ms) 2 times less (3 MB vs. 9 MB)
unrolled_reduce(tuple, itr) reduce(tuple, itr) Tuple 128 nonempty non-singleton Tuples better (556 LLVM lines vs. 792 kB allocs) 304 times less (360 ns vs. 110 μs) 3 times more (189 ms vs. 54 ms) similar (6 MB vs. 4 MB)
unrolled_reduce(tuple, itr; init = ()) reduce(tuple, itr; init = ()) Tuple 1 empty singleton Tuple similar (optimized out) similar (40 ns vs. 49 ns) similar (33 ms vs. 65 ms) 25 times less (104 kB vs. 3 MB)
unrolled_reduce(tuple, itr; init = ()) reduce(tuple, itr; init = ()) Tuple 1 nonempty singleton Tuple similar (optimized out) similar (40 ns vs. 49 ns) 2 times less (30 ms vs. 64 ms) 19 times less (134 kB vs. 3 MB)
unrolled_reduce(tuple, itr; init = ()) reduce(tuple, itr; init = ()) Tuple 1 nonempty non-singleton Tuple similar (8 LLVM lines) similar (50 ns vs. 60 ns) similar (31 ms vs. 55 ms) 10 times less (325 kB vs. 3 MB)
unrolled_reduce(tuple, itr; init = ()) reduce(tuple, itr; init = ()) Tuple 2 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) 2 times less (31 ms vs. 71 ms) 20 times less (136 kB vs. 3 MB)
unrolled_reduce(tuple, itr; init = ()) reduce(tuple, itr; init = ()) Tuple 8 identical nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (61 ms vs. 79 ms) similar (2 MB vs. 3 MB)
unrolled_reduce(tuple, itr; init = ()) reduce(tuple, itr; init = ()) Tuple 32 identical nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (63 ms vs. 78 ms) similar (2 MB vs. 4 MB)
unrolled_reduce(tuple, itr; init = ()) reduce(tuple, itr; init = ()) Tuple 128 identical nonempty singleton Tuples better (optimized out vs. 35 LLVM lines) 106 times less (40 ns vs. 4 μs) similar (73 ms vs. 77 ms) similar (3 MB vs. 2 MB)
unrolled_reduce(tuple, itr; init = ()) reduce(tuple, itr; init = ()) Tuple 2 identical nonempty non-singleton Tuples similar (8 LLVM lines) similar (49 ns vs. 49 ns) similar (33 ms vs. 55 ms) 10 times less (354 kB vs. 4 MB)
unrolled_reduce(tuple, itr; init = ()) reduce(tuple, itr; init = ()) Tuple 8 identical nonempty non-singleton Tuples similar (12 LLVM lines) similar (50 ns vs. 49 ns) similar (61 ms vs. 57 ms) similar (2 MB vs. 4 MB)
unrolled_reduce(tuple, itr; init = ()) reduce(tuple, itr; init = ()) Tuple 32 identical nonempty non-singleton Tuples similar (36 LLVM lines) similar (60 ns vs. 60 ns) similar (65 ms vs. 67 ms) 2 times less (3 MB vs. 7 MB)
unrolled_reduce(tuple, itr; init = ()) reduce(tuple, itr; init = ()) Tuple 128 identical nonempty non-singleton Tuples better (132 LLVM lines vs. 70 kB allocs) 158 times less (80 ns vs. 13 μs) similar (108 ms vs. 59 ms) similar (6 MB vs. 3 MB)
unrolled_reduce(tuple, itr; init = ()) reduce(tuple, itr; init = ()) Tuple 2 empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) 2 times less (32 ms vs. 72 ms) 22 times less (141 kB vs. 3 MB)
unrolled_reduce(tuple, itr; init = ()) reduce(tuple, itr; init = ()) Tuple 8 empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (61 ms vs. 75 ms) similar (2 MB vs. 4 MB)
unrolled_reduce(tuple, itr; init = ()) reduce(tuple, itr; init = ()) Tuple 32 empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (66 ms vs. 81 ms) 2 times less (2 MB vs. 5 MB)
unrolled_reduce(tuple, itr; init = ()) reduce(tuple, itr; init = ()) Tuple 128 empty & nonempty singleton Tuples better (optimized out vs. 39 LLVM lines) 138 times less (49 ns vs. 7 μs) similar (69 ms vs. 78 ms) similar (3 MB vs. 3 MB)
unrolled_reduce(tuple, itr; init = ()) reduce(tuple, itr; init = ()) Tuple 2 nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) 2 times less (30 ms vs. 65 ms) 22 times less (141 kB vs. 3 MB)
unrolled_reduce(tuple, itr; init = ()) reduce(tuple, itr; init = ()) Tuple 8 nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (56 ms vs. 68 ms) 2 times less (2 MB vs. 4 MB)
unrolled_reduce(tuple, itr; init = ()) reduce(tuple, itr; init = ()) Tuple 32 nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (59 ms vs. 72 ms) 2 times less (2 MB vs. 5 MB)
unrolled_reduce(tuple, itr; init = ()) reduce(tuple, itr; init = ()) Tuple 128 nonempty singleton Tuples better (optimized out vs. 39 LLVM lines) 141 times less (49 ns vs. 7 μs) similar (66 ms vs. 74 ms) similar (3 MB vs. 3 MB)
unrolled_reduce(tuple, itr; init = ()) reduce(tuple, itr; init = ()) Tuple 2 nonempty non-singleton Tuples similar (11 LLVM lines) similar (50 ns vs. 49 ns) similar (30 ms vs. 53 ms) 9 times less (401 kB vs. 4 MB)
unrolled_reduce(tuple, itr; init = ()) reduce(tuple, itr; init = ()) Tuple 8 nonempty non-singleton Tuples similar (29 LLVM lines) similar (50 ns vs. 60 ns) similar (65 ms vs. 64 ms) 2 times less (2 MB vs. 5 MB)
unrolled_reduce(tuple, itr; init = ()) reduce(tuple, itr; init = ()) Tuple 32 nonempty non-singleton Tuples similar (93 LLVM lines) similar (80 ns vs. 80 ns) similar (73 ms vs. 78 ms) 2 times less (3 MB vs. 9 MB)
unrolled_reduce(tuple, itr; init = ()) reduce(tuple, itr; init = ()) Tuple 128 nonempty non-singleton Tuples better (556 LLVM lines vs. 792 kB allocs) 302 times less (361 ns vs. 109 μs) 3 times more (200 ms vs. 62 ms) similar (6 MB vs. 5 MB)
unrolled_mapreduce((x->(x, length(x))), tuple, itr) mapreduce((x->(x, length(x))), tuple, itr) Tuple 1 empty singleton Tuple similar (optimized out) similar (49 ns vs. 40 ns) 2 times less (40 ms vs. 85 ms) 19 times less (113 kB vs. 2 MB)
unrolled_mapreduce((x->(x, length(x))), tuple, itr) mapreduce((x->(x, length(x))), tuple, itr) Tuple 1 nonempty singleton Tuple similar (optimized out) similar (49 ns vs. 40 ns) 2 times less (39 ms vs. 82 ms) 15 times less (148 kB vs. 2 MB)
unrolled_mapreduce((x->(x, length(x))), tuple, itr) mapreduce((x->(x, length(x))), tuple, itr) Tuple 1 nonempty non-singleton Tuple similar (10 LLVM lines) similar (60 ns vs. 49 ns) similar (40 ms vs. 64 ms) 9 times less (301 kB vs. 3 MB)
unrolled_mapreduce((x->(x, length(x))), tuple, itr) mapreduce((x->(x, length(x))), tuple, itr) Tuple 2 identical nonempty singleton Tuples similar (7 LLVM lines w/ Const) similar (40 ns vs. 40 ns) 2 times less (41 ms vs. 100 ms) 15 times less (150 kB vs. 2 MB)
unrolled_mapreduce((x->(x, length(x))), tuple, itr) mapreduce((x->(x, length(x))), tuple, itr) Tuple 8 identical nonempty singleton Tuples similar (7 LLVM lines w/ Const) similar (40 ns vs. 49 ns) similar (80 ms vs. 127 ms) similar (2 MB vs. 3 MB)
unrolled_mapreduce((x->(x, length(x))), tuple, itr) mapreduce((x->(x, length(x))), tuple, itr) Tuple 32 identical nonempty singleton Tuples similar (7 LLVM lines w/ Const) similar (40 ns vs. 40 ns) 3 times less (78 ms vs. 255 ms) 2 times less (2 MB vs. 5 MB)
unrolled_mapreduce((x->(x, length(x))), tuple, itr) mapreduce((x->(x, length(x))), tuple, itr) Tuple 128 identical nonempty singleton Tuples better (55 LLVM lines w/ Const vs. 68 kB allocs) 153 times less (80 ns vs. 12 μs) similar (100 ms vs. 106 ms) similar (3 MB vs. 3 MB)
unrolled_mapreduce((x->(x, length(x))), tuple, itr) mapreduce((x->(x, length(x))), tuple, itr) Tuple 2 identical nonempty non-singleton Tuples similar (16 LLVM lines) similar (60 ns vs. 49 ns) similar (41 ms vs. 68 ms) 9 times less (330 kB vs. 3 MB)
unrolled_mapreduce((x->(x, length(x))), tuple, itr) mapreduce((x->(x, length(x))), tuple, itr) Tuple 8 identical nonempty non-singleton Tuples similar (52 LLVM lines) similar (60 ns vs. 60 ns) similar (69 ms vs. 65 ms) similar (2 MB vs. 4 MB)
unrolled_mapreduce((x->(x, length(x))), tuple, itr) mapreduce((x->(x, length(x))), tuple, itr) Tuple 32 identical nonempty non-singleton Tuples similar (196 LLVM lines) similar (80 ns vs. 70 ns) similar (80 ms vs. 83 ms) 2 times less (3 MB vs. 7 MB)
unrolled_mapreduce((x->(x, length(x))), tuple, itr) mapreduce((x->(x, length(x))), tuple, itr) Tuple 128 identical nonempty non-singleton Tuples better (772 LLVM lines vs. 140 kB allocs) 77 times less (270 ns vs. 21 μs) 2 times more (183 ms vs. 69 ms) similar (6 MB vs. 3 MB)
unrolled_mapreduce((x->(x, length(x))), tuple, itr) mapreduce((x->(x, length(x))), tuple, itr) Tuple 2 empty & nonempty singleton Tuples similar (7 LLVM lines w/ Const) similar (40 ns vs. 40 ns) 2 times less (43 ms vs. 94 ms) 17 times less (156 kB vs. 3 MB)
unrolled_mapreduce((x->(x, length(x))), tuple, itr) mapreduce((x->(x, length(x))), tuple, itr) Tuple 8 empty & nonempty singleton Tuples similar (7 LLVM lines w/ Const) similar (49 ns vs. 40 ns) similar (74 ms vs. 127 ms) similar (2 MB vs. 4 MB)
unrolled_mapreduce((x->(x, length(x))), tuple, itr) mapreduce((x->(x, length(x))), tuple, itr) Tuple 32 empty & nonempty singleton Tuples similar (7 LLVM lines w/ Const) similar (49 ns vs. 40 ns) 3 times less (76 ms vs. 246 ms) 2 times less (2 MB vs. 6 MB)
unrolled_mapreduce((x->(x, length(x))), tuple, itr) mapreduce((x->(x, length(x))), tuple, itr) Tuple 128 empty & nonempty singleton Tuples better (57 LLVM lines w/ Const vs. 70 kB allocs) 267 times less (80 ns vs. 21 μs) similar (101 ms vs. 107 ms) similar (3 MB vs. 4 MB)
unrolled_mapreduce((x->(x, length(x))), tuple, itr) mapreduce((x->(x, length(x))), tuple, itr) Tuple 2 nonempty singleton Tuples similar (7 LLVM lines w/ Const) similar (40 ns vs. 40 ns) 2 times less (41 ms vs. 91 ms) 17 times less (161 kB vs. 3 MB)
unrolled_mapreduce((x->(x, length(x))), tuple, itr) mapreduce((x->(x, length(x))), tuple, itr) Tuple 8 nonempty singleton Tuples similar (7 LLVM lines w/ Const) similar (40 ns vs. 40 ns) similar (67 ms vs. 114 ms) similar (2 MB vs. 4 MB)
unrolled_mapreduce((x->(x, length(x))), tuple, itr) mapreduce((x->(x, length(x))), tuple, itr) Tuple 32 nonempty singleton Tuples similar (7 LLVM lines w/ Const) similar (40 ns vs. 40 ns) 3 times less (69 ms vs. 212 ms) 2 times less (2 MB vs. 6 MB)
unrolled_mapreduce((x->(x, length(x))), tuple, itr) mapreduce((x->(x, length(x))), tuple, itr) Tuple 128 nonempty singleton Tuples better (55 LLVM lines w/ Const vs. 70 kB allocs) 257 times less (80 ns vs. 21 μs) similar (93 ms vs. 98 ms) similar (3 MB vs. 4 MB)
unrolled_mapreduce((x->(x, length(x))), tuple, itr) mapreduce((x->(x, length(x))), tuple, itr) Tuple 2 nonempty non-singleton Tuples similar (15 LLVM lines) similar (50 ns vs. 60 ns) similar (44 ms vs. 61 ms) 8 times less (381 kB vs. 3 MB)
unrolled_mapreduce((x->(x, length(x))), tuple, itr) mapreduce((x->(x, length(x))), tuple, itr) Tuple 8 nonempty non-singleton Tuples similar (45 LLVM lines) similar (60 ns vs. 60 ns) similar (75 ms vs. 72 ms) similar (2 MB vs. 5 MB)
unrolled_mapreduce((x->(x, length(x))), tuple, itr) mapreduce((x->(x, length(x))), tuple, itr) Tuple 32 nonempty non-singleton Tuples similar (169 LLVM lines) similar (100 ns vs. 100 ns) similar (85 ms vs. 87 ms) 2 times less (3 MB vs. 8 MB)
unrolled_mapreduce((x->(x, length(x))), tuple, itr) mapreduce((x->(x, length(x))), tuple, itr) Tuple 128 nonempty non-singleton Tuples better (876 LLVM lines vs. 864 kB allocs) 294 times less (431 ns vs. 127 μs) 4 times more (303 ms vs. 72 ms) similar (6 MB vs. 5 MB)
unrolled_mapreduce((x->(x, length(x))), tuple, itr; init = ()) mapreduce((x->(x, length(x))), tuple, itr; init = ()) Tuple 1 empty singleton Tuple similar (optimized out) similar (40 ns vs. 40 ns) 2 times less (40 ms vs. 89 ms) 21 times less (112 kB vs. 2 MB)
unrolled_mapreduce((x->(x, length(x))), tuple, itr; init = ()) mapreduce((x->(x, length(x))), tuple, itr; init = ()) Tuple 1 nonempty singleton Tuple similar (optimized out) similar (49 ns vs. 49 ns) 2 times less (39 ms vs. 92 ms) 16 times less (146 kB vs. 2 MB)
unrolled_mapreduce((x->(x, length(x))), tuple, itr; init = ()) mapreduce((x->(x, length(x))), tuple, itr; init = ()) Tuple 1 nonempty non-singleton Tuple similar (10 LLVM lines) similar (49 ns vs. 49 ns) similar (42 ms vs. 69 ms) 9 times less (312 kB vs. 3 MB)
unrolled_mapreduce((x->(x, length(x))), tuple, itr; init = ()) mapreduce((x->(x, length(x))), tuple, itr; init = ()) Tuple 2 identical nonempty singleton Tuples similar (7 LLVM lines w/ Const) similar (49 ns vs. 40 ns) 2 times less (40 ms vs. 98 ms) 16 times less (149 kB vs. 2 MB)
unrolled_mapreduce((x->(x, length(x))), tuple, itr; init = ()) mapreduce((x->(x, length(x))), tuple, itr; init = ()) Tuple 8 identical nonempty singleton Tuples similar (7 LLVM lines w/ Const) similar (49 ns vs. 40 ns) similar (70 ms vs. 136 ms) similar (2 MB vs. 3 MB)
unrolled_mapreduce((x->(x, length(x))), tuple, itr; init = ()) mapreduce((x->(x, length(x))), tuple, itr; init = ()) Tuple 32 identical nonempty singleton Tuples similar (7 LLVM lines w/ Const) similar (49 ns vs. 40 ns) 3 times less (74 ms vs. 233 ms) 2 times less (2 MB vs. 5 MB)
unrolled_mapreduce((x->(x, length(x))), tuple, itr; init = ()) mapreduce((x->(x, length(x))), tuple, itr; init = ()) Tuple 128 identical nonempty singleton Tuples better (55 LLVM lines w/ Const vs. 68 kB allocs) 148 times less (80 ns vs. 12 μs) similar (97 ms vs. 111 ms) similar (3 MB vs. 3 MB)
unrolled_mapreduce((x->(x, length(x))), tuple, itr; init = ()) mapreduce((x->(x, length(x))), tuple, itr; init = ()) Tuple 2 identical nonempty non-singleton Tuples similar (16 LLVM lines) similar (60 ns vs. 50 ns) similar (43 ms vs. 73 ms) 9 times less (342 kB vs. 3 MB)
unrolled_mapreduce((x->(x, length(x))), tuple, itr; init = ()) mapreduce((x->(x, length(x))), tuple, itr; init = ()) Tuple 8 identical nonempty non-singleton Tuples similar (52 LLVM lines) similar (60 ns vs. 60 ns) similar (71 ms vs. 72 ms) similar (2 MB vs. 4 MB)
unrolled_mapreduce((x->(x, length(x))), tuple, itr; init = ()) mapreduce((x->(x, length(x))), tuple, itr; init = ()) Tuple 32 identical nonempty non-singleton Tuples similar (196 LLVM lines) similar (80 ns vs. 80 ns) similar (78 ms vs. 87 ms) 2 times less (3 MB vs. 7 MB)
unrolled_mapreduce((x->(x, length(x))), tuple, itr; init = ()) mapreduce((x->(x, length(x))), tuple, itr; init = ()) Tuple 128 identical nonempty non-singleton Tuples better (772 LLVM lines vs. 140 kB allocs) 80 times less (260 ns vs. 21 μs) 2 times more (183 ms vs. 73 ms) similar (6 MB vs. 3 MB)
unrolled_mapreduce((x->(x, length(x))), tuple, itr; init = ()) mapreduce((x->(x, length(x))), tuple, itr; init = ()) Tuple 2 empty & nonempty singleton Tuples similar (7 LLVM lines w/ Const) similar (49 ns vs. 40 ns) 2 times less (41 ms vs. 102 ms) 18 times less (155 kB vs. 3 MB)
unrolled_mapreduce((x->(x, length(x))), tuple, itr; init = ()) mapreduce((x->(x, length(x))), tuple, itr; init = ()) Tuple 8 empty & nonempty singleton Tuples similar (7 LLVM lines w/ Const) similar (49 ns vs. 49 ns) similar (71 ms vs. 130 ms) similar (2 MB vs. 4 MB)
unrolled_mapreduce((x->(x, length(x))), tuple, itr; init = ()) mapreduce((x->(x, length(x))), tuple, itr; init = ()) Tuple 32 empty & nonempty singleton Tuples similar (7 LLVM lines w/ Const) similar (49 ns vs. 49 ns) 3 times less (73 ms vs. 234 ms) 2 times less (2 MB vs. 6 MB)
unrolled_mapreduce((x->(x, length(x))), tuple, itr; init = ()) mapreduce((x->(x, length(x))), tuple, itr; init = ()) Tuple 128 empty & nonempty singleton Tuples better (57 LLVM lines w/ Const vs. 70 kB allocs) 239 times less (89 ns vs. 21 μs) similar (108 ms vs. 110 ms) similar (4 MB vs. 4 MB)
unrolled_mapreduce((x->(x, length(x))), tuple, itr; init = ()) mapreduce((x->(x, length(x))), tuple, itr; init = ()) Tuple 2 nonempty singleton Tuples similar (7 LLVM lines w/ Const) similar (49 ns vs. 49 ns) 2 times less (39 ms vs. 95 ms) 18 times less (160 kB vs. 3 MB)
unrolled_mapreduce((x->(x, length(x))), tuple, itr; init = ()) mapreduce((x->(x, length(x))), tuple, itr; init = ()) Tuple 8 nonempty singleton Tuples similar (7 LLVM lines w/ Const) similar (49 ns vs. 40 ns) similar (66 ms vs. 116 ms) similar (2 MB vs. 4 MB)
unrolled_mapreduce((x->(x, length(x))), tuple, itr; init = ()) mapreduce((x->(x, length(x))), tuple, itr; init = ()) Tuple 32 nonempty singleton Tuples similar (7 LLVM lines w/ Const) similar (49 ns vs. 49 ns) 3 times less (68 ms vs. 212 ms) 2 times less (2 MB vs. 6 MB)
unrolled_mapreduce((x->(x, length(x))), tuple, itr; init = ()) mapreduce((x->(x, length(x))), tuple, itr; init = ()) Tuple 128 nonempty singleton Tuples better (55 LLVM lines w/ Const vs. 70 kB allocs) 265 times less (80 ns vs. 21 μs) similar (89 ms vs. 102 ms) similar (4 MB vs. 4 MB)
unrolled_mapreduce((x->(x, length(x))), tuple, itr; init = ()) mapreduce((x->(x, length(x))), tuple, itr; init = ()) Tuple 2 nonempty non-singleton Tuples similar (15 LLVM lines) similar (60 ns vs. 60 ns) similar (40 ms vs. 66 ms) 8 times less (393 kB vs. 3 MB)
unrolled_mapreduce((x->(x, length(x))), tuple, itr; init = ()) mapreduce((x->(x, length(x))), tuple, itr; init = ()) Tuple 8 nonempty non-singleton Tuples similar (45 LLVM lines) similar (60 ns vs. 60 ns) similar (75 ms vs. 76 ms) similar (2 MB vs. 5 MB)
unrolled_mapreduce((x->(x, length(x))), tuple, itr; init = ()) mapreduce((x->(x, length(x))), tuple, itr; init = ()) Tuple 32 nonempty non-singleton Tuples similar (169 LLVM lines) similar (100 ns vs. 100 ns) similar (87 ms vs. 93 ms) 2 times less (3 MB vs. 8 MB)
unrolled_mapreduce((x->(x, length(x))), tuple, itr; init = ()) mapreduce((x->(x, length(x))), tuple, itr; init = ()) Tuple 128 nonempty non-singleton Tuples better (876 LLVM lines vs. 864 kB allocs) 303 times less (431 ns vs. 131 μs) 4 times more (295 ms vs. 72 ms) similar (6 MB vs. 5 MB)
unrolled_accumulate(tuple, itr) accumulate(tuple, itr) Tuple 1 empty singleton Tuple similar (optimized out) similar (40 ns vs. 40 ns) similar (30 ms vs. 44 ms) 4 times less (97 kB vs. 483 kB)
unrolled_accumulate(tuple, itr) accumulate(tuple, itr) Tuple 1 nonempty singleton Tuple similar (optimized out) similar (40 ns vs. 40 ns) similar (29 ms vs. 44 ms) 4 times less (127 kB vs. 514 kB)
unrolled_accumulate(tuple, itr) accumulate(tuple, itr) Tuple 1 nonempty non-singleton Tuple similar (8 LLVM lines) similar (49 ns vs. 49 ns) similar (33 ms vs. 48 ms) 2 times less (325 kB vs. 901 kB)
unrolled_accumulate(tuple, itr) accumulate(tuple, itr) Tuple 2 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (29 ms vs. 58 ms) 8 times less (130 kB vs. 1 MB)
unrolled_accumulate(tuple, itr) accumulate(tuple, itr) Tuple 8 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (72 ms vs. 134 ms) 11 times less (258 kB vs. 3 MB)
unrolled_accumulate(tuple, itr) accumulate(tuple, itr) Tuple 32 identical nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) 4 times less (71 ms vs. 337 ms) 26 times less (400 kB vs. 10 MB)
unrolled_accumulate(tuple, itr) accumulate(tuple, itr) Tuple 2 identical nonempty non-singleton Tuples similar (11 LLVM lines) similar (60 ns vs. 49 ns) similar (31 ms vs. 54 ms) 4 times less (351 kB vs. 2 MB)
unrolled_accumulate(tuple, itr) accumulate(tuple, itr) Tuple 8 identical nonempty non-singleton Tuples similar (65 LLVM lines) similar (60 ns vs. 60 ns) similar (67 ms vs. 66 ms) 6 times less (618 kB vs. 4 MB)
unrolled_accumulate(tuple, itr) accumulate(tuple, itr) Tuple 32 identical nonempty non-singleton Tuples similar (857 LLVM lines) similar (261 ns vs. 330 ns) similar (312 ms vs. 481 ms) 13 times less (1 MB vs. 16 MB)
unrolled_accumulate(tuple, itr) accumulate(tuple, itr) Tuple 2 empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (33 ms vs. 59 ms) 8 times less (130 kB vs. 1 MB)
unrolled_accumulate(tuple, itr) accumulate(tuple, itr) Tuple 8 empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (66 ms vs. 110 ms) 11 times less (258 kB vs. 3 MB)
unrolled_accumulate(tuple, itr) accumulate(tuple, itr) Tuple 32 empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) 4 times less (70 ms vs. 336 ms) 27 times less (401 kB vs. 11 MB)
unrolled_accumulate(tuple, itr) accumulate(tuple, itr) Tuple 2 nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (29 ms vs. 52 ms) 8 times less (130 kB vs. 1 MB)
unrolled_accumulate(tuple, itr) accumulate(tuple, itr) Tuple 8 nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (60 ms vs. 102 ms) 11 times less (258 kB vs. 3 MB)
unrolled_accumulate(tuple, itr) accumulate(tuple, itr) Tuple 32 nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) 4 times less (69 ms vs. 315 ms) 27 times less (401 kB vs. 11 MB)
unrolled_accumulate(tuple, itr) accumulate(tuple, itr) Tuple 2 nonempty non-singleton Tuples similar (13 LLVM lines) similar (49 ns vs. 49 ns) similar (30 ms vs. 52 ms) 4 times less (377 kB vs. 2 MB)
unrolled_accumulate(tuple, itr) accumulate(tuple, itr) Tuple 8 nonempty non-singleton Tuples similar (85 LLVM lines) similar (69 ns vs. 80 ns) similar (75 ms vs. 79 ms) 7 times less (620 kB vs. 5 MB)
unrolled_accumulate(tuple, itr) accumulate(tuple, itr) Tuple 32 nonempty non-singleton Tuples similar (2973 LLVM lines) similar (2 μs vs. 2 μs) similar (1 s vs. 979 ms) 14 times less (1 MB vs. 17 MB)
unrolled_accumulate(tuple, itr; init = ()) accumulate(tuple, itr; init = ()) Tuple 1 empty singleton Tuple similar (optimized out) similar (40 ns vs. 40 ns) similar (30 ms vs. 36 ms) 7 times less (105 kB vs. 819 kB)
unrolled_accumulate(tuple, itr; init = ()) accumulate(tuple, itr; init = ()) Tuple 1 nonempty singleton Tuple similar (optimized out) similar (49 ns vs. 49 ns) similar (31 ms vs. 36 ms) 6 times less (135 kB vs. 850 kB)
unrolled_accumulate(tuple, itr; init = ()) accumulate(tuple, itr; init = ()) Tuple 1 nonempty non-singleton Tuple similar (8 LLVM lines) similar (49 ns vs. 49 ns) similar (33 ms vs. 45 ms) 3 times less (331 kB vs. 1 MB)
unrolled_accumulate(tuple, itr; init = ()) accumulate(tuple, itr; init = ()) Tuple 2 identical nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (29 ms vs. 50 ms) 8 times less (137 kB vs. 1 MB)
unrolled_accumulate(tuple, itr; init = ()) accumulate(tuple, itr; init = ()) Tuple 8 identical nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (71 ms vs. 109 ms) 11 times less (265 kB vs. 3 MB)
unrolled_accumulate(tuple, itr; init = ()) accumulate(tuple, itr; init = ()) Tuple 32 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) 4 times less (72 ms vs. 341 ms) 25 times less (408 kB vs. 10 MB)
unrolled_accumulate(tuple, itr; init = ()) accumulate(tuple, itr; init = ()) Tuple 2 identical nonempty non-singleton Tuples similar (11 LLVM lines) similar (60 ns vs. 49 ns) similar (31 ms vs. 46 ms) 4 times less (357 kB vs. 2 MB)
unrolled_accumulate(tuple, itr; init = ()) accumulate(tuple, itr; init = ()) Tuple 8 identical nonempty non-singleton Tuples similar (65 LLVM lines) similar (60 ns vs. 60 ns) similar (69 ms vs. 58 ms) 6 times less (623 kB vs. 4 MB)
unrolled_accumulate(tuple, itr; init = ()) accumulate(tuple, itr; init = ()) Tuple 32 identical nonempty non-singleton Tuples similar (857 LLVM lines) similar (260 ns vs. 240 ns) similar (296 ms vs. 458 ms) 13 times less (1 MB vs. 16 MB)
unrolled_accumulate(tuple, itr; init = ()) accumulate(tuple, itr; init = ()) Tuple 2 empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (32 ms vs. 50 ms) 8 times less (137 kB vs. 1 MB)
unrolled_accumulate(tuple, itr; init = ()) accumulate(tuple, itr; init = ()) Tuple 8 empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (68 ms vs. 103 ms) 11 times less (266 kB vs. 3 MB)
unrolled_accumulate(tuple, itr; init = ()) accumulate(tuple, itr; init = ()) Tuple 32 empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) 4 times less (71 ms vs. 350 ms) 26 times less (409 kB vs. 11 MB)
unrolled_accumulate(tuple, itr; init = ()) accumulate(tuple, itr; init = ()) Tuple 2 nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (29 ms vs. 47 ms) 8 times less (137 kB vs. 1 MB)
unrolled_accumulate(tuple, itr; init = ()) accumulate(tuple, itr; init = ()) Tuple 8 nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (61 ms vs. 95 ms) 11 times less (266 kB vs. 3 MB)
unrolled_accumulate(tuple, itr; init = ()) accumulate(tuple, itr; init = ()) Tuple 32 nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) 4 times less (66 ms vs. 300 ms) 26 times less (408 kB vs. 11 MB)
unrolled_accumulate(tuple, itr; init = ()) accumulate(tuple, itr; init = ()) Tuple 2 nonempty non-singleton Tuples similar (13 LLVM lines) similar (60 ns vs. 50 ns) similar (30 ms vs. 44 ms) 4 times less (382 kB vs. 2 MB)
unrolled_accumulate(tuple, itr; init = ()) accumulate(tuple, itr; init = ()) Tuple 8 nonempty non-singleton Tuples similar (85 LLVM lines) similar (69 ns vs. 69 ns) similar (72 ms vs. 70 ms) 7 times less (625 kB vs. 5 MB)
unrolled_accumulate(tuple, itr; init = ()) accumulate(tuple, itr; init = ()) Tuple 32 nonempty non-singleton Tuples similar (2972 LLVM lines) similar (2 μs vs. 2 μs) similar (1 s vs. 967 ms) 14 times less (1 MB vs. 17 MB)
unrolled_applyat((x->length(x) <= 7), rand(1:length(itr)), itr) length(itr[rand(1:length(itr))]) <= 7 Tuple 1 empty singleton Tuple similar (17 LLVM lines w/ Const) similar (49 ns vs. 60 ns) similar (75 ms vs. 50 ms) similar (3 MB vs. 2 MB)
unrolled_applyat((x->length(x) <= 7), rand(1:length(itr)), itr) length(itr[rand(1:length(itr))]) <= 7 Tuple 1 nonempty singleton Tuple similar (17 LLVM lines w/ Const) similar (49 ns vs. 49 ns) similar (74 ms vs. 47 ms) similar (3 MB vs. 2 MB)
unrolled_applyat((x->length(x) <= 7), rand(1:length(itr)), itr) length(itr[rand(1:length(itr))]) <= 7 Tuple 1 nonempty non-singleton Tuple similar (20 LLVM lines w/ Const) similar (49 ns vs. 60 ns) similar (82 ms vs. 47 ms) similar (3 MB vs. 2 MB)
unrolled_applyat((x->length(x) <= 7), rand(1:length(itr)), itr) length(itr[rand(1:length(itr))]) <= 7 Tuple 2 identical nonempty singleton Tuples similar (18 LLVM lines w/ Const) similar (49 ns vs. 49 ns) similar (81 ms vs. 50 ms) similar (3 MB vs. 2 MB)
unrolled_applyat((x->length(x) <= 7), rand(1:length(itr)), itr) length(itr[rand(1:length(itr))]) <= 7 Tuple 8 identical nonempty singleton Tuples similar (18 LLVM lines w/ Const) similar (49 ns vs. 49 ns) 2 times more (106 ms vs. 52 ms) similar (3 MB vs. 2 MB)
unrolled_applyat((x->length(x) <= 7), rand(1:length(itr)), itr) length(itr[rand(1:length(itr))]) <= 7 Tuple 32 identical nonempty singleton Tuples similar (18 LLVM lines w/ Const) similar (49 ns vs. 49 ns) 2 times more (117 ms vs. 55 ms) 2 times more (5 MB vs. 2 MB)
unrolled_applyat((x->length(x) <= 7), rand(1:length(itr)), itr) length(itr[rand(1:length(itr))]) <= 7 Tuple 128 identical nonempty singleton Tuples similar (18 LLVM lines w/ Const) similar (49 ns vs. 49 ns) 2 times more (145 ms vs. 53 ms) 6 times more (13 MB vs. 2 MB)
unrolled_applyat((x->length(x) <= 7), rand(1:length(itr)), itr) length(itr[rand(1:length(itr))]) <= 7 Tuple 2 identical nonempty non-singleton Tuples similar (20 LLVM lines w/ Const) similar (49 ns vs. 60 ns) similar (78 ms vs. 51 ms) similar (3 MB vs. 2 MB)
unrolled_applyat((x->length(x) <= 7), rand(1:length(itr)), itr) length(itr[rand(1:length(itr))]) <= 7 Tuple 8 identical nonempty non-singleton Tuples similar (20 LLVM lines w/ Const) similar (49 ns vs. 49 ns) similar (95 ms vs. 49 ms) similar (3 MB vs. 2 MB)
unrolled_applyat((x->length(x) <= 7), rand(1:length(itr)), itr) length(itr[rand(1:length(itr))]) <= 7 Tuple 32 identical nonempty non-singleton Tuples similar (20 LLVM lines w/ Const) similar (49 ns vs. 49 ns) 2 times more (101 ms vs. 48 ms) 2 times more (5 MB vs. 2 MB)
unrolled_applyat((x->length(x) <= 7), rand(1:length(itr)), itr) length(itr[rand(1:length(itr))]) <= 7 Tuple 128 identical nonempty non-singleton Tuples similar (20 LLVM lines w/ Const) similar (60 ns vs. 49 ns) 2 times more (134 ms vs. 49 ms) 7 times more (14 MB vs. 2 MB)
unrolled_applyat((x->length(x) <= 7), rand(1:length(itr)), itr) length(itr[rand(1:length(itr))]) <= 7 Tuple 2 empty & nonempty singleton Tuples better (18 LLVM lines w/ Const vs. 11 LLVM lines) similar (49 ns vs. 69 ns) similar (82 ms vs. 52 ms) similar (3 MB vs. 2 MB)
unrolled_applyat((x->length(x) <= 7), rand(1:length(itr)), itr) length(itr[rand(1:length(itr))]) <= 7 Tuple 8 empty & nonempty singleton Tuples better (18 LLVM lines w/ Const vs. 18 LLVM lines) similar (49 ns vs. 60 ns) 2 times more (103 ms vs. 50 ms) similar (3 MB vs. 2 MB)
unrolled_applyat((x->length(x) <= 7), rand(1:length(itr)), itr) length(itr[rand(1:length(itr))]) <= 7 Tuple 32 empty & nonempty singleton Tuples better (18 LLVM lines w/ Const vs. 18 LLVM lines) similar (49 ns vs. 69 ns) 2 times more (118 ms vs. 53 ms) 2 times more (5 MB vs. 2 MB)
unrolled_applyat((x->length(x) <= 7), rand(1:length(itr)), itr) length(itr[rand(1:length(itr))]) <= 7 Tuple 128 empty & nonempty singleton Tuples better (18 LLVM lines w/ Const vs. 18 LLVM lines) similar (49 ns vs. 60 ns) 2 times more (139 ms vs. 57 ms) 6 times more (13 MB vs. 2 MB)
unrolled_applyat((x->length(x) <= 7), rand(1:length(itr)), itr) length(itr[rand(1:length(itr))]) <= 7 Tuple 2 nonempty singleton Tuples better (18 LLVM lines w/ Const vs. 11 LLVM lines) similar (49 ns vs. 69 ns) similar (74 ms vs. 47 ms) similar (3 MB vs. 2 MB)
unrolled_applyat((x->length(x) <= 7), rand(1:length(itr)), itr) length(itr[rand(1:length(itr))]) <= 7 Tuple 8 nonempty singleton Tuples better (18 LLVM lines w/ Const vs. 18 LLVM lines) similar (49 ns vs. 60 ns) 2 times more (100 ms vs. 47 ms) similar (3 MB vs. 2 MB)
unrolled_applyat((x->length(x) <= 7), rand(1:length(itr)), itr) length(itr[rand(1:length(itr))]) <= 7 Tuple 32 nonempty singleton Tuples better (18 LLVM lines w/ Const vs. 18 LLVM lines) similar (49 ns vs. 69 ns) 2 times more (112 ms vs. 50 ms) 2 times more (5 MB vs. 2 MB)
unrolled_applyat((x->length(x) <= 7), rand(1:length(itr)), itr) length(itr[rand(1:length(itr))]) <= 7 Tuple 128 nonempty singleton Tuples better (18 LLVM lines w/ Const vs. 18 LLVM lines) similar (49 ns vs. 69 ns) 2 times more (132 ms vs. 47 ms) 6 times more (13 MB vs. 2 MB)
unrolled_applyat((x->length(x) <= 7), rand(1:length(itr)), itr) length(itr[rand(1:length(itr))]) <= 7 Tuple 2 nonempty non-singleton Tuples better (20 LLVM lines w/ Const vs. 48 B allocs) similar (49 ns vs. 80 ns) similar (73 ms vs. 49 ms) similar (3 MB vs. 2 MB)
unrolled_applyat((x->length(x) <= 7), rand(1:length(itr)), itr) length(itr[rand(1:length(itr))]) <= 7 Tuple 8 nonempty non-singleton Tuples better (20 LLVM lines w/ Const vs. 240 B allocs) similar (49 ns vs. 89 ns) similar (97 ms vs. 49 ms) similar (3 MB vs. 2 MB)
unrolled_applyat((x->length(x) <= 7), rand(1:length(itr)), itr) length(itr[rand(1:length(itr))]) <= 7 Tuple 32 nonempty non-singleton Tuples better (20 LLVM lines w/ Const vs. 1 kB allocs) similar (60 ns vs. 100 ns) 2 times more (108 ms vs. 49 ms) 2 times more (5 MB vs. 2 MB)
unrolled_applyat((x->length(x) <= 7), rand(1:length(itr)), itr) length(itr[rand(1:length(itr))]) <= 7 Tuple 128 nonempty non-singleton Tuples better (20 LLVM lines w/ Const vs. 4 kB allocs) 2 times less (120 ns vs. 241 ns) 2 times more (133 ms vs. 48 ms) 7 times more (14 MB vs. 2 MB)
unrolled_in(nothing, itr) nothing in itr Tuple 1 empty singleton Tuple similar (optimized out) similar (40 ns vs. 40 ns) similar (31 ms vs. 28 ms) 2 times more (132 kB vs. 49 kB)
unrolled_in(nothing, itr) nothing in itr Tuple 1 nonempty singleton Tuple similar (optimized out) similar (40 ns vs. 40 ns) similar (31 ms vs. 30 ms) similar (162 kB vs. 164 kB)
unrolled_in(nothing, itr) nothing in itr Tuple 1 nonempty non-singleton Tuple similar (optimized out) similar (40 ns vs. 49 ns) similar (28 ms vs. 28 ms) similar (138 kB vs. 194 kB)
unrolled_in(nothing, itr) nothing in itr Tuple 2 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (33 ms vs. 32 ms) similar (166 kB vs. 283 kB)
unrolled_in(nothing, itr) nothing in itr Tuple 8 identical nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (61 ms vs. 39 ms) similar (251 kB vs. 283 kB)
unrolled_in(nothing, itr) nothing in itr Tuple 32 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (61 ms vs. 37 ms) similar (383 kB vs. 283 kB)
unrolled_in(nothing, itr) nothing in itr Tuple 128 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (69 ms vs. 35 ms) 3 times more (912 kB vs. 283 kB)
unrolled_in(nothing, itr) nothing in itr Tuple 2 identical nonempty non-singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (29 ms vs. 31 ms) 2 times less (147 kB vs. 326 kB)
unrolled_in(nothing, itr) nothing in itr Tuple 8 identical nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (47 ms vs. 30 ms) similar (281 kB vs. 352 kB)
unrolled_in(nothing, itr) nothing in itr Tuple 32 identical nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (48 ms vs. 30 ms) similar (512 kB vs. 352 kB)
unrolled_in(nothing, itr) nothing in itr Tuple 128 identical nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (58 ms vs. 30 ms) 4 times more (1 MB vs. 352 kB)
unrolled_in(nothing, itr) nothing in itr Tuple 2 empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (37 ms vs. 37 ms) similar (194 kB vs. 315 kB)
unrolled_in(nothing, itr) nothing in itr Tuple 8 empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (65 ms vs. 37 ms) similar (334 kB vs. 340 kB)
unrolled_in(nothing, itr) nothing in itr Tuple 32 empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) 2 times more (84 ms vs. 41 ms) similar (593 kB vs. 340 kB)
unrolled_in(nothing, itr) nothing in itr Tuple 128 empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) 2 times more (82 ms vs. 36 ms) 3 times more (1 MB vs. 340 kB)
unrolled_in(nothing, itr) nothing in itr Tuple 2 nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (34 ms vs. 34 ms) similar (194 kB vs. 315 kB)
unrolled_in(nothing, itr) nothing in itr Tuple 8 nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (59 ms vs. 35 ms) similar (334 kB vs. 340 kB)
unrolled_in(nothing, itr) nothing in itr Tuple 32 nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (72 ms vs. 37 ms) similar (565 kB vs. 340 kB)
unrolled_in(nothing, itr) nothing in itr Tuple 128 nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) 2 times more (80 ms vs. 35 ms) 3 times more (1 MB vs. 340 kB)
unrolled_in(nothing, itr) nothing in itr Tuple 2 nonempty non-singleton Tuples better (optimized out vs. 64 B allocs) 2 times less (40 ns vs. 89 ns) similar (25 ms vs. 31 ms) similar (199 kB vs. 382 kB)
unrolled_in(nothing, itr) nothing in itr Tuple 8 nonempty non-singleton Tuples better (optimized out vs. 2 kB allocs) 6 times less (40 ns vs. 240 ns) similar (47 ms vs. 34 ms) similar (363 kB vs. 410 kB)
unrolled_in(nothing, itr) nothing in itr Tuple 32 nonempty non-singleton Tuples better (optimized out vs. 37 kB allocs) 69 times less (40 ns vs. 3 μs) similar (50 ms vs. 34 ms) similar (674 kB vs. 445 kB)
unrolled_in(nothing, itr) nothing in itr Tuple 128 nonempty non-singleton Tuples better (optimized out vs. 521 kB allocs) 853 times less (49 ns vs. 42 μs) similar (57 ms vs. 32 ms) similar (2 MB vs. 929 kB)
unrolled_in(itr[1], itr) itr[1] in itr Tuple 1 empty singleton Tuple similar (optimized out) similar (40 ns vs. 40 ns) similar (33 ms vs. 26 ms) 4 times more (136 kB vs. 34 kB)
unrolled_in(itr[1], itr) itr[1] in itr Tuple 1 nonempty singleton Tuple similar (optimized out) similar (40 ns vs. 40 ns) similar (38 ms vs. 33 ms) similar (166 kB vs. 254 kB)
unrolled_in(itr[1], itr) itr[1] in itr Tuple 1 nonempty non-singleton Tuple similar (6 LLVM lines) similar (49 ns vs. 49 ns) similar (30 ms vs. 32 ms) similar (289 kB vs. 260 kB)
unrolled_in(itr[1], itr) itr[1] in itr Tuple 2 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (32 ms vs. 35 ms) similar (168 kB vs. 254 kB)
unrolled_in(itr[1], itr) itr[1] in itr Tuple 8 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (62 ms vs. 37 ms) similar (237 kB vs. 254 kB)
unrolled_in(itr[1], itr) itr[1] in itr Tuple 32 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (64 ms vs. 38 ms) similar (305 kB vs. 254 kB)
unrolled_in(itr[1], itr) itr[1] in itr Tuple 128 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (65 ms vs. 34 ms) 2 times more (578 kB vs. 254 kB)
unrolled_in(itr[1], itr) itr[1] in itr Tuple 2 identical nonempty non-singleton Tuples similar (6 LLVM lines) similar (40 ns vs. 49 ns) similar (31 ms vs. 35 ms) similar (334 kB vs. 335 kB)
unrolled_in(itr[1], itr) itr[1] in itr Tuple 8 identical nonempty non-singleton Tuples similar (6 LLVM lines) similar (40 ns vs. 49 ns) similar (53 ms vs. 34 ms) similar (635 kB vs. 361 kB)
unrolled_in(itr[1], itr) itr[1] in itr Tuple 32 identical nonempty non-singleton Tuples similar (6 LLVM lines) similar (40 ns vs. 40 ns) similar (58 ms vs. 38 ms) 4 times more (2 MB vs. 360 kB)
unrolled_in(itr[1], itr) itr[1] in itr Tuple 128 identical nonempty non-singleton Tuples similar (6 LLVM lines) similar (49 ns vs. 49 ns) similar (87 ms vs. 44 ms) 15 times more (5 MB vs. 361 kB)
unrolled_in(itr[1], itr) itr[1] in itr Tuple 2 empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (34 ms vs. 28 ms) similar (168 kB vs. 149 kB)
unrolled_in(itr[1], itr) itr[1] in itr Tuple 8 empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (56 ms vs. 29 ms) similar (238 kB vs. 150 kB)
unrolled_in(itr[1], itr) itr[1] in itr Tuple 32 empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) 2 times more (61 ms vs. 28 ms) 2 times more (306 kB vs. 150 kB)
unrolled_in(itr[1], itr) itr[1] in itr Tuple 128 empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) 2 times more (63 ms vs. 27 ms) 3 times more (579 kB vs. 150 kB)
unrolled_in(itr[1], itr) itr[1] in itr Tuple 2 nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (32 ms vs. 31 ms) similar (168 kB vs. 254 kB)
unrolled_in(itr[1], itr) itr[1] in itr Tuple 8 nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (51 ms vs. 31 ms) similar (238 kB vs. 255 kB)
unrolled_in(itr[1], itr) itr[1] in itr Tuple 32 nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (57 ms vs. 32 ms) similar (306 kB vs. 255 kB)
unrolled_in(itr[1], itr) itr[1] in itr Tuple 128 nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (60 ms vs. 31 ms) 2 times more (579 kB vs. 255 kB)
unrolled_in(itr[1], itr) itr[1] in itr Tuple 2 nonempty non-singleton Tuples similar (6 LLVM lines) similar (49 ns vs. 40 ns) similar (30 ms vs. 33 ms) similar (375 kB vs. 390 kB)
unrolled_in(itr[1], itr) itr[1] in itr Tuple 8 nonempty non-singleton Tuples better (6 LLVM lines vs. 32 B allocs) similar (40 ns vs. 70 ns) similar (53 ms vs. 40 ms) similar (579 kB vs. 571 kB)
unrolled_in(itr[1], itr) itr[1] in itr Tuple 32 nonempty non-singleton Tuples better (6 LLVM lines vs. 32 B allocs) similar (49 ns vs. 69 ns) similar (58 ms vs. 40 ms) similar (1 MB vs. 571 kB)
unrolled_in(itr[1], itr) itr[1] in itr Tuple 128 nonempty non-singleton Tuples better (6 LLVM lines vs. 32 B allocs) similar (49 ns vs. 80 ns) similar (66 ms vs. 40 ms) 5 times more (3 MB vs. 571 kB)
unrolled_in(itr[end], itr) itr[end] in itr Tuple 1 empty singleton Tuple similar (optimized out) similar (40 ns vs. 40 ns) similar (34 ms vs. 26 ms) 4 times more (136 kB vs. 34 kB)
unrolled_in(itr[end], itr) itr[end] in itr Tuple 1 nonempty singleton Tuple similar (optimized out) similar (49 ns vs. 40 ns) similar (32 ms vs. 32 ms) similar (166 kB vs. 254 kB)
unrolled_in(itr[end], itr) itr[end] in itr Tuple 1 nonempty non-singleton Tuple similar (6 LLVM lines) similar (49 ns vs. 49 ns) similar (33 ms vs. 33 ms) similar (289 kB vs. 260 kB)
unrolled_in(itr[end], itr) itr[end] in itr Tuple 2 identical nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (36 ms vs. 35 ms) similar (168 kB vs. 254 kB)
unrolled_in(itr[end], itr) itr[end] in itr Tuple 8 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (62 ms vs. 36 ms) similar (237 kB vs. 254 kB)
unrolled_in(itr[end], itr) itr[end] in itr Tuple 32 identical nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (61 ms vs. 37 ms) similar (305 kB vs. 254 kB)
unrolled_in(itr[end], itr) itr[end] in itr Tuple 128 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) 2 times more (70 ms vs. 34 ms) 2 times more (578 kB vs. 254 kB)
unrolled_in(itr[end], itr) itr[end] in itr Tuple 2 identical nonempty non-singleton Tuples similar (6 LLVM lines) similar (49 ns vs. 49 ns) similar (31 ms vs. 34 ms) similar (334 kB vs. 335 kB)
unrolled_in(itr[end], itr) itr[end] in itr Tuple 8 identical nonempty non-singleton Tuples similar (6 LLVM lines) similar (49 ns vs. 49 ns) similar (53 ms vs. 33 ms) similar (635 kB vs. 361 kB)
unrolled_in(itr[end], itr) itr[end] in itr Tuple 32 identical nonempty non-singleton Tuples similar (6 LLVM lines) similar (40 ns vs. 49 ns) similar (59 ms vs. 38 ms) 4 times more (2 MB vs. 360 kB)
unrolled_in(itr[end], itr) itr[end] in itr Tuple 128 identical nonempty non-singleton Tuples similar (6 LLVM lines) similar (49 ns vs. 40 ns) 2 times more (92 ms vs. 44 ms) 15 times more (5 MB vs. 361 kB)
unrolled_in(itr[end], itr) itr[end] in itr Tuple 2 empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (38 ms vs. 40 ms) 2 times less (198 kB vs. 415 kB)
unrolled_in(itr[end], itr) itr[end] in itr Tuple 8 empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (67 ms vs. 52 ms) 3 times less (336 kB vs. 1 MB)
unrolled_in(itr[end], itr) itr[end] in itr Tuple 32 empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (85 ms vs. 71 ms) 3 times less (574 kB vs. 2 MB)
unrolled_in(itr[end], itr) itr[end] in itr Tuple 128 empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (81 ms vs. 61 ms) 2 times less (847 kB vs. 2 MB)
unrolled_in(itr[end], itr) itr[end] in itr Tuple 2 nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (35 ms vs. 39 ms) 2 times less (198 kB vs. 506 kB)
unrolled_in(itr[end], itr) itr[end] in itr Tuple 8 nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (59 ms vs. 51 ms) 3 times less (336 kB vs. 1 MB)
unrolled_in(itr[end], itr) itr[end] in itr Tuple 32 nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (57 ms vs. 35 ms) similar (306 kB vs. 255 kB)
unrolled_in(itr[end], itr) itr[end] in itr Tuple 128 nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (64 ms vs. 43 ms) similar (609 kB vs. 898 kB)
unrolled_in(itr[end], itr) itr[end] in itr Tuple 2 nonempty non-singleton Tuples better (6 LLVM lines vs. 64 B allocs) similar (49 ns vs. 80 ns) similar (30 ms vs. 34 ms) similar (360 kB vs. 408 kB)
unrolled_in(itr[end], itr) itr[end] in itr Tuple 8 nonempty non-singleton Tuples better (6 LLVM lines vs. 2 kB allocs) 7 times less (49 ns vs. 350 ns) similar (54 ms vs. 44 ms) 2 times less (597 kB vs. 1 MB)
unrolled_in(itr[end], itr) itr[end] in itr Tuple 32 nonempty non-singleton Tuples better (6 LLVM lines vs. 32 B allocs) similar (49 ns vs. 69 ns) similar (57 ms vs. 41 ms) similar (1 MB vs. 571 kB)
unrolled_in(itr[end], itr) itr[end] in itr Tuple 128 nonempty non-singleton Tuples better (6 LLVM lines vs. 4 kB allocs) 6 times less (49 ns vs. 321 ns) similar (70 ms vs. 41 ms) 4 times more (3 MB vs. 674 kB)
unrolled_unique(length, itr) Tuple(unique(length, itr)) Tuple 1 empty singleton Tuple better (optimized out vs. 384 B allocs) 5 times less (40 ns vs. 230 ns) similar (49 ms vs. 97 ms) 4 times less (1 MB vs. 5 MB)
unrolled_unique(length, itr) Tuple(unique(length, itr)) Tuple 1 nonempty singleton Tuple better (optimized out vs. 384 B allocs) 6 times less (40 ns vs. 240 ns) similar (53 ms vs. 94 ms) 4 times less (1 MB vs. 5 MB)
unrolled_unique(length, itr) Tuple(unique(length, itr)) Tuple 1 nonempty non-singleton Tuple better (8 LLVM lines vs. 480 B allocs) 6 times less (49 ns vs. 300 ns) 2 times less (41 ms vs. 92 ms) 3 times less (2 MB vs. 5 MB)
unrolled_unique(length, itr) Tuple(unique(length, itr)) Tuple 2 identical nonempty singleton Tuples better (optimized out vs. 384 B allocs) 5 times less (49 ns vs. 250 ns) similar (54 ms vs. 100 ms) 3 times less (1 MB vs. 5 MB)
unrolled_unique(length, itr) Tuple(unique(length, itr)) Tuple 8 identical nonempty singleton Tuples better (optimized out vs. 384 B allocs) 6 times less (40 ns vs. 260 ns) similar (109 ms vs. 108 ms) similar (3 MB vs. 5 MB)
unrolled_unique(length, itr) Tuple(unique(length, itr)) Tuple 32 identical nonempty singleton Tuples better (optimized out vs. 384 B allocs) 8 times less (40 ns vs. 320 ns) similar (134 ms vs. 105 ms) similar (9 MB vs. 5 MB)
unrolled_unique(length, itr) Tuple(unique(length, itr)) Tuple 128 identical nonempty singleton Tuples better (optimized out vs. 384 B allocs) 12 times less (40 ns vs. 491 ns) similar (202 ms vs. 108 ms) 7 times more (34 MB vs. 5 MB)
unrolled_unique(length, itr) Tuple(unique(length, itr)) Tuple 2 identical nonempty non-singleton Tuples better (8 LLVM lines vs. 480 B allocs) 5 times less (49 ns vs. 290 ns) 2 times less (42 ms vs. 98 ms) 2 times less (2 MB vs. 5 MB)
unrolled_unique(length, itr) Tuple(unique(length, itr)) Tuple 8 identical nonempty non-singleton Tuples better (8 LLVM lines vs. 480 B allocs) 6 times less (49 ns vs. 301 ns) similar (89 ms vs. 94 ms) similar (5 MB vs. 5 MB)
unrolled_unique(length, itr) Tuple(unique(length, itr)) Tuple 32 identical nonempty non-singleton Tuples better (8 LLVM lines vs. 480 B allocs) 7 times less (49 ns vs. 360 ns) similar (112 ms vs. 89 ms) 3 times more (16 MB vs. 5 MB)
unrolled_unique(length, itr) Tuple(unique(length, itr)) Tuple 128 identical nonempty non-singleton Tuples better (8 LLVM lines vs. 480 B allocs) 11 times less (49 ns vs. 581 ns) 3 times more (319 ms vs. 92 ms) 24 times more (119 MB vs. 5 MB)
unrolled_unique(length, itr) Tuple(unique(length, itr)) Tuple 2 empty & nonempty singleton Tuples better (optimized out vs. 448 B allocs) 7 times less (40 ns vs. 300 ns) similar (57 ms vs. 109 ms) 3 times less (1 MB vs. 4 MB)
unrolled_unique(length, itr) Tuple(unique(length, itr)) Tuple 8 empty & nonempty singleton Tuples better (optimized out vs. 448 B allocs) 10 times less (40 ns vs. 430 ns) similar (105 ms vs. 112 ms) similar (3 MB vs. 4 MB)
unrolled_unique(length, itr) Tuple(unique(length, itr)) Tuple 32 empty & nonempty singleton Tuples better (optimized out vs. 448 B allocs) 22 times less (40 ns vs. 882 ns) similar (129 ms vs. 117 ms) similar (7 MB vs. 4 MB)
unrolled_unique(length, itr) Tuple(unique(length, itr)) Tuple 128 empty & nonempty singleton Tuples better (optimized out vs. 448 B allocs) 46 times less (49 ns vs. 2 μs) similar (178 ms vs. 108 ms) 5 times more (23 MB vs. 4 MB)
unrolled_unique(length, itr) Tuple(unique(length, itr)) Tuple 2 nonempty singleton Tuples better (optimized out vs. 448 B allocs) 7 times less (40 ns vs. 290 ns) similar (51 ms vs. 102 ms) 3 times less (1 MB vs. 4 MB)
unrolled_unique(length, itr) Tuple(unique(length, itr)) Tuple 8 nonempty singleton Tuples better (optimized out vs. 448 B allocs) 12 times less (40 ns vs. 480 ns) similar (96 ms vs. 118 ms) 2 times less (3 MB vs. 6 MB)
unrolled_unique(length, itr) Tuple(unique(length, itr)) Tuple 32 nonempty singleton Tuples better (optimized out vs. 448 B allocs) 27 times less (49 ns vs. 1 μs) similar (118 ms vs. 141 ms) similar (7 MB vs. 7 MB)
unrolled_unique(length, itr) Tuple(unique(length, itr)) Tuple 128 nonempty singleton Tuples better (optimized out vs. 448 B allocs) 64 times less (40 ns vs. 3 μs) similar (172 ms vs. 137 ms) 3 times more (22 MB vs. 7 MB)
unrolled_unique(length, itr) Tuple(unique(length, itr)) Tuple 2 nonempty non-singleton Tuples better (11 LLVM lines vs. 592 B allocs) 7 times less (49 ns vs. 360 ns) 2 times less (41 ms vs. 105 ms) 2 times less (2 MB vs. 4 MB)
unrolled_unique(length, itr) Tuple(unique(length, itr)) Tuple 8 nonempty non-singleton Tuples better (17 LLVM lines vs. 2 kB allocs) 11 times less (60 ns vs. 692 ns) similar (93 ms vs. 127 ms) similar (5 MB vs. 6 MB)
unrolled_unique(length, itr) Tuple(unique(length, itr)) Tuple 32 nonempty non-singleton Tuples better (26 LLVM lines vs. 38 kB allocs) 65 times less (60 ns vs. 4 μs) similar (121 ms vs. 160 ms) 3 times more (20 MB vs. 7 MB)
unrolled_unique(length, itr) Tuple(unique(length, itr)) Tuple 128 nonempty non-singleton Tuples better (26 LLVM lines vs. 522 kB allocs) 811 times less (60 ns vs. 49 μs) 2 times more (324 ms vs. 155 ms) 18 times more (132 MB vs. 7 MB)
unrolled_unique(itr) Tuple(unique(itr)) Tuple 1 empty singleton Tuple better (optimized out vs. 256 B allocs) 5 times less (40 ns vs. 220 ns) 2 times less (51 ms vs. 124 ms) 7 times less (968 kB vs. 7 MB)
unrolled_unique(itr) Tuple(unique(itr)) Tuple 1 nonempty singleton Tuple better (optimized out vs. 256 B allocs) 5 times less (40 ns vs. 220 ns) 2 times less (50 ms vs. 135 ms) 7 times less (998 kB vs. 8 MB)
unrolled_unique(itr) Tuple(unique(itr)) Tuple 1 nonempty non-singleton Tuple better (8 LLVM lines vs. 480 B allocs) 5 times less (49 ns vs. 270 ns) 3 times less (42 ms vs. 137 ms) 4 times less (2 MB vs. 7 MB)
unrolled_unique(itr) Tuple(unique(itr)) Tuple 2 identical nonempty singleton Tuples better (optimized out vs. 256 B allocs) 4 times less (49 ns vs. 230 ns) 2 times less (57 ms vs. 141 ms) 6 times less (1 MB vs. 8 MB)
unrolled_unique(itr) Tuple(unique(itr)) Tuple 8 identical nonempty singleton Tuples better (optimized out vs. 256 B allocs) 5 times less (49 ns vs. 250 ns) similar (120 ms vs. 145 ms) 3 times less (2 MB vs. 8 MB)
unrolled_unique(itr) Tuple(unique(itr)) Tuple 32 identical nonempty singleton Tuples better (optimized out vs. 256 B allocs) 8 times less (40 ns vs. 330 ns) similar (119 ms vs. 141 ms) similar (6 MB vs. 8 MB)
unrolled_unique(itr) Tuple(unique(itr)) Tuple 128 identical nonempty singleton Tuples better (optimized out vs. 256 B allocs) 12 times less (49 ns vs. 621 ns) similar (165 ms vs. 141 ms) 2 times more (20 MB vs. 8 MB)
unrolled_unique(itr) Tuple(unique(itr)) Tuple 2 identical nonempty non-singleton Tuples better (21 LLVM lines vs. 480 B allocs) 5 times less (49 ns vs. 290 ns) 2 times less (50 ms vs. 145 ms) 3 times less (2 MB vs. 8 MB)
unrolled_unique(itr) Tuple(unique(itr)) Tuple 8 identical nonempty non-singleton Tuples fewer allocs (48 B allocs vs. 480 B allocs) similar (240 ns vs. 310 ns) similar (121 ms vs. 134 ms) similar (12 MB vs. 8 MB)
unrolled_unique(itr) Tuple(unique(itr)) Tuple 32 identical nonempty non-singleton Tuples fewer allocs (48 B allocs vs. 480 B allocs) 2 times more (1 μs vs. 430 ns) 4 times more (695 ms vs. 140 ms) 12 times more (95 MB vs. 8 MB)
unrolled_unique(itr) Tuple(unique(itr)) Tuple 128 identical nonempty non-singleton Tuples fewer allocs (48 B allocs vs. 480 B allocs) 11 times more (10 μs vs. 941 ns) 86 times more (12 s vs. 142 ms) 164 times more (1 GB vs. 8 MB)
unrolled_unique(itr) Tuple(unique(itr)) Tuple 2 empty & nonempty singleton Tuples better (optimized out vs. 448 B allocs) 5 times less (49 ns vs. 280 ns) 3 times less (56 ms vs. 195 ms) 8 times less (1 MB vs. 10 MB)
unrolled_unique(itr) Tuple(unique(itr)) Tuple 8 empty & nonempty singleton Tuples better (optimized out vs. 576 B allocs) 12 times less (49 ns vs. 621 ns) 2 times less (112 ms vs. 296 ms) 6 times less (3 MB vs. 18 MB)
unrolled_unique(itr) Tuple(unique(itr)) Tuple 32 empty & nonempty singleton Tuples better (optimized out vs. 960 B allocs) 47 times less (49 ns vs. 2 μs) 4 times less (129 ms vs. 518 ms) 4 times less (7 MB vs. 34 MB)
unrolled_unique(itr) Tuple(unique(itr)) Tuple 128 empty & nonempty singleton Tuples better (optimized out vs. 2 kB allocs) 139 times less (49 ns vs. 7 μs) 2 times less (195 ms vs. 468 ms) similar (22 MB vs. 34 MB)
unrolled_unique(itr) Tuple(unique(itr)) Tuple 2 nonempty singleton Tuples better (optimized out vs. 448 B allocs) 5 times less (49 ns vs. 280 ns) 3 times less (54 ms vs. 194 ms) 9 times less (1 MB vs. 12 MB)
unrolled_unique(itr) Tuple(unique(itr)) Tuple 8 nonempty singleton Tuples better (optimized out vs. 576 B allocs) 28 times less (40 ns vs. 1 μs) 3 times less (95 ms vs. 308 ms) 8 times less (3 MB vs. 22 MB)
unrolled_unique(itr) Tuple(unique(itr)) Tuple 32 nonempty singleton Tuples better (optimized out vs. 960 B allocs) 66 times less (49 ns vs. 3 μs) 4 times less (116 ms vs. 476 ms) 5 times less (7 MB vs. 35 MB)
unrolled_unique(itr) Tuple(unique(itr)) Tuple 128 nonempty singleton Tuples better (optimized out vs. 2 kB allocs) 161 times less (49 ns vs. 8 μs) 2 times less (188 ms vs. 465 ms) similar (22 MB vs. 35 MB)
unrolled_unique(itr) Tuple(unique(itr)) Tuple 2 nonempty non-singleton Tuples better (11 LLVM lines vs. 640 B allocs) 6 times less (60 ns vs. 370 ns) 4 times less (40 ms vs. 191 ms) 4 times less (2 MB vs. 11 MB)
unrolled_unique(itr) Tuple(unique(itr)) Tuple 8 nonempty non-singleton Tuples fewer allocs (208 B allocs vs. 2 kB allocs) 14 times less (100 ns vs. 1 μs) 2 times less (141 ms vs. 331 ms) similar (12 MB vs. 20 MB)
unrolled_unique(itr) Tuple(unique(itr)) Tuple 32 nonempty non-singleton Tuples fewer allocs (784 B allocs vs. 39 kB allocs) 8 times less (751 ns vs. 6 μs) similar (439 ms vs. 557 ms) 2 times more (76 MB vs. 33 MB)
unrolled_unique(itr) Tuple(unique(itr)) Tuple 128 nonempty non-singleton Tuples fewer allocs (784 B allocs vs. 525 kB allocs) 20 times less (3 μs vs. 57 μs) 8 times more (4 s vs. 530 ms) 25 times more (863 MB vs. 33 MB)
unrolled_allunique(length, itr) allunique(length, itr) Tuple 1 empty singleton Tuple similar (optimized out) similar (40 ns vs. 40 ns) 2 times more (53 ms vs. 27 ms) 76 times more (1 MB vs. 15 kB)
unrolled_allunique(length, itr) allunique(length, itr) Tuple 1 nonempty singleton Tuple similar (optimized out) similar (40 ns vs. 40 ns) 2 times more (59 ms vs. 26 ms) 59 times more (1 MB vs. 20 kB)
unrolled_allunique(length, itr) allunique(length, itr) Tuple 1 nonempty non-singleton Tuple similar (optimized out) similar (40 ns vs. 40 ns) similar (47 ms vs. 27 ms) 65 times more (1 MB vs. 19 kB)
unrolled_allunique(length, itr) allunique(length, itr) Tuple 2 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (61 ms vs. 34 ms) similar (1 MB vs. 1003 kB)
unrolled_allunique(length, itr) allunique(length, itr) Tuple 8 identical nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (92 ms vs. 55 ms) 3 times less (3 MB vs. 9 MB)
unrolled_allunique(length, itr) allunique(length, itr) Tuple 32 identical nonempty singleton Tuples better (optimized out vs. 320 B allocs) 2 times less (49 ns vs. 120 ns) similar (105 ms vs. 67 ms) 3 times more (8 MB vs. 2 MB)
unrolled_allunique(length, itr) allunique(length, itr) Tuple 128 identical nonempty singleton Tuples better (optimized out vs. 320 B allocs) 2 times less (49 ns vs. 120 ns) 2 times more (161 ms vs. 64 ms) 14 times more (29 MB vs. 2 MB)
unrolled_allunique(length, itr) allunique(length, itr) Tuple 2 identical nonempty non-singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (46 ms vs. 33 ms) similar (2 MB vs. 981 kB)
unrolled_allunique(length, itr) allunique(length, itr) Tuple 8 identical nonempty non-singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (69 ms vs. 54 ms) 2 times less (3 MB vs. 9 MB)
unrolled_allunique(length, itr) allunique(length, itr) Tuple 32 identical nonempty non-singleton Tuples better (optimized out vs. 320 B allocs) 2 times less (49 ns vs. 120 ns) similar (81 ms vs. 53 ms) 4 times more (9 MB vs. 2 MB)
unrolled_allunique(length, itr) allunique(length, itr) Tuple 128 identical nonempty non-singleton Tuples better (optimized out vs. 320 B allocs) 3 times less (40 ns vs. 130 ns) 2 times more (150 ms vs. 55 ms) 14 times more (32 MB vs. 2 MB)
unrolled_allunique(length, itr) allunique(length, itr) Tuple 2 empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (61 ms vs. 36 ms) similar (1 MB vs. 1003 kB)
unrolled_allunique(length, itr) allunique(length, itr) Tuple 8 empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (86 ms vs. 54 ms) 4 times less (2 MB vs. 9 MB)
unrolled_allunique(length, itr) allunique(length, itr) Tuple 32 empty & nonempty singleton Tuples better (optimized out vs. 320 B allocs) 3 times less (49 ns vs. 150 ns) similar (101 ms vs. 70 ms) 2 times more (5 MB vs. 2 MB)
unrolled_allunique(length, itr) allunique(length, itr) Tuple 128 empty & nonempty singleton Tuples better (optimized out vs. 320 B allocs) 3 times less (49 ns vs. 150 ns) 2 times more (144 ms vs. 61 ms) 8 times more (17 MB vs. 2 MB)
unrolled_allunique(length, itr) allunique(length, itr) Tuple 2 nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (53 ms vs. 30 ms) similar (1 MB vs. 1008 kB)
unrolled_allunique(length, itr) allunique(length, itr) Tuple 8 nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (75 ms vs. 50 ms) 4 times less (2 MB vs. 9 MB)
unrolled_allunique(length, itr) allunique(length, itr) Tuple 32 nonempty singleton Tuples better (optimized out vs. 320 B allocs) 3 times less (49 ns vs. 150 ns) similar (90 ms vs. 61 ms) 2 times more (5 MB vs. 2 MB)
unrolled_allunique(length, itr) allunique(length, itr) Tuple 128 nonempty singleton Tuples better (optimized out vs. 320 B allocs) 3 times less (40 ns vs. 150 ns) 2 times more (142 ms vs. 61 ms) 8 times more (17 MB vs. 2 MB)
unrolled_allunique(length, itr) allunique(length, itr) Tuple 2 nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (41 ms vs. 30 ms) similar (1 MB vs. 1007 kB)
unrolled_allunique(length, itr) allunique(length, itr) Tuple 8 nonempty non-singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (65 ms vs. 51 ms) 3 times less (2 MB vs. 9 MB)
unrolled_allunique(length, itr) allunique(length, itr) Tuple 32 nonempty non-singleton Tuples better (optimized out vs. 3 kB allocs) 5 times less (49 ns vs. 250 ns) similar (77 ms vs. 55 ms) 2 times more (6 MB vs. 2 MB)
unrolled_allunique(length, itr) allunique(length, itr) Tuple 128 nonempty non-singleton Tuples better (optimized out vs. 8 kB allocs) 17 times less (40 ns vs. 681 ns) similar (111 ms vs. 62 ms) 9 times more (20 MB vs. 2 MB)
unrolled_allequal(length, itr) allequal(length, itr) Tuple 1 empty singleton Tuple similar (optimized out) similar (40 ns vs. 49 ns) similar (26 ms vs. 26 ms) similar (17 kB vs. 21 kB)
unrolled_allequal(length, itr) allequal(length, itr) Tuple 1 nonempty singleton Tuple similar (optimized out) similar (49 ns vs. 40 ns) similar (26 ms vs. 27 ms) similar (22 kB vs. 25 kB)
unrolled_allequal(length, itr) allequal(length, itr) Tuple 1 nonempty non-singleton Tuple similar (optimized out) similar (40 ns vs. 40 ns) similar (26 ms vs. 26 ms) similar (22 kB vs. 25 kB)
unrolled_allequal(length, itr) allequal(length, itr) Tuple 2 identical nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (46 ms vs. 31 ms) similar (346 kB vs. 194 kB)
unrolled_allequal(length, itr) allequal(length, itr) Tuple 8 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (71 ms vs. 39 ms) 2 times more (774 kB vs. 297 kB)
unrolled_allequal(length, itr) allequal(length, itr) Tuple 32 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (72 ms vs. 36 ms) 7 times more (2 MB vs. 299 kB)
unrolled_allequal(length, itr) allequal(length, itr) Tuple 128 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) 3 times more (115 ms vs. 37 ms) 26 times more (8 MB vs. 310 kB)
unrolled_allequal(length, itr) allequal(length, itr) Tuple 2 identical nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (34 ms vs. 31 ms) similar (329 kB vs. 187 kB)
unrolled_allequal(length, itr) allequal(length, itr) Tuple 8 identical nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (55 ms vs. 36 ms) similar (825 kB vs. 434 kB)
unrolled_allequal(length, itr) allequal(length, itr) Tuple 32 identical nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (62 ms vs. 36 ms) 5 times more (2 MB vs. 494 kB)
unrolled_allequal(length, itr) allequal(length, itr) Tuple 128 identical nonempty non-singleton Tuples better (optimized out vs. 4 kB allocs) 123 times less (49 ns vs. 6 μs) similar (83 ms vs. 42 ms) 20 times more (9 MB vs. 438 kB)
unrolled_allequal(length, itr) allequal(length, itr) Tuple 2 empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (44 ms vs. 32 ms) similar (361 kB vs. 192 kB)
unrolled_allequal(length, itr) allequal(length, itr) Tuple 8 empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) 2 times more (65 ms vs. 30 ms) 4 times more (816 kB vs. 194 kB)
unrolled_allequal(length, itr) allequal(length, itr) Tuple 32 empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) 2 times more (74 ms vs. 32 ms) 12 times more (2 MB vs. 197 kB)
unrolled_allequal(length, itr) allequal(length, itr) Tuple 128 empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) 3 times more (91 ms vs. 29 ms) 40 times more (8 MB vs. 208 kB)
unrolled_allequal(length, itr) allequal(length, itr) Tuple 2 nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (39 ms vs. 28 ms) similar (366 kB vs. 196 kB)
unrolled_allequal(length, itr) allequal(length, itr) Tuple 8 nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) 2 times more (58 ms vs. 28 ms) 4 times more (821 kB vs. 198 kB)
unrolled_allequal(length, itr) allequal(length, itr) Tuple 32 nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) 2 times more (65 ms vs. 29 ms) 11 times more (2 MB vs. 202 kB)
unrolled_allequal(length, itr) allequal(length, itr) Tuple 128 nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) 3 times more (96 ms vs. 29 ms) 39 times more (8 MB vs. 212 kB)
unrolled_allequal(length, itr) allequal(length, itr) Tuple 2 nonempty non-singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (32 ms vs. 28 ms) similar (369 kB vs. 260 kB)
unrolled_allequal(length, itr) allequal(length, itr) Tuple 8 nonempty non-singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (54 ms vs. 30 ms) 2 times more (834 kB vs. 292 kB)
unrolled_allequal(length, itr) allequal(length, itr) Tuple 32 nonempty non-singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (60 ms vs. 30 ms) 7 times more (2 MB vs. 331 kB)
unrolled_allequal(length, itr) allequal(length, itr) Tuple 128 nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) 2 times more (78 ms vs. 29 ms) 32 times more (9 MB vs. 283 kB)
unrolled_sum(length, itr) sum(length, itr) Tuple 1 empty singleton Tuple similar (optimized out) similar (49 ns vs. 49 ns) similar (33 ms vs. 67 ms) 16 times less (130 kB vs. 2 MB)
unrolled_sum(length, itr) sum(length, itr) Tuple 1 nonempty singleton Tuple similar (optimized out) similar (49 ns vs. 40 ns) 2 times less (33 ms vs. 73 ms) 12 times less (165 kB vs. 2 MB)
unrolled_sum(length, itr) sum(length, itr) Tuple 1 nonempty non-singleton Tuple similar (optimized out) similar (49 ns vs. 49 ns) similar (31 ms vs. 50 ms) 17 times less (138 kB vs. 2 MB)
unrolled_sum(length, itr) sum(length, itr) Tuple 2 identical nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) 2 times less (39 ms vs. 85 ms) 12 times less (169 kB vs. 2 MB)
unrolled_sum(length, itr) sum(length, itr) Tuple 8 identical nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (72 ms vs. 82 ms) similar (2 MB vs. 2 MB)
unrolled_sum(length, itr) sum(length, itr) Tuple 32 identical nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (71 ms vs. 83 ms) similar (2 MB vs. 2 MB)
unrolled_sum(length, itr) sum(length, itr) Tuple 128 identical nonempty singleton Tuples better (optimized out vs. 6 LLVM lines) similar (49 ns vs. 49 ns) similar (83 ms vs. 90 ms) similar (3 MB vs. 2 MB)
unrolled_sum(length, itr) sum(length, itr) Tuple 2 identical nonempty non-singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (33 ms vs. 47 ms) 17 times less (147 kB vs. 2 MB)
unrolled_sum(length, itr) sum(length, itr) Tuple 8 identical nonempty non-singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (61 ms vs. 46 ms) similar (2 MB vs. 3 MB)
unrolled_sum(length, itr) sum(length, itr) Tuple 32 identical nonempty non-singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (60 ms vs. 45 ms) similar (2 MB vs. 3 MB)
unrolled_sum(length, itr) sum(length, itr) Tuple 128 identical nonempty non-singleton Tuples better (optimized out vs. 6 LLVM lines) similar (40 ns vs. 49 ns) similar (77 ms vs. 52 ms) similar (3 MB vs. 3 MB)
unrolled_sum(length, itr) sum(length, itr) Tuple 2 empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (40 ms vs. 79 ms) 14 times less (169 kB vs. 2 MB)
unrolled_sum(length, itr) sum(length, itr) Tuple 8 empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (66 ms vs. 90 ms) similar (2 MB vs. 3 MB)
unrolled_sum(length, itr) sum(length, itr) Tuple 32 empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (71 ms vs. 104 ms) similar (2 MB vs. 4 MB)
unrolled_sum(length, itr) sum(length, itr) Tuple 128 empty & nonempty singleton Tuples better (optimized out vs. 26 LLVM lines) 28 times less (49 ns vs. 1 μs) similar (73 ms vs. 81 ms) similar (3 MB vs. 3 MB)
unrolled_sum(length, itr) sum(length, itr) Tuple 2 nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) 2 times less (34 ms vs. 71 ms) 14 times less (174 kB vs. 3 MB)
unrolled_sum(length, itr) sum(length, itr) Tuple 8 nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (61 ms vs. 78 ms) similar (2 MB vs. 3 MB)
unrolled_sum(length, itr) sum(length, itr) Tuple 32 nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (63 ms vs. 91 ms) similar (2 MB vs. 4 MB)
unrolled_sum(length, itr) sum(length, itr) Tuple 128 nonempty singleton Tuples better (optimized out vs. 26 LLVM lines) 28 times less (49 ns vs. 1 μs) similar (71 ms vs. 79 ms) similar (3 MB vs. 3 MB)
unrolled_sum(length, itr) sum(length, itr) Tuple 2 nonempty non-singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (31 ms vs. 43 ms) 16 times less (172 kB vs. 3 MB)
unrolled_sum(length, itr) sum(length, itr) Tuple 8 nonempty non-singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (60 ms vs. 48 ms) similar (2 MB vs. 4 MB)
unrolled_sum(length, itr) sum(length, itr) Tuple 32 nonempty non-singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (64 ms vs. 52 ms) similar (2 MB vs. 4 MB)
unrolled_sum(length, itr) sum(length, itr) Tuple 128 nonempty non-singleton Tuples better (optimized out vs. 521 kB allocs) 942 times less (40 ns vs. 38 μs) similar (69 ms vs. 53 ms) similar (3 MB vs. 4 MB)
unrolled_prod(length, itr) prod(length, itr) Tuple 1 empty singleton Tuple similar (optimized out) similar (40 ns vs. 49 ns) 2 times less (31 ms vs. 75 ms) 12 times less (180 kB vs. 2 MB)
unrolled_prod(length, itr) prod(length, itr) Tuple 1 nonempty singleton Tuple similar (optimized out) similar (49 ns vs. 41 ns) 2 times less (33 ms vs. 80 ms) 11 times less (215 kB vs. 2 MB)
unrolled_prod(length, itr) prod(length, itr) Tuple 1 nonempty non-singleton Tuple similar (optimized out) similar (49 ns vs. 40 ns) similar (31 ms vs. 52 ms) 14 times less (188 kB vs. 3 MB)
unrolled_prod(length, itr) prod(length, itr) Tuple 2 identical nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) 2 times less (39 ms vs. 97 ms) 9 times less (262 kB vs. 2 MB)
unrolled_prod(length, itr) prod(length, itr) Tuple 8 identical nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (69 ms vs. 100 ms) similar (2 MB vs. 3 MB)
unrolled_prod(length, itr) prod(length, itr) Tuple 32 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (72 ms vs. 89 ms) similar (2 MB vs. 3 MB)
unrolled_prod(length, itr) prod(length, itr) Tuple 128 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (81 ms vs. 94 ms) similar (3 MB vs. 2 MB)
unrolled_prod(length, itr) prod(length, itr) Tuple 2 identical nonempty non-singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (34 ms vs. 56 ms) 11 times less (240 kB vs. 3 MB)
unrolled_prod(length, itr) prod(length, itr) Tuple 8 identical nonempty non-singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (63 ms vs. 54 ms) similar (2 MB vs. 3 MB)
unrolled_prod(length, itr) prod(length, itr) Tuple 32 identical nonempty non-singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (61 ms vs. 54 ms) similar (2 MB vs. 4 MB)
unrolled_prod(length, itr) prod(length, itr) Tuple 128 identical nonempty non-singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (74 ms vs. 61 ms) similar (3 MB vs. 3 MB)
unrolled_prod(length, itr) prod(length, itr) Tuple 2 empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) 2 times less (37 ms vs. 86 ms) 10 times less (262 kB vs. 3 MB)
unrolled_prod(length, itr) prod(length, itr) Tuple 8 empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (67 ms vs. 98 ms) similar (2 MB vs. 3 MB)
unrolled_prod(length, itr) prod(length, itr) Tuple 32 empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (71 ms vs. 115 ms) similar (2 MB vs. 4 MB)
unrolled_prod(length, itr) prod(length, itr) Tuple 128 empty & nonempty singleton Tuples better (optimized out vs. 19 LLVM lines) 34 times less (40 ns vs. 1 μs) similar (73 ms vs. 89 ms) similar (3 MB vs. 3 MB)
unrolled_prod(length, itr) prod(length, itr) Tuple 2 nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) 2 times less (41 ms vs. 83 ms) 10 times less (267 kB vs. 3 MB)
unrolled_prod(length, itr) prod(length, itr) Tuple 8 nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (61 ms vs. 86 ms) similar (2 MB vs. 3 MB)
unrolled_prod(length, itr) prod(length, itr) Tuple 32 nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (62 ms vs. 103 ms) similar (2 MB vs. 4 MB)
unrolled_prod(length, itr) prod(length, itr) Tuple 128 nonempty singleton Tuples better (optimized out vs. 26 LLVM lines) 28 times less (49 ns vs. 1 μs) similar (71 ms vs. 87 ms) similar (3 MB vs. 3 MB)
unrolled_prod(length, itr) prod(length, itr) Tuple 2 nonempty non-singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (31 ms vs. 54 ms) 11 times less (265 kB vs. 3 MB)
unrolled_prod(length, itr) prod(length, itr) Tuple 8 nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (60 ms vs. 56 ms) similar (2 MB vs. 4 MB)
unrolled_prod(length, itr) prod(length, itr) Tuple 32 nonempty non-singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (65 ms vs. 60 ms) similar (2 MB vs. 5 MB)
unrolled_prod(length, itr) prod(length, itr) Tuple 128 nonempty non-singleton Tuples better (optimized out vs. 521 kB allocs) 880 times less (49 ns vs. 43 μs) similar (69 ms vs. 61 ms) similar (4 MB vs. 4 MB)
unrolled_cumsum(length, itr) Tuple(cumsum(Iterators.map(length, itr))) Tuple 1 empty singleton Tuple better (optimized out vs. 80 B allocs) 3 times less (49 ns vs. 190 ns) 2 times less (37 ms vs. 75 ms) 10 times less (273 kB vs. 3 MB)
unrolled_cumsum(length, itr) Tuple(cumsum(Iterators.map(length, itr))) Tuple 1 nonempty singleton Tuple better (optimized out vs. 80 B allocs) 4 times less (40 ns vs. 190 ns) 2 times less (37 ms vs. 75 ms) 9 times less (306 kB vs. 3 MB)
unrolled_cumsum(length, itr) Tuple(cumsum(Iterators.map(length, itr))) Tuple 1 nonempty non-singleton Tuple better (optimized out vs. 80 B allocs) 3 times less (49 ns vs. 190 ns) 2 times less (30 ms vs. 66 ms) 9 times less (354 kB vs. 3 MB)
unrolled_cumsum(length, itr) Tuple(cumsum(Iterators.map(length, itr))) Tuple 2 identical nonempty singleton Tuples better (7 LLVM lines w/ Const vs. 112 B allocs) 4 times less (49 ns vs. 210 ns) similar (42 ms vs. 80 ms) 11 times less (310 kB vs. 4 MB)
unrolled_cumsum(length, itr) Tuple(cumsum(Iterators.map(length, itr))) Tuple 8 identical nonempty singleton Tuples better (7 LLVM lines w/ Const vs. 208 B allocs) 9 times less (40 ns vs. 380 ns) similar (91 ms vs. 92 ms) 8 times less (443 kB vs. 4 MB)
unrolled_cumsum(length, itr) Tuple(cumsum(Iterators.map(length, itr))) Tuple 32 identical nonempty singleton Tuples better (7 LLVM lines w/ Const vs. 592 B allocs) 22 times less (49 ns vs. 1 μs) similar (85 ms vs. 86 ms) 6 times less (606 kB vs. 4 MB)
unrolled_cumsum(length, itr) Tuple(cumsum(Iterators.map(length, itr))) Tuple 128 identical nonempty singleton Tuples better (69 LLVM lines w/ Const vs. 2 kB allocs) 48 times less (80 ns vs. 4 μs) similar (112 ms vs. 89 ms) 2 times less (2 MB vs. 4 MB)
unrolled_cumsum(length, itr) Tuple(cumsum(Iterators.map(length, itr))) Tuple 2 identical nonempty non-singleton Tuples better (7 LLVM lines w/ Const vs. 112 B allocs) 5 times less (40 ns vs. 210 ns) 2 times less (35 ms vs. 74 ms) 10 times less (362 kB vs. 4 MB)
unrolled_cumsum(length, itr) Tuple(cumsum(Iterators.map(length, itr))) Tuple 8 identical nonempty non-singleton Tuples better (7 LLVM lines w/ Const vs. 208 B allocs) 10 times less (40 ns vs. 400 ns) similar (68 ms vs. 72 ms) 7 times less (549 kB vs. 4 MB)
unrolled_cumsum(length, itr) Tuple(cumsum(Iterators.map(length, itr))) Tuple 32 identical nonempty non-singleton Tuples better (7 LLVM lines w/ Const vs. 592 B allocs) 22 times less (49 ns vs. 1 μs) similar (70 ms vs. 69 ms) 4 times less (831 kB vs. 4 MB)
unrolled_cumsum(length, itr) Tuple(cumsum(Iterators.map(length, itr))) Tuple 128 identical nonempty non-singleton Tuples better (69 LLVM lines w/ Const vs. 2 kB allocs) 48 times less (80 ns vs. 4 μs) similar (98 ms vs. 76 ms) similar (2 MB vs. 4 MB)
unrolled_cumsum(length, itr) Tuple(cumsum(Iterators.map(length, itr))) Tuple 2 empty & nonempty singleton Tuples better (7 LLVM lines w/ Const vs. 112 B allocs) 5 times less (40 ns vs. 230 ns) similar (44 ms vs. 82 ms) 11 times less (324 kB vs. 4 MB)
unrolled_cumsum(length, itr) Tuple(cumsum(Iterators.map(length, itr))) Tuple 8 empty & nonempty singleton Tuples better (7 LLVM lines w/ Const vs. 208 B allocs) 9 times less (49 ns vs. 461 ns) similar (87 ms vs. 87 ms) 8 times less (467 kB vs. 4 MB)
unrolled_cumsum(length, itr) Tuple(cumsum(Iterators.map(length, itr))) Tuple 32 empty & nonempty singleton Tuples better (7 LLVM lines w/ Const vs. 592 B allocs) 36 times less (40 ns vs. 1 μs) similar (84 ms vs. 90 ms) 5 times less (631 kB vs. 4 MB)
unrolled_cumsum(length, itr) Tuple(cumsum(Iterators.map(length, itr))) Tuple 128 empty & nonempty singleton Tuples better (69 LLVM lines w/ Const vs. 2 kB allocs) 65 times less (80 ns vs. 5 μs) similar (101 ms vs. 77 ms) 2 times less (2 MB vs. 4 MB)
unrolled_cumsum(length, itr) Tuple(cumsum(Iterators.map(length, itr))) Tuple 2 nonempty singleton Tuples better (7 LLVM lines w/ Const vs. 112 B allocs) 4 times less (49 ns vs. 230 ns) similar (39 ms vs. 75 ms) 11 times less (329 kB vs. 4 MB)
unrolled_cumsum(length, itr) Tuple(cumsum(Iterators.map(length, itr))) Tuple 8 nonempty singleton Tuples better (7 LLVM lines w/ Const vs. 208 B allocs) 9 times less (49 ns vs. 470 ns) similar (71 ms vs. 75 ms) 8 times less (466 kB vs. 4 MB)
unrolled_cumsum(length, itr) Tuple(cumsum(Iterators.map(length, itr))) Tuple 32 nonempty singleton Tuples better (7 LLVM lines w/ Const vs. 592 B allocs) 29 times less (49 ns vs. 1 μs) similar (80 ms vs. 77 ms) 5 times less (629 kB vs. 4 MB)
unrolled_cumsum(length, itr) Tuple(cumsum(Iterators.map(length, itr))) Tuple 128 nonempty singleton Tuples better (69 LLVM lines w/ Const vs. 2 kB allocs) 64 times less (80 ns vs. 5 μs) similar (97 ms vs. 74 ms) 2 times less (2 MB vs. 4 MB)
unrolled_cumsum(length, itr) Tuple(cumsum(Iterators.map(length, itr))) Tuple 2 nonempty non-singleton Tuples better (7 LLVM lines w/ Const vs. 176 B allocs) 6 times less (40 ns vs. 240 ns) 2 times less (32 ms vs. 66 ms) 10 times less (408 kB vs. 4 MB)
unrolled_cumsum(length, itr) Tuple(cumsum(Iterators.map(length, itr))) Tuple 8 nonempty non-singleton Tuples better (7 LLVM lines w/ Const vs. 2 kB allocs) 14 times less (40 ns vs. 581 ns) similar (66 ms vs. 70 ms) 7 times less (560 kB vs. 4 MB)
unrolled_cumsum(length, itr) Tuple(cumsum(Iterators.map(length, itr))) Tuple 32 nonempty non-singleton Tuples better (7 LLVM lines w/ Const vs. 37 kB allocs) 386 times less (40 ns vs. 15 μs) similar (70 ms vs. 72 ms) 4 times less (855 kB vs. 4 MB)
unrolled_cumsum(length, itr) Tuple(cumsum(Iterators.map(length, itr))) Tuple 128 nonempty non-singleton Tuples better (69 LLVM lines w/ Const vs. 523 kB allocs) 607 times less (80 ns vs. 49 μs) similar (92 ms vs. 67 ms) similar (2 MB vs. 4 MB)
unrolled_cumprod(length, itr) Tuple(cumprod(Iterators.map(length, itr))) Tuple 1 empty singleton Tuple better (optimized out vs. 80 B allocs) 4 times less (40 ns vs. 170 ns) 2 times less (38 ms vs. 78 ms) 9 times less (324 kB vs. 3 MB)
unrolled_cumprod(length, itr) Tuple(cumprod(Iterators.map(length, itr))) Tuple 1 nonempty singleton Tuple better (optimized out vs. 80 B allocs) 4 times less (40 ns vs. 170 ns) 2 times less (37 ms vs. 84 ms) 8 times less (356 kB vs. 3 MB)
unrolled_cumprod(length, itr) Tuple(cumprod(Iterators.map(length, itr))) Tuple 1 nonempty non-singleton Tuple better (optimized out vs. 80 B allocs) 4 times less (40 ns vs. 180 ns) 2 times less (32 ms vs. 70 ms) 8 times less (405 kB vs. 3 MB)
unrolled_cumprod(length, itr) Tuple(cumprod(Iterators.map(length, itr))) Tuple 2 identical nonempty singleton Tuples better (7 LLVM lines w/ Const vs. 112 B allocs) 5 times less (40 ns vs. 220 ns) similar (43 ms vs. 86 ms) 9 times less (404 kB vs. 4 MB)
unrolled_cumprod(length, itr) Tuple(cumprod(Iterators.map(length, itr))) Tuple 8 identical nonempty singleton Tuples better (7 LLVM lines w/ Const vs. 208 B allocs) 7 times less (49 ns vs. 380 ns) similar (89 ms vs. 95 ms) 7 times less (536 kB vs. 4 MB)
unrolled_cumprod(length, itr) Tuple(cumprod(Iterators.map(length, itr))) Tuple 32 identical nonempty singleton Tuples better (7 LLVM lines w/ Const vs. 592 B allocs) 22 times less (49 ns vs. 1 μs) similar (82 ms vs. 87 ms) 5 times less (699 kB vs. 4 MB)
unrolled_cumprod(length, itr) Tuple(cumprod(Iterators.map(length, itr))) Tuple 128 identical nonempty singleton Tuples better (69 LLVM lines w/ Const vs. 2 kB allocs) 47 times less (80 ns vs. 4 μs) similar (110 ms vs. 89 ms) 2 times less (2 MB vs. 4 MB)
unrolled_cumprod(length, itr) Tuple(cumprod(Iterators.map(length, itr))) Tuple 2 identical nonempty non-singleton Tuples better (7 LLVM lines w/ Const vs. 112 B allocs) 5 times less (40 ns vs. 210 ns) 2 times less (37 ms vs. 83 ms) 9 times less (455 kB vs. 4 MB)
unrolled_cumprod(length, itr) Tuple(cumprod(Iterators.map(length, itr))) Tuple 8 identical nonempty non-singleton Tuples better (7 LLVM lines w/ Const vs. 208 B allocs) 9 times less (40 ns vs. 370 ns) similar (65 ms vs. 74 ms) 6 times less (643 kB vs. 4 MB)
unrolled_cumprod(length, itr) Tuple(cumprod(Iterators.map(length, itr))) Tuple 32 identical nonempty non-singleton Tuples better (7 LLVM lines w/ Const vs. 592 B allocs) 27 times less (40 ns vs. 1 μs) similar (68 ms vs. 74 ms) 4 times less (924 kB vs. 4 MB)
unrolled_cumprod(length, itr) Tuple(cumprod(Iterators.map(length, itr))) Tuple 128 identical nonempty non-singleton Tuples better (69 LLVM lines w/ Const vs. 2 kB allocs) 55 times less (69 ns vs. 4 μs) similar (101 ms vs. 79 ms) similar (2 MB vs. 4 MB)
unrolled_cumprod(length, itr) Tuple(cumprod(Iterators.map(length, itr))) Tuple 2 empty & nonempty singleton Tuples better (7 LLVM lines w/ Const vs. 112 B allocs) 4 times less (49 ns vs. 230 ns) similar (48 ms vs. 86 ms) 9 times less (417 kB vs. 4 MB)
unrolled_cumprod(length, itr) Tuple(cumprod(Iterators.map(length, itr))) Tuple 8 empty & nonempty singleton Tuples better (7 LLVM lines w/ Const vs. 208 B allocs) 9 times less (49 ns vs. 460 ns) similar (82 ms vs. 89 ms) 7 times less (560 kB vs. 4 MB)
unrolled_cumprod(length, itr) Tuple(cumprod(Iterators.map(length, itr))) Tuple 32 empty & nonempty singleton Tuples better (7 LLVM lines w/ Const vs. 592 B allocs) 29 times less (49 ns vs. 1 μs) similar (84 ms vs. 90 ms) 5 times less (724 kB vs. 4 MB)
unrolled_cumprod(length, itr) Tuple(cumprod(Iterators.map(length, itr))) Tuple 128 empty & nonempty singleton Tuples better (7 LLVM lines w/ Const vs. 2 kB allocs) 73 times less (71 ns vs. 5 μs) similar (91 ms vs. 80 ms) 2 times less (2 MB vs. 4 MB)
unrolled_cumprod(length, itr) Tuple(cumprod(Iterators.map(length, itr))) Tuple 2 nonempty singleton Tuples better (7 LLVM lines w/ Const vs. 112 B allocs) 4 times less (49 ns vs. 230 ns) 2 times less (39 ms vs. 79 ms) 9 times less (422 kB vs. 4 MB)
unrolled_cumprod(length, itr) Tuple(cumprod(Iterators.map(length, itr))) Tuple 8 nonempty singleton Tuples better (7 LLVM lines w/ Const vs. 224 B allocs) 9 times less (49 ns vs. 470 ns) similar (71 ms vs. 78 ms) 7 times less (560 kB vs. 4 MB)
unrolled_cumprod(length, itr) Tuple(cumprod(Iterators.map(length, itr))) Tuple 32 nonempty singleton Tuples better (7 LLVM lines w/ Const vs. 992 B allocs) 32 times less (49 ns vs. 2 μs) similar (78 ms vs. 84 ms) 5 times less (722 kB vs. 4 MB)
unrolled_cumprod(length, itr) Tuple(cumprod(Iterators.map(length, itr))) Tuple 128 nonempty singleton Tuples better (73 LLVM lines w/ Const vs. 4 kB allocs) 73 times less (80 ns vs. 6 μs) similar (99 ms vs. 78 ms) 2 times less (2 MB vs. 4 MB)
unrolled_cumprod(length, itr) Tuple(cumprod(Iterators.map(length, itr))) Tuple 2 nonempty non-singleton Tuples better (7 LLVM lines w/ Const vs. 176 B allocs) 6 times less (40 ns vs. 240 ns) 2 times less (32 ms vs. 68 ms) 8 times less (501 kB vs. 4 MB)
unrolled_cumprod(length, itr) Tuple(cumprod(Iterators.map(length, itr))) Tuple 8 nonempty non-singleton Tuples better (7 LLVM lines w/ Const vs. 2 kB allocs) 12 times less (49 ns vs. 590 ns) similar (65 ms vs. 75 ms) 6 times less (653 kB vs. 4 MB)
unrolled_cumprod(length, itr) Tuple(cumprod(Iterators.map(length, itr))) Tuple 32 nonempty non-singleton Tuples better (7 LLVM lines w/ Const vs. 38 kB allocs) 93 times less (40 ns vs. 4 μs) similar (74 ms vs. 74 ms) 4 times less (948 kB vs. 4 MB)
unrolled_cumprod(length, itr) Tuple(cumprod(Iterators.map(length, itr))) Tuple 128 nonempty non-singleton Tuples better (73 LLVM lines w/ Const vs. 525 kB allocs) 614 times less (80 ns vs. 49 μs) similar (92 ms vs. 70 ms) similar (3 MB vs. 5 MB)
unrolled_count(!isempty, itr) count(!isempty, itr) Tuple 1 empty singleton Tuple similar (optimized out) similar (40 ns vs. 49 ns) 2 times less (35 ms vs. 79 ms) 13 times less (262 kB vs. 4 MB)
unrolled_count(!isempty, itr) count(!isempty, itr) Tuple 1 nonempty singleton Tuple similar (optimized out) similar (49 ns vs. 49 ns) 2 times less (36 ms vs. 83 ms) 12 times less (296 kB vs. 4 MB)
unrolled_count(!isempty, itr) count(!isempty, itr) Tuple 1 nonempty non-singleton Tuple similar (optimized out) similar (49 ns vs. 49 ns) similar (34 ms vs. 56 ms) 14 times less (269 kB vs. 4 MB)
unrolled_count(!isempty, itr) count(!isempty, itr) Tuple 2 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (46 ms vs. 90 ms) 12 times less (301 kB vs. 4 MB)
unrolled_count(!isempty, itr) count(!isempty, itr) Tuple 8 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (80 ms vs. 99 ms) similar (2 MB vs. 4 MB)
unrolled_count(!isempty, itr) count(!isempty, itr) Tuple 32 identical nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (73 ms vs. 90 ms) similar (2 MB vs. 4 MB)
unrolled_count(!isempty, itr) count(!isempty, itr) Tuple 128 identical nonempty singleton Tuples better (optimized out vs. 6 LLVM lines) similar (49 ns vs. 49 ns) similar (83 ms vs. 89 ms) similar (3 MB vs. 3 MB)
unrolled_count(!isempty, itr) count(!isempty, itr) Tuple 2 identical nonempty non-singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (42 ms vs. 59 ms) 14 times less (278 kB vs. 4 MB)
unrolled_count(!isempty, itr) count(!isempty, itr) Tuple 8 identical nonempty non-singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (65 ms vs. 59 ms) similar (2 MB vs. 4 MB)
unrolled_count(!isempty, itr) count(!isempty, itr) Tuple 32 identical nonempty non-singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (66 ms vs. 59 ms) 2 times less (2 MB vs. 5 MB)
unrolled_count(!isempty, itr) count(!isempty, itr) Tuple 128 identical nonempty non-singleton Tuples better (optimized out vs. 6 LLVM lines) similar (40 ns vs. 49 ns) similar (87 ms vs. 56 ms) similar (4 MB vs. 4 MB)
unrolled_count(!isempty, itr) count(!isempty, itr) Tuple 2 empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (42 ms vs. 84 ms) 11 times less (352 kB vs. 4 MB)
unrolled_count(!isempty, itr) count(!isempty, itr) Tuple 8 empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (73 ms vs. 90 ms) 2 times less (2 MB vs. 5 MB)
unrolled_count(!isempty, itr) count(!isempty, itr) Tuple 32 empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (77 ms vs. 100 ms) 2 times less (3 MB vs. 6 MB)
unrolled_count(!isempty, itr) count(!isempty, itr) Tuple 128 empty & nonempty singleton Tuples better (optimized out vs. 25 LLVM lines) 35 times less (40 ns vs. 1 μs) similar (78 ms vs. 86 ms) similar (3 MB vs. 5 MB)
unrolled_count(!isempty, itr) count(!isempty, itr) Tuple 2 nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (41 ms vs. 78 ms) 11 times less (356 kB vs. 4 MB)
unrolled_count(!isempty, itr) count(!isempty, itr) Tuple 8 nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (65 ms vs. 81 ms) 2 times less (2 MB vs. 5 MB)
unrolled_count(!isempty, itr) count(!isempty, itr) Tuple 32 nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (70 ms vs. 84 ms) 2 times less (3 MB vs. 6 MB)
unrolled_count(!isempty, itr) count(!isempty, itr) Tuple 128 nonempty singleton Tuples better (optimized out vs. 25 LLVM lines) 27 times less (49 ns vs. 1 μs) similar (76 ms vs. 84 ms) similar (3 MB vs. 5 MB)
unrolled_count(!isempty, itr) count(!isempty, itr) Tuple 2 nonempty non-singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (35 ms vs. 53 ms) 12 times less (359 kB vs. 4 MB)
unrolled_count(!isempty, itr) count(!isempty, itr) Tuple 8 nonempty non-singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (64 ms vs. 58 ms) 2 times less (2 MB vs. 5 MB)
unrolled_count(!isempty, itr) count(!isempty, itr) Tuple 32 nonempty non-singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (69 ms vs. 62 ms) 2 times less (3 MB vs. 7 MB)
unrolled_count(!isempty, itr) count(!isempty, itr) Tuple 128 nonempty non-singleton Tuples better (optimized out vs. 521 kB allocs) 943 times less (49 ns vs. 46 μs) similar (75 ms vs. 60 ms) similar (4 MB vs. 6 MB)
unrolled_maximum(length, itr) maximum(length, itr) Tuple 1 empty singleton Tuple similar (optimized out) similar (40 ns vs. 40 ns) 2 times less (31 ms vs. 76 ms) 21 times less (104 kB vs. 2 MB)
unrolled_maximum(length, itr) maximum(length, itr) Tuple 1 nonempty singleton Tuple similar (optimized out) similar (49 ns vs. 49 ns) 2 times less (34 ms vs. 76 ms) 16 times less (139 kB vs. 2 MB)
unrolled_maximum(length, itr) maximum(length, itr) Tuple 1 nonempty non-singleton Tuple similar (optimized out) similar (49 ns vs. 49 ns) similar (29 ms vs. 52 ms) 22 times less (112 kB vs. 2 MB)
unrolled_maximum(length, itr) maximum(length, itr) Tuple 2 identical nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) 2 times less (35 ms vs. 93 ms) 16 times less (142 kB vs. 2 MB)
unrolled_maximum(length, itr) maximum(length, itr) Tuple 8 identical nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (74 ms vs. 92 ms) similar (2 MB vs. 2 MB)
unrolled_maximum(length, itr) maximum(length, itr) Tuple 32 identical nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (67 ms vs. 85 ms) similar (2 MB vs. 3 MB)
unrolled_maximum(length, itr) maximum(length, itr) Tuple 128 identical nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (76 ms vs. 92 ms) similar (3 MB vs. 2 MB)
unrolled_maximum(length, itr) maximum(length, itr) Tuple 2 identical nonempty non-singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (29 ms vs. 54 ms) 21 times less (120 kB vs. 3 MB)
unrolled_maximum(length, itr) maximum(length, itr) Tuple 8 identical nonempty non-singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (57 ms vs. 54 ms) similar (2 MB vs. 3 MB)
unrolled_maximum(length, itr) maximum(length, itr) Tuple 32 identical nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (59 ms vs. 60 ms) similar (2 MB vs. 3 MB)
unrolled_maximum(length, itr) maximum(length, itr) Tuple 128 identical nonempty non-singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (75 ms vs. 54 ms) similar (3 MB vs. 3 MB)
unrolled_maximum(length, itr) maximum(length, itr) Tuple 2 empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) 2 times less (34 ms vs. 79 ms) 18 times less (142 kB vs. 3 MB)
unrolled_maximum(length, itr) maximum(length, itr) Tuple 8 empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (62 ms vs. 91 ms) similar (2 MB vs. 3 MB)
unrolled_maximum(length, itr) maximum(length, itr) Tuple 32 empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (69 ms vs. 119 ms) similar (2 MB vs. 4 MB)
unrolled_maximum(length, itr) maximum(length, itr) Tuple 128 empty & nonempty singleton Tuples better (optimized out vs. 26 LLVM lines) 29 times less (49 ns vs. 1 μs) similar (69 ms vs. 84 ms) similar (3 MB vs. 3 MB)
unrolled_maximum(length, itr) maximum(length, itr) Tuple 2 nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) 2 times less (31 ms vs. 75 ms) 18 times less (147 kB vs. 3 MB)
unrolled_maximum(length, itr) maximum(length, itr) Tuple 8 nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (57 ms vs. 84 ms) similar (2 MB vs. 3 MB)
unrolled_maximum(length, itr) maximum(length, itr) Tuple 32 nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (66 ms vs. 96 ms) similar (2 MB vs. 4 MB)
unrolled_maximum(length, itr) maximum(length, itr) Tuple 128 nonempty singleton Tuples better (optimized out vs. 26 LLVM lines) 27 times less (49 ns vs. 1 μs) similar (68 ms vs. 84 ms) similar (3 MB vs. 3 MB)
unrolled_maximum(length, itr) maximum(length, itr) Tuple 2 nonempty non-singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (28 ms vs. 48 ms) 20 times less (145 kB vs. 3 MB)
unrolled_maximum(length, itr) maximum(length, itr) Tuple 8 nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (59 ms vs. 51 ms) similar (2 MB vs. 4 MB)
unrolled_maximum(length, itr) maximum(length, itr) Tuple 32 nonempty non-singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (59 ms vs. 55 ms) similar (2 MB vs. 5 MB)
unrolled_maximum(length, itr) maximum(length, itr) Tuple 128 nonempty non-singleton Tuples better (optimized out vs. 521 kB allocs) 936 times less (49 ns vs. 46 μs) similar (71 ms vs. 57 ms) similar (3 MB vs. 4 MB)
unrolled_minimum(length, itr) minimum(length, itr) Tuple 1 empty singleton Tuple similar (optimized out) similar (40 ns vs. 40 ns) 2 times less (33 ms vs. 76 ms) 21 times less (104 kB vs. 2 MB)
unrolled_minimum(length, itr) minimum(length, itr) Tuple 1 nonempty singleton Tuple similar (optimized out) similar (40 ns vs. 40 ns) 2 times less (32 ms vs. 79 ms) 16 times less (139 kB vs. 2 MB)
unrolled_minimum(length, itr) minimum(length, itr) Tuple 1 nonempty non-singleton Tuple similar (optimized out) similar (49 ns vs. 49 ns) similar (31 ms vs. 50 ms) 23 times less (112 kB vs. 3 MB)
unrolled_minimum(length, itr) minimum(length, itr) Tuple 2 identical nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) 2 times less (36 ms vs. 81 ms) 16 times less (144 kB vs. 2 MB)
unrolled_minimum(length, itr) minimum(length, itr) Tuple 8 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (70 ms vs. 93 ms) similar (2 MB vs. 2 MB)
unrolled_minimum(length, itr) minimum(length, itr) Tuple 32 identical nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (72 ms vs. 86 ms) similar (2 MB vs. 3 MB)
unrolled_minimum(length, itr) minimum(length, itr) Tuple 128 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (82 ms vs. 90 ms) similar (3 MB vs. 2 MB)
unrolled_minimum(length, itr) minimum(length, itr) Tuple 2 identical nonempty non-singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (33 ms vs. 52 ms) 22 times less (121 kB vs. 3 MB)
unrolled_minimum(length, itr) minimum(length, itr) Tuple 8 identical nonempty non-singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (65 ms vs. 53 ms) similar (2 MB vs. 3 MB)
unrolled_minimum(length, itr) minimum(length, itr) Tuple 32 identical nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (62 ms vs. 53 ms) similar (2 MB vs. 4 MB)
unrolled_minimum(length, itr) minimum(length, itr) Tuple 128 identical nonempty non-singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (73 ms vs. 55 ms) similar (3 MB vs. 3 MB)
unrolled_minimum(length, itr) minimum(length, itr) Tuple 2 empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) 2 times less (36 ms vs. 84 ms) 18 times less (144 kB vs. 3 MB)
unrolled_minimum(length, itr) minimum(length, itr) Tuple 8 empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (65 ms vs. 98 ms) similar (2 MB vs. 3 MB)
unrolled_minimum(length, itr) minimum(length, itr) Tuple 32 empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (76 ms vs. 116 ms) similar (2 MB vs. 4 MB)
unrolled_minimum(length, itr) minimum(length, itr) Tuple 128 empty & nonempty singleton Tuples better (optimized out vs. 26 LLVM lines) 34 times less (40 ns vs. 1 μs) similar (75 ms vs. 89 ms) similar (3 MB vs. 3 MB)
unrolled_minimum(length, itr) minimum(length, itr) Tuple 2 nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) 2 times less (34 ms vs. 75 ms) 18 times less (148 kB vs. 3 MB)
unrolled_minimum(length, itr) minimum(length, itr) Tuple 8 nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (60 ms vs. 88 ms) similar (2 MB vs. 3 MB)
unrolled_minimum(length, itr) minimum(length, itr) Tuple 32 nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (66 ms vs. 98 ms) similar (2 MB vs. 4 MB)
unrolled_minimum(length, itr) minimum(length, itr) Tuple 128 nonempty singleton Tuples better (optimized out vs. 26 LLVM lines) 28 times less (49 ns vs. 1 μs) similar (71 ms vs. 84 ms) similar (3 MB vs. 3 MB)
unrolled_minimum(length, itr) minimum(length, itr) Tuple 2 nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (31 ms vs. 48 ms) 20 times less (146 kB vs. 3 MB)
unrolled_minimum(length, itr) minimum(length, itr) Tuple 8 nonempty non-singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (58 ms vs. 51 ms) similar (2 MB vs. 4 MB)
unrolled_minimum(length, itr) minimum(length, itr) Tuple 32 nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (66 ms vs. 56 ms) 2 times less (2 MB vs. 5 MB)
unrolled_minimum(length, itr) minimum(length, itr) Tuple 128 nonempty non-singleton Tuples better (optimized out vs. 521 kB allocs) 912 times less (49 ns vs. 45 μs) similar (69 ms vs. 59 ms) similar (3 MB vs. 4 MB)
unrolled_extrema(length, itr) extrema(length, itr) Tuple 1 empty singleton Tuple similar (7 LLVM lines w/ Const) similar (49 ns vs. 40 ns) 2 times less (38 ms vs. 83 ms) 24 times less (147 kB vs. 3 MB)
unrolled_extrema(length, itr) extrema(length, itr) Tuple 1 nonempty singleton Tuple similar (7 LLVM lines w/ Const) similar (49 ns vs. 40 ns) 2 times less (39 ms vs. 90 ms) 19 times less (181 kB vs. 3 MB)
unrolled_extrema(length, itr) extrema(length, itr) Tuple 1 nonempty non-singleton Tuple similar (7 LLVM lines w/ Const) similar (49 ns vs. 40 ns) similar (32 ms vs. 61 ms) 24 times less (154 kB vs. 4 MB)
unrolled_extrema(length, itr) extrema(length, itr) Tuple 2 identical nonempty singleton Tuples similar (7 LLVM lines w/ Const) similar (49 ns vs. 49 ns) 2 times less (45 ms vs. 100 ms) 12 times less (302 kB vs. 4 MB)
unrolled_extrema(length, itr) extrema(length, itr) Tuple 8 identical nonempty singleton Tuples similar (7 LLVM lines w/ Const) similar (49 ns vs. 40 ns) similar (76 ms vs. 109 ms) similar (2 MB vs. 4 MB)
unrolled_extrema(length, itr) extrema(length, itr) Tuple 32 identical nonempty singleton Tuples similar (7 LLVM lines w/ Const) similar (49 ns vs. 49 ns) similar (75 ms vs. 103 ms) similar (2 MB vs. 4 MB)
unrolled_extrema(length, itr) extrema(length, itr) Tuple 128 identical nonempty singleton Tuples similar (7 LLVM lines w/ Const) similar (40 ns vs. 60 ns) similar (86 ms vs. 110 ms) similar (3 MB vs. 4 MB)
unrolled_extrema(length, itr) extrema(length, itr) Tuple 2 identical nonempty non-singleton Tuples similar (7 LLVM lines w/ Const) similar (40 ns vs. 49 ns) similar (38 ms vs. 61 ms) 14 times less (279 kB vs. 4 MB)
unrolled_extrema(length, itr) extrema(length, itr) Tuple 8 identical nonempty non-singleton Tuples similar (7 LLVM lines w/ Const) similar (49 ns vs. 49 ns) similar (69 ms vs. 63 ms) similar (2 MB vs. 4 MB)
unrolled_extrema(length, itr) extrema(length, itr) Tuple 32 identical nonempty non-singleton Tuples similar (7 LLVM lines w/ Const) similar (49 ns vs. 49 ns) similar (67 ms vs. 63 ms) 2 times less (2 MB vs. 5 MB)
unrolled_extrema(length, itr) extrema(length, itr) Tuple 128 identical nonempty non-singleton Tuples similar (7 LLVM lines w/ Const) similar (49 ns vs. 50 ns) similar (74 ms vs. 66 ms) similar (4 MB vs. 4 MB)
unrolled_extrema(length, itr) extrema(length, itr) Tuple 2 empty & nonempty singleton Tuples similar (7 LLVM lines w/ Const) similar (49 ns vs. 49 ns) 2 times less (44 ms vs. 97 ms) 13 times less (310 kB vs. 4 MB)
unrolled_extrema(length, itr) extrema(length, itr) Tuple 8 empty & nonempty singleton Tuples similar (7 LLVM lines w/ Const) similar (49 ns vs. 49 ns) similar (74 ms vs. 113 ms) 2 times less (2 MB vs. 5 MB)
unrolled_extrema(length, itr) extrema(length, itr) Tuple 32 empty & nonempty singleton Tuples similar (7 LLVM lines w/ Const) similar (49 ns vs. 49 ns) similar (77 ms vs. 138 ms) 2 times less (2 MB vs. 5 MB)
unrolled_extrema(length, itr) extrema(length, itr) Tuple 128 empty & nonempty singleton Tuples better (7 LLVM lines w/ Const vs. 31 LLVM lines) 29 times less (49 ns vs. 1 μs) similar (79 ms vs. 99 ms) similar (3 MB vs. 5 MB)
unrolled_extrema(length, itr) extrema(length, itr) Tuple 2 nonempty singleton Tuples similar (7 LLVM lines w/ Const) similar (49 ns vs. 49 ns) 2 times less (39 ms vs. 87 ms) 13 times less (314 kB vs. 4 MB)
unrolled_extrema(length, itr) extrema(length, itr) Tuple 8 nonempty singleton Tuples similar (7 LLVM lines w/ Const) similar (49 ns vs. 40 ns) similar (68 ms vs. 98 ms) 2 times less (2 MB vs. 5 MB)
unrolled_extrema(length, itr) extrema(length, itr) Tuple 32 nonempty singleton Tuples similar (7 LLVM lines w/ Const) similar (40 ns vs. 40 ns) similar (67 ms vs. 113 ms) 2 times less (2 MB vs. 5 MB)
unrolled_extrema(length, itr) extrema(length, itr) Tuple 128 nonempty singleton Tuples better (7 LLVM lines w/ Const vs. 31 LLVM lines) 27 times less (49 ns vs. 1 μs) similar (76 ms vs. 96 ms) similar (3 MB vs. 5 MB)
unrolled_extrema(length, itr) extrema(length, itr) Tuple 2 nonempty non-singleton Tuples similar (7 LLVM lines w/ Const) similar (49 ns vs. 49 ns) similar (35 ms vs. 58 ms) 14 times less (312 kB vs. 4 MB)
unrolled_extrema(length, itr) extrema(length, itr) Tuple 8 nonempty non-singleton Tuples similar (7 LLVM lines w/ Const) similar (49 ns vs. 49 ns) similar (63 ms vs. 61 ms) 2 times less (2 MB vs. 5 MB)
unrolled_extrema(length, itr) extrema(length, itr) Tuple 32 nonempty non-singleton Tuples similar (7 LLVM lines w/ Const) similar (49 ns vs. 40 ns) similar (68 ms vs. 69 ms) 2 times less (2 MB vs. 6 MB)
unrolled_extrema(length, itr) extrema(length, itr) Tuple 128 nonempty non-singleton Tuples better (7 LLVM lines w/ Const vs. 521 kB allocs) 913 times less (49 ns vs. 45 μs) similar (75 ms vs. 71 ms) similar (4 MB vs. 6 MB)
unrolled_findmax(length, itr) findmax(length, itr) Tuple 1 empty singleton Tuple similar (7 LLVM lines w/ Const) similar (40 ns vs. 40 ns) similar (40 ms vs. 66 ms) 19 times less (255 kB vs. 5 MB)
unrolled_findmax(length, itr) findmax(length, itr) Tuple 1 nonempty singleton Tuple similar (7 LLVM lines w/ Const) similar (49 ns vs. 49 ns) similar (42 ms vs. 76 ms) 13 times less (365 kB vs. 5 MB)
unrolled_findmax(length, itr) findmax(length, itr) Tuple 1 nonempty non-singleton Tuple similar (7 LLVM lines w/ Const) similar (49 ns vs. 40 ns) 2 times less (33 ms vs. 72 ms) 12 times less (400 kB vs. 5 MB)
unrolled_findmax(length, itr) findmax(length, itr) Tuple 2 identical nonempty singleton Tuples similar (7 LLVM lines w/ Const) similar (40 ns vs. 50 ns) similar (52 ms vs. 74 ms) 10 times less (488 kB vs. 5 MB)
unrolled_findmax(length, itr) findmax(length, itr) Tuple 8 identical nonempty singleton Tuples similar (7 LLVM lines w/ Const) similar (40 ns vs. 60 ns) similar (85 ms vs. 80 ms) 2 times less (2 MB vs. 5 MB)
unrolled_findmax(length, itr) findmax(length, itr) Tuple 32 identical nonempty singleton Tuples similar (7 LLVM lines w/ Const) similar (49 ns vs. 60 ns) similar (83 ms vs. 83 ms) similar (2 MB vs. 5 MB)
unrolled_findmax(length, itr) findmax(length, itr) Tuple 128 identical nonempty singleton Tuples similar (7 LLVM lines w/ Const) similar (49 ns vs. 60 ns) similar (90 ms vs. 82 ms) similar (3 MB vs. 5 MB)
unrolled_findmax(length, itr) findmax(length, itr) Tuple 2 identical nonempty non-singleton Tuples similar (7 LLVM lines w/ Const) similar (40 ns vs. 50 ns) similar (35 ms vs. 68 ms) 9 times less (534 kB vs. 5 MB)
unrolled_findmax(length, itr) findmax(length, itr) Tuple 8 identical nonempty non-singleton Tuples similar (7 LLVM lines w/ Const) similar (49 ns vs. 49 ns) similar (66 ms vs. 71 ms) similar (2 MB vs. 5 MB)
unrolled_findmax(length, itr) findmax(length, itr) Tuple 32 identical nonempty non-singleton Tuples similar (7 LLVM lines w/ Const) similar (40 ns vs. 49 ns) similar (67 ms vs. 72 ms) similar (3 MB vs. 5 MB)
unrolled_findmax(length, itr) findmax(length, itr) Tuple 128 identical nonempty non-singleton Tuples similar (7 LLVM lines w/ Const) similar (40 ns vs. 49 ns) similar (74 ms vs. 75 ms) similar (5 MB vs. 5 MB)
unrolled_findmax(length, itr) findmax(length, itr) Tuple 2 empty & nonempty singleton Tuples better (7 LLVM lines w/ Const vs. 26 LLVM lines) similar (49 ns vs. 69 ns) similar (50 ms vs. 78 ms) 9 times less (550 kB vs. 5 MB)
unrolled_findmax(length, itr) findmax(length, itr) Tuple 8 empty & nonempty singleton Tuples better (7 LLVM lines w/ Const vs. 86 LLVM lines) 3 times less (40 ns vs. 130 ns) similar (93 ms vs. 82 ms) 2 times less (3 MB vs. 6 MB)
unrolled_findmax(length, itr) findmax(length, itr) Tuple 32 empty & nonempty singleton Tuples better (7 LLVM lines w/ Const vs. 32 LLVM lines) 9 times less (40 ns vs. 390 ns) similar (121 ms vs. 88 ms) similar (3 MB vs. 6 MB)
unrolled_findmax(length, itr) findmax(length, itr) Tuple 128 empty & nonempty singleton Tuples better (7 LLVM lines w/ Const vs. 32 LLVM lines) 28 times less (49 ns vs. 1 μs) similar (112 ms vs. 74 ms) similar (4 MB vs. 6 MB)
unrolled_findmax(length, itr) findmax(length, itr) Tuple 2 nonempty singleton Tuples better (7 LLVM lines w/ Const vs. 26 LLVM lines) similar (49 ns vs. 69 ns) similar (47 ms vs. 70 ms) 8 times less (631 kB vs. 5 MB)
unrolled_findmax(length, itr) findmax(length, itr) Tuple 8 nonempty singleton Tuples better (7 LLVM lines w/ Const vs. 146 LLVM lines) 100 times less (40 ns vs. 4 μs) similar (83 ms vs. 71 ms) 2 times less (3 MB vs. 6 MB)
unrolled_findmax(length, itr) findmax(length, itr) Tuple 32 nonempty singleton Tuples better (7 LLVM lines w/ Const vs. 55 LLVM lines) 581 times less (49 ns vs. 28 μs) similar (95 ms vs. 75 ms) similar (3 MB vs. 6 MB)
unrolled_findmax(length, itr) findmax(length, itr) Tuple 128 nonempty singleton Tuples better (7 LLVM lines w/ Const vs. 55 LLVM lines) 1973 times less (49 ns vs. 97 μs) similar (103 ms vs. 73 ms) similar (4 MB vs. 6 MB)
unrolled_findmax(length, itr) findmax(length, itr) Tuple 2 nonempty non-singleton Tuples better (7 LLVM lines w/ Const vs. 64 B allocs) similar (49 ns vs. 90 ns) 2 times less (33 ms vs. 69 ms) 7 times less (696 kB vs. 5 MB)
unrolled_findmax(length, itr) findmax(length, itr) Tuple 8 nonempty non-singleton Tuples better (7 LLVM lines w/ Const vs. 2 kB allocs) 22 times less (49 ns vs. 1 μs) similar (61 ms vs. 72 ms) 2 times less (3 MB vs. 6 MB)
unrolled_findmax(length, itr) findmax(length, itr) Tuple 32 nonempty non-singleton Tuples better (7 LLVM lines w/ Const vs. 37 kB allocs) 394 times less (49 ns vs. 19 μs) similar (68 ms vs. 73 ms) similar (4 MB vs. 6 MB)
unrolled_findmax(length, itr) findmax(length, itr) Tuple 128 nonempty non-singleton Tuples better (7 LLVM lines w/ Const vs. 521 kB allocs) 1638 times less (40 ns vs. 66 μs) similar (77 ms vs. 72 ms) similar (5 MB vs. 6 MB)
unrolled_findmin(length, itr) findmin(length, itr) Tuple 1 empty singleton Tuple similar (7 LLVM lines w/ Const) similar (40 ns vs. 49 ns) similar (39 ms vs. 64 ms) 18 times less (255 kB vs. 5 MB)
unrolled_findmin(length, itr) findmin(length, itr) Tuple 1 nonempty singleton Tuple similar (7 LLVM lines w/ Const) similar (40 ns vs. 40 ns) similar (40 ms vs. 67 ms) 12 times less (365 kB vs. 5 MB)
unrolled_findmin(length, itr) findmin(length, itr) Tuple 1 nonempty non-singleton Tuple similar (7 LLVM lines w/ Const) similar (49 ns vs. 49 ns) 2 times less (31 ms vs. 69 ms) 11 times less (400 kB vs. 5 MB)
unrolled_findmin(length, itr) findmin(length, itr) Tuple 2 identical nonempty singleton Tuples similar (7 LLVM lines w/ Const) similar (40 ns vs. 49 ns) similar (52 ms vs. 68 ms) 8 times less (531 kB vs. 5 MB)
unrolled_findmin(length, itr) findmin(length, itr) Tuple 8 identical nonempty singleton Tuples similar (7 LLVM lines w/ Const) similar (40 ns vs. 49 ns) similar (80 ms vs. 74 ms) similar (2 MB vs. 5 MB)
unrolled_findmin(length, itr) findmin(length, itr) Tuple 32 identical nonempty singleton Tuples similar (7 LLVM lines w/ Const) similar (49 ns vs. 49 ns) similar (82 ms vs. 78 ms) similar (3 MB vs. 5 MB)
unrolled_findmin(length, itr) findmin(length, itr) Tuple 128 identical nonempty singleton Tuples similar (7 LLVM lines w/ Const) similar (49 ns vs. 49 ns) similar (93 ms vs. 95 ms) similar (3 MB vs. 5 MB)
unrolled_findmin(length, itr) findmin(length, itr) Tuple 2 identical nonempty non-singleton Tuples similar (7 LLVM lines w/ Const) similar (49 ns vs. 50 ns) similar (34 ms vs. 64 ms) 8 times less (578 kB vs. 5 MB)
unrolled_findmin(length, itr) findmin(length, itr) Tuple 8 identical nonempty non-singleton Tuples similar (7 LLVM lines w/ Const) similar (49 ns vs. 49 ns) similar (62 ms vs. 65 ms) similar (2 MB vs. 5 MB)
unrolled_findmin(length, itr) findmin(length, itr) Tuple 32 identical nonempty non-singleton Tuples similar (7 LLVM lines w/ Const) similar (40 ns vs. 60 ns) similar (63 ms vs. 68 ms) similar (3 MB vs. 5 MB)
unrolled_findmin(length, itr) findmin(length, itr) Tuple 128 identical nonempty non-singleton Tuples similar (7 LLVM lines w/ Const) similar (49 ns vs. 60 ns) similar (79 ms vs. 68 ms) similar (5 MB vs. 5 MB)
unrolled_findmin(length, itr) findmin(length, itr) Tuple 2 empty & nonempty singleton Tuples better (7 LLVM lines w/ Const vs. 26 LLVM lines) similar (49 ns vs. 80 ns) similar (51 ms vs. 74 ms) 8 times less (594 kB vs. 5 MB)
unrolled_findmin(length, itr) findmin(length, itr) Tuple 8 empty & nonempty singleton Tuples better (7 LLVM lines w/ Const vs. 86 LLVM lines) 2 times less (49 ns vs. 130 ns) similar (93 ms vs. 75 ms) 2 times less (3 MB vs. 5 MB)
unrolled_findmin(length, itr) findmin(length, itr) Tuple 32 empty & nonempty singleton Tuples better (7 LLVM lines w/ Const vs. 32 LLVM lines) 7 times less (49 ns vs. 390 ns) similar (114 ms vs. 78 ms) similar (3 MB vs. 5 MB)
unrolled_findmin(length, itr) findmin(length, itr) Tuple 128 empty & nonempty singleton Tuples better (7 LLVM lines w/ Const vs. 32 LLVM lines) 29 times less (49 ns vs. 1 μs) similar (114 ms vs. 69 ms) similar (4 MB vs. 5 MB)
unrolled_findmin(length, itr) findmin(length, itr) Tuple 2 nonempty singleton Tuples better (7 LLVM lines w/ Const vs. 26 LLVM lines) similar (49 ns vs. 69 ns) similar (47 ms vs. 67 ms) 7 times less (674 kB vs. 5 MB)
unrolled_findmin(length, itr) findmin(length, itr) Tuple 8 nonempty singleton Tuples better (7 LLVM lines w/ Const vs. 146 LLVM lines) 82 times less (49 ns vs. 4 μs) similar (80 ms vs. 68 ms) similar (3 MB vs. 5 MB)
unrolled_findmin(length, itr) findmin(length, itr) Tuple 32 nonempty singleton Tuples better (7 LLVM lines w/ Const vs. 55 LLVM lines) 581 times less (49 ns vs. 28 μs) similar (96 ms vs. 69 ms) similar (3 MB vs. 5 MB)
unrolled_findmin(length, itr) findmin(length, itr) Tuple 128 nonempty singleton Tuples better (7 LLVM lines w/ Const vs. 55 LLVM lines) 1991 times less (49 ns vs. 98 μs) similar (103 ms vs. 69 ms) similar (4 MB vs. 5 MB)
unrolled_findmin(length, itr) findmin(length, itr) Tuple 2 nonempty non-singleton Tuples better (7 LLVM lines w/ Const vs. 64 B allocs) similar (49 ns vs. 90 ns) similar (33 ms vs. 65 ms) 6 times less (740 kB vs. 5 MB)
unrolled_findmin(length, itr) findmin(length, itr) Tuple 8 nonempty non-singleton Tuples better (7 LLVM lines w/ Const vs. 2 kB allocs) 21 times less (49 ns vs. 1 μs) similar (63 ms vs. 68 ms) similar (3 MB vs. 5 MB)
unrolled_findmin(length, itr) findmin(length, itr) Tuple 32 nonempty non-singleton Tuples better (7 LLVM lines w/ Const vs. 37 kB allocs) 487 times less (40 ns vs. 19 μs) similar (69 ms vs. 68 ms) similar (4 MB vs. 5 MB)
unrolled_findmin(length, itr) findmin(length, itr) Tuple 128 nonempty non-singleton Tuples better (7 LLVM lines w/ Const vs. 521 kB allocs) 1248 times less (49 ns vs. 61 μs) similar (78 ms vs. 71 ms) similar (5 MB vs. 6 MB)
unrolled_argmax(length, itr) argmax(length, itr) Tuple 1 empty singleton Tuple similar (optimized out) similar (40 ns vs. 49 ns) 2 times less (33 ms vs. 71 ms) 8 times less (142 kB vs. 1 MB)
unrolled_argmax(length, itr) argmax(length, itr) Tuple 1 nonempty singleton Tuple similar (optimized out) similar (49 ns vs. 49 ns) 2 times less (32 ms vs. 74 ms) 6 times less (177 kB vs. 1 MB)
unrolled_argmax(length, itr) argmax(length, itr) Tuple 1 nonempty non-singleton Tuple similar (8 LLVM lines) similar (49 ns vs. 60 ns) similar (30 ms vs. 45 ms) 5 times less (341 kB vs. 2 MB)
unrolled_argmax(length, itr) argmax(length, itr) Tuple 2 identical nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) 2 times less (37 ms vs. 76 ms) 4 times less (364 kB vs. 1 MB)
unrolled_argmax(length, itr) argmax(length, itr) Tuple 8 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (66 ms vs. 77 ms) similar (2 MB vs. 2 MB)
unrolled_argmax(length, itr) argmax(length, itr) Tuple 32 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (74 ms vs. 80 ms) similar (2 MB vs. 2 MB)
unrolled_argmax(length, itr) argmax(length, itr) Tuple 128 identical nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (82 ms vs. 96 ms) similar (3 MB vs. 2 MB)
unrolled_argmax(length, itr) argmax(length, itr) Tuple 2 identical nonempty non-singleton Tuples similar (8 LLVM lines) similar (49 ns vs. 60 ns) similar (31 ms vs. 45 ms) 3 times less (590 kB vs. 2 MB)
unrolled_argmax(length, itr) argmax(length, itr) Tuple 8 identical nonempty non-singleton Tuples similar (8 LLVM lines) similar (50 ns vs. 49 ns) similar (59 ms vs. 47 ms) similar (3 MB vs. 3 MB)
unrolled_argmax(length, itr) argmax(length, itr) Tuple 32 identical nonempty non-singleton Tuples similar (8 LLVM lines) similar (49 ns vs. 50 ns) similar (67 ms vs. 50 ms) similar (4 MB vs. 5 MB)
unrolled_argmax(length, itr) argmax(length, itr) Tuple 128 identical nonempty non-singleton Tuples similar (8 LLVM lines) similar (49 ns vs. 60 ns) similar (82 ms vs. 49 ms) 3 times more (10 MB vs. 2 MB)
unrolled_argmax(length, itr) argmax(length, itr) Tuple 2 empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (38 ms vs. 74 ms) 4 times less (371 kB vs. 1 MB)
unrolled_argmax(length, itr) argmax(length, itr) Tuple 8 empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (92 ms vs. 107 ms) similar (3 MB vs. 3 MB)
unrolled_argmax(length, itr) argmax(length, itr) Tuple 32 empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (148 ms vs. 171 ms) similar (4 MB vs. 5 MB)
unrolled_argmax(length, itr) argmax(length, itr) Tuple 128 empty & nonempty singleton Tuples better (optimized out vs. 44 LLVM lines) 35 times less (40 ns vs. 1 μs) 2 times more (166 ms vs. 82 ms) similar (6 MB vs. 3 MB)
unrolled_argmax(length, itr) argmax(length, itr) Tuple 2 nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (37 ms vs. 72 ms) 3 times less (451 kB vs. 2 MB)
unrolled_argmax(length, itr) argmax(length, itr) Tuple 8 nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (85 ms vs. 97 ms) similar (3 MB vs. 3 MB)
unrolled_argmax(length, itr) argmax(length, itr) Tuple 32 nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (117 ms vs. 135 ms) similar (4 MB vs. 5 MB)
unrolled_argmax(length, itr) argmax(length, itr) Tuple 128 nonempty singleton Tuples better (optimized out vs. 43 LLVM lines) 28 times less (49 ns vs. 1 μs) similar (148 ms vs. 82 ms) similar (5 MB vs. 3 MB)
unrolled_argmax(length, itr) argmax(length, itr) Tuple 2 nonempty non-singleton Tuples similar (8 LLVM lines) similar (49 ns vs. 49 ns) similar (30 ms vs. 42 ms) 3 times less (713 kB vs. 2 MB)
unrolled_argmax(length, itr) argmax(length, itr) Tuple 8 nonempty non-singleton Tuples similar (8 LLVM lines) similar (60 ns vs. 60 ns) similar (60 ms vs. 52 ms) similar (4 MB vs. 6 MB)
unrolled_argmax(length, itr) argmax(length, itr) Tuple 32 nonempty non-singleton Tuples similar (8 LLVM lines) similar (50 ns vs. 60 ns) similar (70 ms vs. 68 ms) 2 times less (6 MB vs. 12 MB)
unrolled_argmax(length, itr) argmax(length, itr) Tuple 128 nonempty non-singleton Tuples better (8 LLVM lines vs. 521 kB allocs) 841 times less (50 ns vs. 42 μs) similar (88 ms vs. 53 ms) 3 times more (12 MB vs. 4 MB)
unrolled_argmin(length, itr) argmin(length, itr) Tuple 1 empty singleton Tuple similar (optimized out) similar (40 ns vs. 40 ns) 2 times less (31 ms vs. 63 ms) 8 times less (142 kB vs. 1 MB)
unrolled_argmin(length, itr) argmin(length, itr) Tuple 1 nonempty singleton Tuple similar (optimized out) similar (49 ns vs. 40 ns) 2 times less (32 ms vs. 65 ms) 6 times less (177 kB vs. 1 MB)
unrolled_argmin(length, itr) argmin(length, itr) Tuple 1 nonempty non-singleton Tuple similar (8 LLVM lines) similar (60 ns vs. 49 ns) similar (32 ms vs. 41 ms) 5 times less (341 kB vs. 2 MB)
unrolled_argmin(length, itr) argmin(length, itr) Tuple 2 identical nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (38 ms vs. 69 ms) 3 times less (408 kB vs. 1 MB)
unrolled_argmin(length, itr) argmin(length, itr) Tuple 8 identical nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (70 ms vs. 76 ms) similar (2 MB vs. 1 MB)
unrolled_argmin(length, itr) argmin(length, itr) Tuple 32 identical nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (75 ms vs. 81 ms) similar (2 MB vs. 2 MB)
unrolled_argmin(length, itr) argmin(length, itr) Tuple 128 identical nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (83 ms vs. 88 ms) similar (3 MB vs. 2 MB)
unrolled_argmin(length, itr) argmin(length, itr) Tuple 2 identical nonempty non-singleton Tuples similar (8 LLVM lines) similar (60 ns vs. 60 ns) similar (33 ms vs. 41 ms) 3 times less (634 kB vs. 2 MB)
unrolled_argmin(length, itr) argmin(length, itr) Tuple 8 identical nonempty non-singleton Tuples similar (8 LLVM lines) similar (49 ns vs. 49 ns) similar (60 ms vs. 43 ms) similar (3 MB vs. 3 MB)
unrolled_argmin(length, itr) argmin(length, itr) Tuple 32 identical nonempty non-singleton Tuples similar (8 LLVM lines) similar (60 ns vs. 49 ns) similar (64 ms vs. 45 ms) similar (4 MB vs. 5 MB)
unrolled_argmin(length, itr) argmin(length, itr) Tuple 128 identical nonempty non-singleton Tuples similar (8 LLVM lines) similar (60 ns vs. 49 ns) similar (82 ms vs. 43 ms) 4 times more (10 MB vs. 2 MB)
unrolled_argmin(length, itr) argmin(length, itr) Tuple 2 empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (38 ms vs. 72 ms) 3 times less (415 kB vs. 1 MB)
unrolled_argmin(length, itr) argmin(length, itr) Tuple 8 empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (80 ms vs. 90 ms) similar (3 MB vs. 2 MB)
unrolled_argmin(length, itr) argmin(length, itr) Tuple 32 empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (117 ms vs. 127 ms) similar (4 MB vs. 3 MB)
unrolled_argmin(length, itr) argmin(length, itr) Tuple 128 empty & nonempty singleton Tuples better (optimized out vs. 44 LLVM lines) 29 times less (49 ns vs. 1 μs) similar (109 ms vs. 79 ms) similar (4 MB vs. 3 MB)
unrolled_argmin(length, itr) argmin(length, itr) Tuple 2 nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (37 ms vs. 68 ms) 3 times less (495 kB vs. 2 MB)
unrolled_argmin(length, itr) argmin(length, itr) Tuple 8 nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (73 ms vs. 79 ms) similar (3 MB vs. 2 MB)
unrolled_argmin(length, itr) argmin(length, itr) Tuple 32 nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (94 ms vs. 100 ms) similar (4 MB vs. 3 MB)
unrolled_argmin(length, itr) argmin(length, itr) Tuple 128 nonempty singleton Tuples better (optimized out vs. 43 LLVM lines) 28 times less (49 ns vs. 1 μs) similar (102 ms vs. 77 ms) similar (4 MB vs. 3 MB)
unrolled_argmin(length, itr) argmin(length, itr) Tuple 2 nonempty non-singleton Tuples similar (8 LLVM lines) similar (49 ns vs. 49 ns) similar (30 ms vs. 39 ms) 3 times less (761 kB vs. 2 MB)
unrolled_argmin(length, itr) argmin(length, itr) Tuple 8 nonempty non-singleton Tuples similar (8 LLVM lines) similar (49 ns vs. 60 ns) similar (62 ms vs. 43 ms) similar (3 MB vs. 3 MB)
unrolled_argmin(length, itr) argmin(length, itr) Tuple 32 nonempty non-singleton Tuples similar (8 LLVM lines) similar (49 ns vs. 49 ns) similar (69 ms vs. 52 ms) similar (5 MB vs. 7 MB)
unrolled_argmin(length, itr) argmin(length, itr) Tuple 128 nonempty non-singleton Tuples better (8 LLVM lines vs. 521 kB allocs) 755 times less (60 ns vs. 45 μs) similar (87 ms vs. 47 ms) 2 times more (11 MB vs. 4 MB)
unrolled_argmax(unrolled_map(length, itr)) argmax(Iterators.map(length, itr)) Tuple 1 empty singleton Tuple similar (optimized out) similar (40 ns vs. 40 ns) 4 times less (31 ms vs. 152 ms) 37 times less (613 kB vs. 23 MB)
unrolled_argmax(unrolled_map(length, itr)) argmax(Iterators.map(length, itr)) Tuple 1 nonempty singleton Tuple similar (optimized out) similar (49 ns vs. 40 ns) 4 times less (32 ms vs. 151 ms) 36 times less (647 kB vs. 23 MB)
unrolled_argmax(unrolled_map(length, itr)) argmax(Iterators.map(length, itr)) Tuple 1 nonempty non-singleton Tuple similar (optimized out) similar (49 ns vs. 49 ns) 4 times less (27 ms vs. 115 ms) 38 times less (620 kB vs. 23 MB)
unrolled_argmax(unrolled_map(length, itr)) argmax(Iterators.map(length, itr)) Tuple 2 identical nonempty singleton Tuples better (optimized out vs. 6 LLVM lines) similar (49 ns vs. 49 ns) 4 times less (37 ms vs. 176 ms) 26 times less (935 kB vs. 25 MB)
unrolled_argmax(unrolled_map(length, itr)) argmax(Iterators.map(length, itr)) Tuple 8 identical nonempty singleton Tuples better (optimized out vs. 6 LLVM lines) similar (49 ns vs. 49 ns) similar (85 ms vs. 169 ms) 6 times less (4 MB vs. 25 MB)
unrolled_argmax(unrolled_map(length, itr)) argmax(Iterators.map(length, itr)) Tuple 32 identical nonempty singleton Tuples better (optimized out vs. 6 LLVM lines) similar (40 ns vs. 40 ns) similar (106 ms vs. 181 ms) 3 times less (7 MB vs. 25 MB)
unrolled_argmax(unrolled_map(length, itr)) argmax(Iterators.map(length, itr)) Tuple 128 identical nonempty singleton Tuples better (optimized out vs. 6 LLVM lines) similar (49 ns vs. 49 ns) similar (192 ms vs. 184 ms) similar (19 MB vs. 25 MB)
unrolled_argmax(unrolled_map(length, itr)) argmax(Iterators.map(length, itr)) Tuple 2 identical nonempty non-singleton Tuples better (optimized out vs. 6 LLVM lines) similar (49 ns vs. 49 ns) 4 times less (31 ms vs. 130 ms) 27 times less (913 kB vs. 25 MB)
unrolled_argmax(unrolled_map(length, itr)) argmax(Iterators.map(length, itr)) Tuple 8 identical nonempty non-singleton Tuples better (optimized out vs. 6 LLVM lines) similar (49 ns vs. 49 ns) similar (84 ms vs. 135 ms) 7 times less (4 MB vs. 25 MB)
unrolled_argmax(unrolled_map(length, itr)) argmax(Iterators.map(length, itr)) Tuple 32 identical nonempty non-singleton Tuples better (optimized out vs. 6 LLVM lines) similar (49 ns vs. 40 ns) similar (98 ms vs. 135 ms) 3 times less (7 MB vs. 25 MB)
unrolled_argmax(unrolled_map(length, itr)) argmax(Iterators.map(length, itr)) Tuple 128 identical nonempty non-singleton Tuples better (optimized out vs. 6 LLVM lines) similar (40 ns vs. 49 ns) similar (172 ms vs. 129 ms) similar (20 MB vs. 25 MB)
unrolled_argmax(unrolled_map(length, itr)) argmax(Iterators.map(length, itr)) Tuple 2 empty & nonempty singleton Tuples better (optimized out vs. 15 LLVM lines) similar (49 ns vs. 60 ns) 4 times less (37 ms vs. 170 ms) 27 times less (935 kB vs. 25 MB)
unrolled_argmax(unrolled_map(length, itr)) argmax(Iterators.map(length, itr)) Tuple 8 empty & nonempty singleton Tuples better (optimized out vs. 82 LLVM lines) 3 times less (40 ns vs. 120 ns) 2 times less (88 ms vs. 177 ms) 6 times less (4 MB vs. 25 MB)
unrolled_argmax(unrolled_map(length, itr)) argmax(Iterators.map(length, itr)) Tuple 32 empty & nonempty singleton Tuples better (optimized out vs. 29 LLVM lines) 7 times less (49 ns vs. 390 ns) similar (109 ms vs. 186 ms) 3 times less (7 MB vs. 25 MB)
unrolled_argmax(unrolled_map(length, itr)) argmax(Iterators.map(length, itr)) Tuple 128 empty & nonempty singleton Tuples better (optimized out vs. 29 LLVM lines) 29 times less (49 ns vs. 1 μs) similar (177 ms vs. 164 ms) similar (19 MB vs. 25 MB)
unrolled_argmax(unrolled_map(length, itr)) argmax(Iterators.map(length, itr)) Tuple 2 nonempty singleton Tuples better (optimized out vs. 15 LLVM lines) similar (49 ns vs. 60 ns) 4 times less (35 ms vs. 159 ms) 27 times less (940 kB vs. 25 MB)
unrolled_argmax(unrolled_map(length, itr)) argmax(Iterators.map(length, itr)) Tuple 8 nonempty singleton Tuples better (optimized out vs. 82 LLVM lines) 2 times less (49 ns vs. 130 ns) 2 times less (79 ms vs. 158 ms) 6 times less (4 MB vs. 25 MB)
unrolled_argmax(unrolled_map(length, itr)) argmax(Iterators.map(length, itr)) Tuple 32 nonempty singleton Tuples better (optimized out vs. 29 LLVM lines) 7 times less (49 ns vs. 390 ns) similar (98 ms vs. 159 ms) 3 times less (7 MB vs. 25 MB)
unrolled_argmax(unrolled_map(length, itr)) argmax(Iterators.map(length, itr)) Tuple 128 nonempty singleton Tuples better (optimized out vs. 29 LLVM lines) 28 times less (49 ns vs. 1 μs) similar (170 ms vs. 158 ms) similar (19 MB vs. 25 MB)
unrolled_argmax(unrolled_map(length, itr)) argmax(Iterators.map(length, itr)) Tuple 2 nonempty non-singleton Tuples better (optimized out vs. 64 B allocs) similar (49 ns vs. 80 ns) 4 times less (30 ms vs. 129 ms) 27 times less (938 kB vs. 25 MB)
unrolled_argmax(unrolled_map(length, itr)) argmax(Iterators.map(length, itr)) Tuple 8 nonempty non-singleton Tuples better (optimized out vs. 2 kB allocs) 5 times less (49 ns vs. 250 ns) similar (83 ms vs. 139 ms) 7 times less (4 MB vs. 25 MB)
unrolled_argmax(unrolled_map(length, itr)) argmax(Iterators.map(length, itr)) Tuple 32 nonempty non-singleton Tuples better (optimized out vs. 37 kB allocs) 56 times less (49 ns vs. 3 μs) similar (96 ms vs. 137 ms) 3 times less (7 MB vs. 25 MB)
unrolled_argmax(unrolled_map(length, itr)) argmax(Iterators.map(length, itr)) Tuple 128 nonempty non-singleton Tuples better (optimized out vs. 521 kB allocs) 855 times less (49 ns vs. 42 μs) similar (167 ms vs. 130 ms) similar (20 MB vs. 26 MB)
unrolled_argmin(unrolled_map(length, itr)) argmin(Iterators.map(length, itr)) Tuple 1 empty singleton Tuple similar (optimized out) similar (40 ns vs. 49 ns) 4 times less (29 ms vs. 143 ms) 36 times less (613 kB vs. 22 MB)
unrolled_argmin(unrolled_map(length, itr)) argmin(Iterators.map(length, itr)) Tuple 1 nonempty singleton Tuple similar (optimized out) similar (40 ns vs. 49 ns) 4 times less (31 ms vs. 140 ms) 35 times less (647 kB vs. 22 MB)
unrolled_argmin(unrolled_map(length, itr)) argmin(Iterators.map(length, itr)) Tuple 1 nonempty non-singleton Tuple similar (optimized out) similar (40 ns vs. 40 ns) 4 times less (27 ms vs. 112 ms) 37 times less (620 kB vs. 22 MB)
unrolled_argmin(unrolled_map(length, itr)) argmin(Iterators.map(length, itr)) Tuple 2 identical nonempty singleton Tuples better (optimized out vs. 6 LLVM lines) similar (40 ns vs. 49 ns) 4 times less (40 ms vs. 161 ms) 24 times less (981 kB vs. 24 MB)
unrolled_argmin(unrolled_map(length, itr)) argmin(Iterators.map(length, itr)) Tuple 8 identical nonempty singleton Tuples better (optimized out vs. 6 LLVM lines) similar (40 ns vs. 49 ns) similar (88 ms vs. 165 ms) 6 times less (4 MB vs. 24 MB)
unrolled_argmin(unrolled_map(length, itr)) argmin(Iterators.map(length, itr)) Tuple 32 identical nonempty singleton Tuples better (optimized out vs. 6 LLVM lines) similar (40 ns vs. 49 ns) similar (107 ms vs. 170 ms) 3 times less (7 MB vs. 24 MB)
unrolled_argmin(unrolled_map(length, itr)) argmin(Iterators.map(length, itr)) Tuple 128 identical nonempty singleton Tuples better (optimized out vs. 6 LLVM lines) similar (49 ns vs. 49 ns) similar (187 ms vs. 170 ms) similar (19 MB vs. 24 MB)
unrolled_argmin(unrolled_map(length, itr)) argmin(Iterators.map(length, itr)) Tuple 2 identical nonempty non-singleton Tuples better (optimized out vs. 6 LLVM lines) similar (49 ns vs. 49 ns) 3 times less (34 ms vs. 129 ms) 26 times less (959 kB vs. 25 MB)
unrolled_argmin(unrolled_map(length, itr)) argmin(Iterators.map(length, itr)) Tuple 8 identical nonempty non-singleton Tuples better (optimized out vs. 6 LLVM lines) similar (40 ns vs. 49 ns) similar (83 ms vs. 126 ms) 6 times less (4 MB vs. 24 MB)
unrolled_argmin(unrolled_map(length, itr)) argmin(Iterators.map(length, itr)) Tuple 32 identical nonempty non-singleton Tuples better (optimized out vs. 6 LLVM lines) similar (40 ns vs. 49 ns) similar (95 ms vs. 121 ms) 3 times less (7 MB vs. 24 MB)
unrolled_argmin(unrolled_map(length, itr)) argmin(Iterators.map(length, itr)) Tuple 128 identical nonempty non-singleton Tuples better (optimized out vs. 6 LLVM lines) similar (40 ns vs. 49 ns) similar (172 ms vs. 125 ms) similar (20 MB vs. 24 MB)
unrolled_argmin(unrolled_map(length, itr)) argmin(Iterators.map(length, itr)) Tuple 2 empty & nonempty singleton Tuples better (optimized out vs. 9 LLVM lines) similar (40 ns vs. 60 ns) 4 times less (38 ms vs. 163 ms) 25 times less (981 kB vs. 24 MB)
unrolled_argmin(unrolled_map(length, itr)) argmin(Iterators.map(length, itr)) Tuple 8 empty & nonempty singleton Tuples better (optimized out vs. 82 LLVM lines) 3 times less (40 ns vs. 130 ns) similar (89 ms vs. 165 ms) 6 times less (4 MB vs. 24 MB)
unrolled_argmin(unrolled_map(length, itr)) argmin(Iterators.map(length, itr)) Tuple 32 empty & nonempty singleton Tuples better (optimized out vs. 29 LLVM lines) 7 times less (49 ns vs. 390 ns) similar (108 ms vs. 174 ms) 3 times less (7 MB vs. 24 MB)
unrolled_argmin(unrolled_map(length, itr)) argmin(Iterators.map(length, itr)) Tuple 128 empty & nonempty singleton Tuples better (optimized out vs. 29 LLVM lines) 35 times less (40 ns vs. 1 μs) similar (176 ms vs. 158 ms) similar (19 MB vs. 24 MB)
unrolled_argmin(unrolled_map(length, itr)) argmin(Iterators.map(length, itr)) Tuple 2 nonempty singleton Tuples better (optimized out vs. 9 LLVM lines) similar (40 ns vs. 60 ns) 4 times less (36 ms vs. 148 ms) 25 times less (986 kB vs. 24 MB)
unrolled_argmin(unrolled_map(length, itr)) argmin(Iterators.map(length, itr)) Tuple 8 nonempty singleton Tuples better (optimized out vs. 82 LLVM lines) 3 times less (40 ns vs. 120 ns) similar (78 ms vs. 150 ms) 6 times less (4 MB vs. 24 MB)
unrolled_argmin(unrolled_map(length, itr)) argmin(Iterators.map(length, itr)) Tuple 32 nonempty singleton Tuples better (optimized out vs. 29 LLVM lines) 9 times less (40 ns vs. 380 ns) similar (93 ms vs. 157 ms) 3 times less (7 MB vs. 24 MB)
unrolled_argmin(unrolled_map(length, itr)) argmin(Iterators.map(length, itr)) Tuple 128 nonempty singleton Tuples better (optimized out vs. 29 LLVM lines) 28 times less (49 ns vs. 1 μs) similar (169 ms vs. 149 ms) similar (19 MB vs. 24 MB)
unrolled_argmin(unrolled_map(length, itr)) argmin(Iterators.map(length, itr)) Tuple 2 nonempty non-singleton Tuples better (optimized out vs. 64 B allocs) similar (49 ns vs. 80 ns) 3 times less (30 ms vs. 118 ms) 25 times less (984 kB vs. 25 MB)
unrolled_argmin(unrolled_map(length, itr)) argmin(Iterators.map(length, itr)) Tuple 8 nonempty non-singleton Tuples better (optimized out vs. 2 kB allocs) 4 times less (49 ns vs. 240 ns) similar (76 ms vs. 126 ms) 6 times less (4 MB vs. 24 MB)
unrolled_argmin(unrolled_map(length, itr)) argmin(Iterators.map(length, itr)) Tuple 32 nonempty non-singleton Tuples better (optimized out vs. 37 kB allocs) 50 times less (49 ns vs. 2 μs) similar (94 ms vs. 129 ms) 3 times less (7 MB vs. 24 MB)
unrolled_argmin(unrolled_map(length, itr)) argmin(Iterators.map(length, itr)) Tuple 128 nonempty non-singleton Tuples better (optimized out vs. 521 kB allocs) 900 times less (49 ns vs. 44 μs) similar (167 ms vs. 128 ms) similar (20 MB vs. 25 MB)
unrolled_findfirst(!isempty, itr) findfirst(!isempty, itr) Tuple 1 empty singleton Tuple similar (optimized out) similar (40 ns vs. 49 ns) similar (34 ms vs. 33 ms) similar (198 kB vs. 181 kB)
unrolled_findfirst(!isempty, itr) findfirst(!isempty, itr) Tuple 1 nonempty singleton Tuple similar (optimized out) similar (40 ns vs. 40 ns) similar (36 ms vs. 33 ms) similar (239 kB vs. 246 kB)
unrolled_findfirst(!isempty, itr) findfirst(!isempty, itr) Tuple 1 nonempty non-singleton Tuple similar (optimized out) similar (40 ns vs. 49 ns) similar (33 ms vs. 34 ms) similar (213 kB vs. 235 kB)
unrolled_findfirst(!isempty, itr) findfirst(!isempty, itr) Tuple 2 identical nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (40 ms vs. 39 ms) similar (242 kB vs. 407 kB)
unrolled_findfirst(!isempty, itr) findfirst(!isempty, itr) Tuple 8 identical nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (63 ms vs. 44 ms) 3 times less (329 kB vs. 1 MB)
unrolled_findfirst(!isempty, itr) findfirst(!isempty, itr) Tuple 32 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (66 ms vs. 34 ms) similar (456 kB vs. 269 kB)
unrolled_findfirst(!isempty, itr) findfirst(!isempty, itr) Tuple 128 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) 2 times more (77 ms vs. 34 ms) 3 times more (963 kB vs. 269 kB)
unrolled_findfirst(!isempty, itr) findfirst(!isempty, itr) Tuple 2 identical nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (37 ms vs. 37 ms) similar (215 kB vs. 420 kB)
unrolled_findfirst(!isempty, itr) findfirst(!isempty, itr) Tuple 8 identical nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (53 ms vs. 39 ms) 6 times less (327 kB vs. 2 MB)
unrolled_findfirst(!isempty, itr) findfirst(!isempty, itr) Tuple 32 identical nonempty non-singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (54 ms vs. 31 ms) similar (455 kB vs. 273 kB)
unrolled_findfirst(!isempty, itr) findfirst(!isempty, itr) Tuple 128 identical nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) 2 times more (70 ms vs. 34 ms) 3 times more (962 kB vs. 274 kB)
unrolled_findfirst(!isempty, itr) findfirst(!isempty, itr) Tuple 2 empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (39 ms vs. 37 ms) similar (287 kB vs. 451 kB)
unrolled_findfirst(!isempty, itr) findfirst(!isempty, itr) Tuple 8 empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (63 ms vs. 43 ms) 3 times less (375 kB vs. 1 MB)
unrolled_findfirst(!isempty, itr) findfirst(!isempty, itr) Tuple 32 empty & nonempty singleton Tuples better (optimized out vs. 31 LLVM lines) 2 times less (40 ns vs. 80 ns) similar (66 ms vs. 43 ms) similar (502 kB vs. 608 kB)
unrolled_findfirst(!isempty, itr) findfirst(!isempty, itr) Tuple 128 empty & nonempty singleton Tuples better (optimized out vs. 31 LLVM lines) similar (49 ns vs. 80 ns) similar (69 ms vs. 37 ms) similar (1009 kB vs. 608 kB)
unrolled_findfirst(!isempty, itr) findfirst(!isempty, itr) Tuple 2 nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (36 ms vs. 35 ms) similar (242 kB vs. 407 kB)
unrolled_findfirst(!isempty, itr) findfirst(!isempty, itr) Tuple 8 nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (53 ms vs. 37 ms) 3 times less (329 kB vs. 1 MB)
unrolled_findfirst(!isempty, itr) findfirst(!isempty, itr) Tuple 32 nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (56 ms vs. 32 ms) similar (457 kB vs. 270 kB)
unrolled_findfirst(!isempty, itr) findfirst(!isempty, itr) Tuple 128 nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) 2 times more (68 ms vs. 30 ms) 3 times more (964 kB vs. 270 kB)
unrolled_findfirst(!isempty, itr) findfirst(!isempty, itr) Tuple 2 nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (32 ms vs. 34 ms) 2 times less (241 kB vs. 506 kB)
unrolled_findfirst(!isempty, itr) findfirst(!isempty, itr) Tuple 8 nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (50 ms vs. 40 ms) 6 times less (328 kB vs. 2 MB)
unrolled_findfirst(!isempty, itr) findfirst(!isempty, itr) Tuple 32 nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (55 ms vs. 32 ms) similar (455 kB vs. 275 kB)
unrolled_findfirst(!isempty, itr) findfirst(!isempty, itr) Tuple 128 nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) 2 times more (64 ms vs. 32 ms) 3 times more (962 kB vs. 278 kB)
unrolled_findlast(isempty, itr) findlast(isempty, itr) Tuple 1 empty singleton Tuple similar (optimized out) similar (49 ns vs. 40 ns) similar (43 ms vs. 41 ms) similar (358 kB vs. 344 kB)
unrolled_findlast(isempty, itr) findlast(isempty, itr) Tuple 1 nonempty singleton Tuple similar (optimized out) similar (49 ns vs. 49 ns) similar (37 ms vs. 43 ms) similar (302 kB vs. 399 kB)
unrolled_findlast(isempty, itr) findlast(isempty, itr) Tuple 1 nonempty non-singleton Tuple similar (optimized out) similar (49 ns vs. 40 ns) similar (33 ms vs. 39 ms) similar (342 kB vs. 471 kB)
unrolled_findlast(isempty, itr) findlast(isempty, itr) Tuple 2 identical nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (40 ms vs. 49 ms) similar (307 kB vs. 562 kB)
unrolled_findlast(isempty, itr) findlast(isempty, itr) Tuple 8 identical nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (63 ms vs. 62 ms) 3 times less (408 kB vs. 2 MB)
unrolled_findlast(isempty, itr) findlast(isempty, itr) Tuple 32 identical nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (66 ms vs. 44 ms) similar (593 kB vs. 691 kB)
unrolled_findlast(isempty, itr) findlast(isempty, itr) Tuple 128 identical nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (77 ms vs. 44 ms) similar (1 MB vs. 691 kB)
unrolled_findlast(isempty, itr) findlast(isempty, itr) Tuple 2 identical nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (33 ms vs. 44 ms) similar (353 kB vs. 670 kB)
unrolled_findlast(isempty, itr) findlast(isempty, itr) Tuple 8 identical nonempty non-singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (54 ms vs. 62 ms) 4 times less (516 kB vs. 2 MB)
unrolled_findlast(isempty, itr) findlast(isempty, itr) Tuple 32 identical nonempty non-singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (54 ms vs. 43 ms) similar (852 kB vs. 696 kB)
unrolled_findlast(isempty, itr) findlast(isempty, itr) Tuple 128 identical nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (68 ms vs. 44 ms) 3 times more (2 MB vs. 697 kB)
unrolled_findlast(isempty, itr) findlast(isempty, itr) Tuple 2 empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (52 ms vs. 39 ms) similar (397 kB vs. 467 kB)
unrolled_findlast(isempty, itr) findlast(isempty, itr) Tuple 8 empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (68 ms vs. 49 ms) 3 times less (507 kB vs. 2 MB)
unrolled_findlast(isempty, itr) findlast(isempty, itr) Tuple 32 empty & nonempty singleton Tuples better (optimized out vs. 30 LLVM lines) 9 times less (40 ns vs. 390 ns) similar (76 ms vs. 50 ms) similar (711 kB vs. 710 kB)
unrolled_findlast(isempty, itr) findlast(isempty, itr) Tuple 128 empty & nonempty singleton Tuples better (optimized out vs. 30 LLVM lines) 23 times less (40 ns vs. 921 ns) similar (82 ms vs. 44 ms) similar (1 MB vs. 710 kB)
unrolled_findlast(isempty, itr) findlast(isempty, itr) Tuple 2 nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (36 ms vs. 46 ms) similar (312 kB vs. 527 kB)
unrolled_findlast(isempty, itr) findlast(isempty, itr) Tuple 8 nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (54 ms vs. 42 ms) 3 times less (421 kB vs. 2 MB)
unrolled_findlast(isempty, itr) findlast(isempty, itr) Tuple 32 nonempty singleton Tuples better (optimized out vs. 30 LLVM lines) 7 times less (49 ns vs. 390 ns) similar (58 ms vs. 48 ms) similar (620 kB vs. 710 kB)
unrolled_findlast(isempty, itr) findlast(isempty, itr) Tuple 128 nonempty singleton Tuples better (optimized out vs. 30 LLVM lines) 34 times less (40 ns vs. 1 μs) similar (70 ms vs. 42 ms) similar (1 MB vs. 710 kB)
unrolled_findlast(isempty, itr) findlast(isempty, itr) Tuple 2 nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (30 ms vs. 39 ms) similar (382 kB vs. 724 kB)
unrolled_findlast(isempty, itr) findlast(isempty, itr) Tuple 8 nonempty non-singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (49 ms vs. 48 ms) 5 times less (530 kB vs. 3 MB)
unrolled_findlast(isempty, itr) findlast(isempty, itr) Tuple 32 nonempty non-singleton Tuples better (optimized out vs. 38 kB allocs) 67 times less (40 ns vs. 3 μs) similar (53 ms vs. 46 ms) similar (878 kB vs. 753 kB)
unrolled_findlast(isempty, itr) findlast(isempty, itr) Tuple 128 nonempty non-singleton Tuples better (optimized out vs. 525 kB allocs) 884 times less (40 ns vs. 35 μs) similar (65 ms vs. 45 ms) similar (2 MB vs. 1 MB)
unrolled_argfirst((x->length(x) >= length(itr[end])), itr) itr[findfirst((x->length(x) >= length(itr[end])), itr)] Tuple 1 empty singleton Tuple similar (optimized out) similar (40 ns vs. 49 ns) similar (51 ms vs. 47 ms) similar (272 kB vs. 201 kB)
unrolled_argfirst((x->length(x) >= length(itr[end])), itr) itr[findfirst((x->length(x) >= length(itr[end])), itr)] Tuple 1 nonempty singleton Tuple similar (optimized out) similar (40 ns vs. 40 ns) similar (53 ms vs. 50 ms) similar (307 kB vs. 267 kB)
unrolled_argfirst((x->length(x) >= length(itr[end])), itr) itr[findfirst((x->length(x) >= length(itr[end])), itr)] Tuple 1 nonempty non-singleton Tuple similar (8 LLVM lines) similar (49 ns vs. 49 ns) similar (47 ms vs. 47 ms) similar (316 kB vs. 256 kB)
unrolled_argfirst((x->length(x) >= length(itr[end])), itr) itr[findfirst((x->length(x) >= length(itr[end])), itr)] Tuple 2 identical nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (59 ms vs. 55 ms) similar (328 kB vs. 428 kB)
unrolled_argfirst((x->length(x) >= length(itr[end])), itr) itr[findfirst((x->length(x) >= length(itr[end])), itr)] Tuple 8 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (78 ms vs. 54 ms) 2 times less (539 kB vs. 1 MB)
unrolled_argfirst((x->length(x) >= length(itr[end])), itr) itr[findfirst((x->length(x) >= length(itr[end])), itr)] Tuple 32 identical nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (115 ms vs. 61 ms) 2 times more (1 MB vs. 397 kB)
unrolled_argfirst((x->length(x) >= length(itr[end])), itr) itr[findfirst((x->length(x) >= length(itr[end])), itr)] Tuple 128 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) 3 times more (204 ms vs. 55 ms) 9 times more (4 MB vs. 397 kB)
unrolled_argfirst((x->length(x) >= length(itr[end])), itr) itr[findfirst((x->length(x) >= length(itr[end])), itr)] Tuple 2 identical nonempty non-singleton Tuples similar (8 LLVM lines) similar (49 ns vs. 49 ns) similar (55 ms vs. 54 ms) similar (356 kB vs. 441 kB)
unrolled_argfirst((x->length(x) >= length(itr[end])), itr) itr[findfirst((x->length(x) >= length(itr[end])), itr)] Tuple 8 identical nonempty non-singleton Tuples similar (8 LLVM lines) similar (49 ns vs. 49 ns) similar (76 ms vs. 53 ms) 2 times less (695 kB vs. 2 MB)
unrolled_argfirst((x->length(x) >= length(itr[end])), itr) itr[findfirst((x->length(x) >= length(itr[end])), itr)] Tuple 32 identical nonempty non-singleton Tuples similar (8 LLVM lines) similar (49 ns vs. 49 ns) similar (102 ms vs. 57 ms) 4 times more (2 MB vs. 401 kB)
unrolled_argfirst((x->length(x) >= length(itr[end])), itr) itr[findfirst((x->length(x) >= length(itr[end])), itr)] Tuple 128 identical nonempty non-singleton Tuples similar (8 LLVM lines) similar (60 ns vs. 49 ns) 4 times more (231 ms vs. 56 ms) 14 times more (6 MB vs. 402 kB)
unrolled_argfirst((x->length(x) >= length(itr[end])), itr) itr[findfirst((x->length(x) >= length(itr[end])), itr)] Tuple 2 empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (60 ms vs. 60 ms) similar (372 kB vs. 464 kB)
unrolled_argfirst((x->length(x) >= length(itr[end])), itr) itr[findfirst((x->length(x) >= length(itr[end])), itr)] Tuple 8 empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (96 ms vs. 87 ms) 2 times less (681 kB vs. 2 MB)
unrolled_argfirst((x->length(x) >= length(itr[end])), itr) itr[findfirst((x->length(x) >= length(itr[end])), itr)] Tuple 32 empty & nonempty singleton Tuples better (optimized out vs. type-unstable) 7 times less (49 ns vs. 370 ns) similar (142 ms vs. 98 ms) 2 times more (1 MB vs. 747 kB)
unrolled_argfirst((x->length(x) >= length(itr[end])), itr) itr[findfirst((x->length(x) >= length(itr[end])), itr)] Tuple 128 empty & nonempty singleton Tuples better (optimized out vs. type-unstable) 7 times less (49 ns vs. 370 ns) 2 times more (244 ms vs. 84 ms) 5 times more (4 MB vs. 747 kB)
unrolled_argfirst((x->length(x) >= length(itr[end])), itr) itr[findfirst((x->length(x) >= length(itr[end])), itr)] Tuple 2 nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (55 ms vs. 53 ms) similar (377 kB vs. 469 kB)
unrolled_argfirst((x->length(x) >= length(itr[end])), itr) itr[findfirst((x->length(x) >= length(itr[end])), itr)] Tuple 8 nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (86 ms vs. 75 ms) 2 times less (685 kB vs. 2 MB)
unrolled_argfirst((x->length(x) >= length(itr[end])), itr) itr[findfirst((x->length(x) >= length(itr[end])), itr)] Tuple 32 nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) 2 times more (121 ms vs. 54 ms) 3 times more (1 MB vs. 464 kB)
unrolled_argfirst((x->length(x) >= length(itr[end])), itr) itr[findfirst((x->length(x) >= length(itr[end])), itr)] Tuple 128 nonempty singleton Tuples better (optimized out vs. type-unstable) 2 times less (40 ns vs. 80 ns) 4 times more (233 ms vs. 56 ms) 7 times more (4 MB vs. 505 kB)
unrolled_argfirst((x->length(x) >= length(itr[end])), itr) itr[findfirst((x->length(x) >= length(itr[end])), itr)] Tuple 2 nonempty non-singleton Tuples similar (8 LLVM lines) similar (49 ns vs. 60 ns) similar (53 ms vs. 52 ms) similar (440 kB vs. 563 kB)
unrolled_argfirst((x->length(x) >= length(itr[end])), itr) itr[findfirst((x->length(x) >= length(itr[end])), itr)] Tuple 8 nonempty non-singleton Tuples similar (8 LLVM lines) similar (60 ns vs. 50 ns) similar (88 ms vs. 79 ms) 3 times less (874 kB vs. 3 MB)
unrolled_argfirst((x->length(x) >= length(itr[end])), itr) itr[findfirst((x->length(x) >= length(itr[end])), itr)] Tuple 32 nonempty non-singleton Tuples similar (8 LLVM lines) similar (60 ns vs. 49 ns) 2 times more (137 ms vs. 55 ms) 4 times more (2 MB vs. 448 kB)
unrolled_argfirst((x->length(x) >= length(itr[end])), itr) itr[findfirst((x->length(x) >= length(itr[end])), itr)] Tuple 128 nonempty non-singleton Tuples better (8 LLVM lines vs. 12 kB allocs) 13 times less (49 ns vs. 651 ns) 5 times more (297 ms vs. 58 ms) 12 times more (6 MB vs. 495 kB)
unrolled_arglast((x->length(x) >= length(itr[1])), itr) itr[findlast((x->length(x) >= length(itr[1])), itr)] Tuple 1 empty singleton Tuple similar (optimized out) similar (40 ns vs. 49 ns) similar (54 ms vs. 55 ms) similar (411 kB vs. 406 kB)
unrolled_arglast((x->length(x) >= length(itr[1])), itr) itr[findlast((x->length(x) >= length(itr[1])), itr)] Tuple 1 nonempty singleton Tuple similar (optimized out) similar (49 ns vs. 40 ns) similar (53 ms vs. 58 ms) similar (445 kB vs. 466 kB)
unrolled_arglast((x->length(x) >= length(itr[1])), itr) itr[findlast((x->length(x) >= length(itr[1])), itr)] Tuple 1 nonempty non-singleton Tuple similar (8 LLVM lines) similar (60 ns vs. 49 ns) similar (47 ms vs. 52 ms) similar (532 kB vs. 533 kB)
unrolled_arglast((x->length(x) >= length(itr[1])), itr) itr[findlast((x->length(x) >= length(itr[1])), itr)] Tuple 2 identical nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (64 ms vs. 66 ms) similar (469 kB vs. 629 kB)
unrolled_arglast((x->length(x) >= length(itr[1])), itr) itr[findlast((x->length(x) >= length(itr[1])), itr)] Tuple 8 identical nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (80 ms vs. 78 ms) 2 times less (707 kB vs. 2 MB)
unrolled_arglast((x->length(x) >= length(itr[1])), itr) itr[findlast((x->length(x) >= length(itr[1])), itr)] Tuple 32 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (108 ms vs. 67 ms) similar (1 MB vs. 761 kB)
unrolled_arglast((x->length(x) >= length(itr[1])), itr) itr[findlast((x->length(x) >= length(itr[1])), itr)] Tuple 128 identical nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) 3 times more (209 ms vs. 63 ms) 5 times more (4 MB vs. 761 kB)
unrolled_arglast((x->length(x) >= length(itr[1])), itr) itr[findlast((x->length(x) >= length(itr[1])), itr)] Tuple 2 identical nonempty non-singleton Tuples similar (9 LLVM lines) similar (49 ns vs. 49 ns) similar (56 ms vs. 60 ms) similar (588 kB vs. 732 kB)
unrolled_arglast((x->length(x) >= length(itr[1])), itr) itr[findlast((x->length(x) >= length(itr[1])), itr)] Tuple 8 identical nonempty non-singleton Tuples similar (9 LLVM lines) similar (60 ns vs. 49 ns) similar (75 ms vs. 73 ms) 2 times less (1011 kB vs. 2 MB)
unrolled_arglast((x->length(x) >= length(itr[1])), itr) itr[findlast((x->length(x) >= length(itr[1])), itr)] Tuple 32 identical nonempty non-singleton Tuples similar (9 LLVM lines) similar (60 ns vs. 60 ns) similar (101 ms vs. 63 ms) 3 times more (2 MB vs. 765 kB)
unrolled_arglast((x->length(x) >= length(itr[1])), itr) itr[findlast((x->length(x) >= length(itr[1])), itr)] Tuple 128 identical nonempty non-singleton Tuples similar (9 LLVM lines) similar (60 ns vs. 49 ns) 3 times more (231 ms vs. 66 ms) 10 times more (8 MB vs. 765 kB)
unrolled_arglast((x->length(x) >= length(itr[1])), itr) itr[findlast((x->length(x) >= length(itr[1])), itr)] Tuple 2 empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (63 ms vs. 57 ms) similar (513 kB vs. 534 kB)
unrolled_arglast((x->length(x) >= length(itr[1])), itr) itr[findlast((x->length(x) >= length(itr[1])), itr)] Tuple 8 empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (99 ms vs. 60 ms) similar (842 kB vs. 1 MB)
unrolled_arglast((x->length(x) >= length(itr[1])), itr) itr[findlast((x->length(x) >= length(itr[1])), itr)] Tuple 32 empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) 2 times more (145 ms vs. 67 ms) 2 times more (2 MB vs. 825 kB)
unrolled_arglast((x->length(x) >= length(itr[1])), itr) itr[findlast((x->length(x) >= length(itr[1])), itr)] Tuple 128 empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) 4 times more (248 ms vs. 59 ms) 5 times more (5 MB vs. 825 kB)
unrolled_arglast((x->length(x) >= length(itr[1])), itr) itr[findlast((x->length(x) >= length(itr[1])), itr)] Tuple 2 nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (60 ms vs. 54 ms) similar (517 kB vs. 594 kB)
unrolled_arglast((x->length(x) >= length(itr[1])), itr) itr[findlast((x->length(x) >= length(itr[1])), itr)] Tuple 8 nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (88 ms vs. 56 ms) similar (847 kB vs. 2 MB)
unrolled_arglast((x->length(x) >= length(itr[1])), itr) itr[findlast((x->length(x) >= length(itr[1])), itr)] Tuple 32 nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) 2 times more (127 ms vs. 58 ms) 2 times more (2 MB vs. 825 kB)
unrolled_arglast((x->length(x) >= length(itr[1])), itr) itr[findlast((x->length(x) >= length(itr[1])), itr)] Tuple 128 nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) 4 times more (236 ms vs. 58 ms) 5 times more (5 MB vs. 825 kB)
unrolled_arglast((x->length(x) >= length(itr[1])), itr) itr[findlast((x->length(x) >= length(itr[1])), itr)] Tuple 2 nonempty non-singleton Tuples similar (8 LLVM lines) similar (49 ns vs. 50 ns) similar (54 ms vs. 55 ms) similar (668 kB vs. 787 kB)
unrolled_arglast((x->length(x) >= length(itr[1])), itr) itr[findlast((x->length(x) >= length(itr[1])), itr)] Tuple 8 nonempty non-singleton Tuples similar (8 LLVM lines) similar (60 ns vs. 60 ns) similar (86 ms vs. 62 ms) 2 times less (1 MB vs. 3 MB)
unrolled_arglast((x->length(x) >= length(itr[1])), itr) itr[findlast((x->length(x) >= length(itr[1])), itr)] Tuple 32 nonempty non-singleton Tuples similar (9 LLVM lines) similar (50 ns vs. 60 ns) 2 times more (137 ms vs. 61 ms) 3 times more (3 MB vs. 809 kB)
unrolled_arglast((x->length(x) >= length(itr[1])), itr) itr[findlast((x->length(x) >= length(itr[1])), itr)] Tuple 128 nonempty non-singleton Tuples similar (8 LLVM lines) similar (60 ns vs. 60 ns) 4 times more (301 ms vs. 61 ms) 10 times more (8 MB vs. 815 kB)
unrolled_filter(!isempty, itr) filter(!isempty, itr) Tuple 1 empty singleton Tuple similar (optimized out) similar (49 ns vs. 40 ns) similar (30 ms vs. 32 ms) 3 times less (181 kB vs. 603 kB)
unrolled_filter(!isempty, itr) filter(!isempty, itr) Tuple 1 nonempty singleton Tuple similar (optimized out) similar (40 ns vs. 49 ns) similar (32 ms vs. 31 ms) 2 times less (281 kB vs. 641 kB)
unrolled_filter(!isempty, itr) filter(!isempty, itr) Tuple 1 nonempty non-singleton Tuple similar (8 LLVM lines) similar (60 ns vs. 49 ns) similar (32 ms vs. 40 ms) similar (526 kB vs. 828 kB)
unrolled_filter(!isempty, itr) filter(!isempty, itr) Tuple 2 identical nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (39 ms vs. 36 ms) similar (366 kB vs. 704 kB)
unrolled_filter(!isempty, itr) filter(!isempty, itr) Tuple 8 identical nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (66 ms vs. 34 ms) similar (861 kB vs. 936 kB)
unrolled_filter(!isempty, itr) filter(!isempty, itr) Tuple 32 identical nonempty singleton Tuples better (optimized out vs. 128 B allocs) 12 times less (49 ns vs. 631 ns) similar (71 ms vs. 130 ms) 4 times less (2 MB vs. 7 MB)
unrolled_filter(!isempty, itr) filter(!isempty, itr) Tuple 128 identical nonempty singleton Tuples better (optimized out vs. 128 B allocs) 50 times less (40 ns vs. 2 μs) similar (112 ms vs. 125 ms) similar (6 MB vs. 7 MB)
unrolled_filter(!isempty, itr) filter(!isempty, itr) Tuple 2 identical nonempty non-singleton Tuples similar (8 LLVM lines) similar (60 ns vs. 49 ns) similar (36 ms vs. 40 ms) similar (821 kB vs. 960 kB)
unrolled_filter(!isempty, itr) filter(!isempty, itr) Tuple 8 identical nonempty non-singleton Tuples similar (12 LLVM lines) similar (49 ns vs. 60 ns) similar (60 ms vs. 37 ms) similar (2 MB vs. 2 MB)
unrolled_filter(!isempty, itr) filter(!isempty, itr) Tuple 32 identical nonempty non-singleton Tuples better (36 LLVM lines vs. 1 kB allocs) 23 times less (60 ns vs. 1 μs) similar (77 ms vs. 150 ms) similar (6 MB vs. 7 MB)
unrolled_filter(!isempty, itr) filter(!isempty, itr) Tuple 128 identical nonempty non-singleton Tuples better (132 LLVM lines vs. 5 kB allocs) 62 times less (80 ns vs. 5 μs) similar (193 ms vs. 163 ms) 5 times more (37 MB vs. 7 MB)
unrolled_filter(!isempty, itr) filter(!isempty, itr) Tuple 2 empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (39 ms vs. 34 ms) similar (416 kB vs. 782 kB)
unrolled_filter(!isempty, itr) filter(!isempty, itr) Tuple 8 empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (64 ms vs. 33 ms) similar (1 MB vs. 1 MB)
unrolled_filter(!isempty, itr) filter(!isempty, itr) Tuple 32 empty & nonempty singleton Tuples better (optimized out vs. 640 B allocs) 24 times less (40 ns vs. 961 ns) 2 times less (75 ms vs. 167 ms) 2 times less (3 MB vs. 8 MB)
unrolled_filter(!isempty, itr) filter(!isempty, itr) Tuple 128 empty & nonempty singleton Tuples better (optimized out vs. 2 kB allocs) 80 times less (40 ns vs. 3 μs) similar (123 ms vs. 151 ms) similar (9 MB vs. 8 MB)
unrolled_filter(!isempty, itr) filter(!isempty, itr) Tuple 2 nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (35 ms vs. 29 ms) similar (426 kB vs. 789 kB)
unrolled_filter(!isempty, itr) filter(!isempty, itr) Tuple 8 nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (59 ms vs. 31 ms) similar (1 MB vs. 1 MB)
unrolled_filter(!isempty, itr) filter(!isempty, itr) Tuple 32 nonempty singleton Tuples better (optimized out vs. 640 B allocs) 51 times less (49 ns vs. 3 μs) 2 times less (64 ms vs. 184 ms) 2 times less (3 MB vs. 9 MB)
unrolled_filter(!isempty, itr) filter(!isempty, itr) Tuple 128 nonempty singleton Tuples better (optimized out vs. 2 kB allocs) 158 times less (49 ns vs. 8 μs) similar (117 ms vs. 185 ms) similar (10 MB vs. 9 MB)
unrolled_filter(!isempty, itr) filter(!isempty, itr) Tuple 2 nonempty non-singleton Tuples similar (11 LLVM lines) similar (60 ns vs. 60 ns) similar (31 ms vs. 34 ms) similar (930 kB vs. 1 MB)
unrolled_filter(!isempty, itr) filter(!isempty, itr) Tuple 8 nonempty non-singleton Tuples similar (29 LLVM lines) similar (69 ns vs. 60 ns) similar (63 ms vs. 38 ms) similar (3 MB vs. 2 MB)
unrolled_filter(!isempty, itr) filter(!isempty, itr) Tuple 32 nonempty non-singleton Tuples better (93 LLVM lines vs. 40 kB allocs) 60 times less (80 ns vs. 5 μs) 2 times less (90 ms vs. 216 ms) similar (10 MB vs. 9 MB)
unrolled_filter(!isempty, itr) filter(!isempty, itr) Tuple 128 nonempty non-singleton Tuples better (556 LLVM lines vs. 533 kB allocs) 150 times less (371 ns vs. 56 μs) similar (328 ms vs. 195 ms) 5 times more (48 MB vs. 9 MB)
unrolled_split(isempty, itr) (filter(isempty, itr), filter(!isempty, itr)) Tuple 1 empty singleton Tuple similar (optimized out) similar (49 ns vs. 40 ns) similar (47 ms vs. 34 ms) 2 times more (2 MB vs. 780 kB)
unrolled_split(isempty, itr) (filter(isempty, itr), filter(!isempty, itr)) Tuple 1 nonempty singleton Tuple similar (optimized out) similar (49 ns vs. 40 ns) similar (50 ms vs. 33 ms) 2 times more (2 MB vs. 815 kB)
unrolled_split(isempty, itr) (filter(isempty, itr), filter(!isempty, itr)) Tuple 1 nonempty non-singleton Tuple similar (8 LLVM lines) similar (49 ns vs. 49 ns) similar (40 ms vs. 42 ms) similar (1 MB vs. 1006 kB)
unrolled_split(isempty, itr) (filter(isempty, itr), filter(!isempty, itr)) Tuple 2 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (60 ms vs. 37 ms) 2 times more (2 MB vs. 882 kB)
unrolled_split(isempty, itr) (filter(isempty, itr), filter(!isempty, itr)) Tuple 8 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) 2 times more (97 ms vs. 35 ms) 4 times more (5 MB vs. 1 MB)
unrolled_split(isempty, itr) (filter(isempty, itr), filter(!isempty, itr)) Tuple 32 identical nonempty singleton Tuples better (optimized out vs. 256 B allocs) 15 times less (49 ns vs. 771 ns) similar (129 ms vs. 141 ms) similar (13 MB vs. 7 MB)
unrolled_split(isempty, itr) (filter(isempty, itr), filter(!isempty, itr)) Tuple 128 identical nonempty singleton Tuples better (optimized out vs. 256 B allocs) 43 times less (49 ns vs. 2 μs) 2 times more (353 ms vs. 140 ms) 6 times more (47 MB vs. 7 MB)
unrolled_split(isempty, itr) (filter(isempty, itr), filter(!isempty, itr)) Tuple 2 identical nonempty non-singleton Tuples similar (8 LLVM lines) similar (49 ns vs. 51 ns) similar (39 ms vs. 41 ms) similar (2 MB vs. 1 MB)
unrolled_split(isempty, itr) (filter(isempty, itr), filter(!isempty, itr)) Tuple 8 identical nonempty non-singleton Tuples similar (12 LLVM lines) similar (50 ns vs. 49 ns) 2 times more (79 ms vs. 39 ms) 3 times more (7 MB vs. 2 MB)
unrolled_split(isempty, itr) (filter(isempty, itr), filter(!isempty, itr)) Tuple 32 identical nonempty non-singleton Tuples better (36 LLVM lines vs. 2 kB allocs) 26 times less (60 ns vs. 2 μs) similar (116 ms vs. 162 ms) 2 times more (19 MB vs. 7 MB)
unrolled_split(isempty, itr) (filter(isempty, itr), filter(!isempty, itr)) Tuple 128 identical nonempty non-singleton Tuples better (132 LLVM lines vs. 7 kB allocs) 66 times less (80 ns vs. 5 μs) similar (349 ms vs. 175 ms) 11 times more (82 MB vs. 7 MB)
unrolled_split(isempty, itr) (filter(isempty, itr), filter(!isempty, itr)) Tuple 2 empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (54 ms vs. 32 ms) 2 times more (3 MB vs. 970 kB)
unrolled_split(isempty, itr) (filter(isempty, itr), filter(!isempty, itr)) Tuple 8 empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) 2 times more (96 ms vs. 34 ms) 4 times more (6 MB vs. 1 MB)
unrolled_split(isempty, itr) (filter(isempty, itr), filter(!isempty, itr)) Tuple 32 empty & nonempty singleton Tuples better (optimized out vs. 1 kB allocs) 32 times less (49 ns vs. 2 μs) similar (149 ms vs. 182 ms) 2 times more (18 MB vs. 8 MB)
unrolled_split(isempty, itr) (filter(isempty, itr), filter(!isempty, itr)) Tuple 128 empty & nonempty singleton Tuples better (optimized out vs. 4 kB allocs) 106 times less (49 ns vs. 5 μs) 2 times more (377 ms vs. 176 ms) 6 times more (56 MB vs. 8 MB)
unrolled_split(isempty, itr) (filter(isempty, itr), filter(!isempty, itr)) Tuple 2 nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (49 ms vs. 31 ms) 2 times more (3 MB vs. 975 kB)
unrolled_split(isempty, itr) (filter(isempty, itr), filter(!isempty, itr)) Tuple 8 nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) 2 times more (86 ms vs. 31 ms) 4 times more (6 MB vs. 1 MB)
unrolled_split(isempty, itr) (filter(isempty, itr), filter(!isempty, itr)) Tuple 32 nonempty singleton Tuples better (optimized out vs. 1 kB allocs) 94 times less (49 ns vs. 5 μs) similar (140 ms vs. 188 ms) 2 times more (18 MB vs. 9 MB)
unrolled_split(isempty, itr) (filter(isempty, itr), filter(!isempty, itr)) Tuple 128 nonempty singleton Tuples better (optimized out vs. 4 kB allocs) 286 times less (49 ns vs. 14 μs) similar (366 ms vs. 191 ms) 6 times more (56 MB vs. 9 MB)
unrolled_split(isempty, itr) (filter(isempty, itr), filter(!isempty, itr)) Tuple 2 nonempty non-singleton Tuples similar (11 LLVM lines) similar (60 ns vs. 60 ns) similar (35 ms vs. 35 ms) similar (2 MB vs. 1 MB)
unrolled_split(isempty, itr) (filter(isempty, itr), filter(!isempty, itr)) Tuple 8 nonempty non-singleton Tuples similar (29 LLVM lines) similar (60 ns vs. 60 ns) 2 times more (82 ms vs. 40 ms) 4 times more (9 MB vs. 2 MB)
unrolled_split(isempty, itr) (filter(isempty, itr), filter(!isempty, itr)) Tuple 32 nonempty non-singleton Tuples better (93 LLVM lines vs. 79 kB allocs) 140 times less (80 ns vs. 11 μs) similar (147 ms vs. 217 ms) 3 times more (27 MB vs. 9 MB)
unrolled_split(isempty, itr) (filter(isempty, itr), filter(!isempty, itr)) Tuple 128 nonempty non-singleton Tuples better (764 LLVM lines vs. 1 MB allocs) 245 times less (460 ns vs. 113 μs) 2 times more (498 ms vs. 208 ms) 10 times more (100 MB vs. 10 MB)
unrolled_flatten(itr) Tuple(Iterators.flatten(itr)) Tuple 1 empty singleton Tuple similar (optimized out) similar (49 ns vs. 40 ns) similar (28 ms vs. 34 ms) 18 times less (63 kB vs. 1 MB)
unrolled_flatten(itr) Tuple(Iterators.flatten(itr)) Tuple 1 nonempty singleton Tuple better (optimized out vs. 64 B allocs) 3 times less (40 ns vs. 150 ns) similar (31 ms vs. 55 ms) 29 times less (93 kB vs. 3 MB)
unrolled_flatten(itr) Tuple(Iterators.flatten(itr)) Tuple 1 nonempty non-singleton Tuple better (8 LLVM lines vs. 80 B allocs) 3 times less (49 ns vs. 180 ns) similar (31 ms vs. 41 ms) 20 times less (127 kB vs. 2 MB)
unrolled_flatten(itr) Tuple(Iterators.flatten(itr)) Tuple 2 identical nonempty singleton Tuples better (optimized out vs. 64 B allocs) 3 times less (49 ns vs. 170 ns) similar (34 ms vs. 62 ms) 19 times less (175 kB vs. 3 MB)
unrolled_flatten(itr) Tuple(Iterators.flatten(itr)) Tuple 8 identical nonempty singleton Tuples better (optimized out vs. 64 B allocs) 6 times less (40 ns vs. 250 ns) similar (40 ms vs. 58 ms) 5 times less (600 kB vs. 3 MB)
unrolled_flatten(itr) Tuple(Iterators.flatten(itr)) Tuple 32 identical nonempty singleton Tuples better (optimized out vs. 64 B allocs) 15 times less (40 ns vs. 601 ns) similar (44 ms vs. 66 ms) 2 times less (1 MB vs. 3 MB)
unrolled_flatten(itr) Tuple(Iterators.flatten(itr)) Tuple 128 identical nonempty singleton Tuples better (optimized out vs. 64 B allocs) 49 times less (40 ns vs. 2 μs) similar (107 ms vs. 60 ms) similar (6 MB vs. 3 MB)
unrolled_flatten(itr) Tuple(Iterators.flatten(itr)) Tuple 2 identical nonempty non-singleton Tuples better (8 LLVM lines vs. 112 B allocs) 4 times less (49 ns vs. 210 ns) similar (33 ms vs. 49 ms) 8 times less (385 kB vs. 3 MB)
unrolled_flatten(itr) Tuple(Iterators.flatten(itr)) Tuple 8 identical nonempty non-singleton Tuples better (12 LLVM lines vs. 208 B allocs) 7 times less (49 ns vs. 370 ns) similar (42 ms vs. 49 ms) 2 times less (2 MB vs. 3 MB)
unrolled_flatten(itr) Tuple(Iterators.flatten(itr)) Tuple 32 identical nonempty non-singleton Tuples better (36 LLVM lines vs. 592 B allocs) 18 times less (60 ns vs. 1 μs) similar (52 ms vs. 54 ms) similar (5 MB vs. 3 MB)
unrolled_flatten(itr) Tuple(Iterators.flatten(itr)) Tuple 128 identical nonempty non-singleton Tuples better (132 LLVM lines vs. 2 kB allocs) 43 times less (89 ns vs. 4 μs) 2 times more (177 ms vs. 60 ms) 8 times more (29 MB vs. 3 MB)
unrolled_flatten(itr) Tuple(Iterators.flatten(itr)) Tuple 2 empty & nonempty singleton Tuples better (optimized out vs. 96 B allocs) 8 times less (49 ns vs. 440 ns) 2 times less (31 ms vs. 79 ms) 30 times less (175 kB vs. 5 MB)
unrolled_flatten(itr) Tuple(Iterators.flatten(itr)) Tuple 8 empty & nonempty singleton Tuples better (optimized out vs. 496 B allocs) 12 times less (49 ns vs. 621 ns) 2 times less (40 ms vs. 99 ms) 7 times less (773 kB vs. 6 MB)
unrolled_flatten(itr) Tuple(Iterators.flatten(itr)) Tuple 32 empty & nonempty singleton Tuples better (optimized out vs. 2 kB allocs) 104 times less (40 ns vs. 4 μs) similar (136 ms vs. 95 ms) similar (5 MB vs. 6 MB)
unrolled_flatten(itr) Tuple(Iterators.flatten(itr)) Tuple 128 empty & nonempty singleton Tuples better (optimized out vs. 8 kB allocs) 368 times less (40 ns vs. 15 μs) 3 times more (310 ms vs. 89 ms) 3 times more (20 MB vs. 6 MB)
unrolled_flatten(itr) Tuple(Iterators.flatten(itr)) Tuple 2 nonempty singleton Tuples better (optimized out vs. 192 B allocs) 8 times less (40 ns vs. 320 ns) 3 times less (29 ms vs. 95 ms) 30 times less (180 kB vs. 5 MB)
unrolled_flatten(itr) Tuple(Iterators.flatten(itr)) Tuple 8 nonempty singleton Tuples better (optimized out vs. 496 B allocs) 20 times less (40 ns vs. 821 ns) 2 times less (36 ms vs. 87 ms) 8 times less (784 kB vs. 7 MB)
unrolled_flatten(itr) Tuple(Iterators.flatten(itr)) Tuple 32 nonempty singleton Tuples better (optimized out vs. 2 kB allocs) 106 times less (40 ns vs. 4 μs) similar (112 ms vs. 88 ms) similar (5 MB vs. 7 MB)
unrolled_flatten(itr) Tuple(Iterators.flatten(itr)) Tuple 128 nonempty singleton Tuples better (optimized out vs. 8 kB allocs) 367 times less (40 ns vs. 15 μs) 3 times more (306 ms vs. 89 ms) 3 times more (20 MB vs. 7 MB)
unrolled_flatten(itr) Tuple(Iterators.flatten(itr)) Tuple 2 nonempty non-singleton Tuples better (12 LLVM lines vs. 352 B allocs) 6 times less (60 ns vs. 400 ns) 2 times less (30 ms vs. 66 ms) 12 times less (415 kB vs. 5 MB)
unrolled_flatten(itr) Tuple(Iterators.flatten(itr)) Tuple 8 nonempty non-singleton Tuples better (28 LLVM lines vs. 2 kB allocs) 18 times less (60 ns vs. 1 μs) similar (42 ms vs. 62 ms) similar (2 MB vs. 4 MB)
unrolled_flatten(itr) Tuple(Iterators.flatten(itr)) Tuple 32 nonempty non-singleton Tuples better (148 LLVM lines vs. 40 kB allocs) 91 times less (80 ns vs. 7 μs) 2 times more (190 ms vs. 64 ms) 7 times more (30 MB vs. 4 MB)
unrolled_flatten(itr) Tuple(Iterators.flatten(itr)) Tuple 128 nonempty non-singleton Tuples better (516 LLVM lines vs. 533 kB allocs) 198 times less (300 ns vs. 60 μs) 14 times more (861 ms vs. 60 ms) 34 times more (164 MB vs. 5 MB)
unrolled_flatmap(Iterators.reverse, itr) Tuple(Iterators.flatmap(Iterators.reverse, itr)) Tuple 1 empty singleton Tuple similar (optimized out) similar (40 ns vs. 49 ns) similar (35 ms vs. 57 ms) 5 times less (272 kB vs. 1 MB)
unrolled_flatmap(Iterators.reverse, itr) Tuple(Iterators.flatmap(Iterators.reverse, itr)) Tuple 1 nonempty singleton Tuple better (optimized out vs. 64 B allocs) 4 times less (40 ns vs. 160 ns) 2 times less (43 ms vs. 99 ms) 12 times less (428 kB vs. 5 MB)
unrolled_flatmap(Iterators.reverse, itr) Tuple(Iterators.flatmap(Iterators.reverse, itr)) Tuple 1 nonempty non-singleton Tuple better (8 LLVM lines vs. 144 B allocs) 4 times less (49 ns vs. 200 ns) similar (33 ms vs. 62 ms) 5 times less (772 kB vs. 4 MB)
unrolled_flatmap(Iterators.reverse, itr) Tuple(Iterators.flatmap(Iterators.reverse, itr)) Tuple 2 identical nonempty singleton Tuples better (optimized out vs. 96 B allocs) 4 times less (40 ns vs. 190 ns) 2 times less (57 ms vs. 124 ms) 6 times less (872 kB vs. 5 MB)
unrolled_flatmap(Iterators.reverse, itr) Tuple(Iterators.flatmap(Iterators.reverse, itr)) Tuple 8 identical nonempty singleton Tuples better (optimized out vs. 96 B allocs) 7 times less (40 ns vs. 280 ns) similar (83 ms vs. 119 ms) 3 times less (1 MB vs. 5 MB)
unrolled_flatmap(Iterators.reverse, itr) Tuple(Iterators.flatmap(Iterators.reverse, itr)) Tuple 32 identical nonempty singleton Tuples better (optimized out vs. 128 B allocs) 13 times less (49 ns vs. 681 ns) similar (90 ms vs. 125 ms) 2 times less (2 MB vs. 5 MB)
unrolled_flatmap(Iterators.reverse, itr) Tuple(Iterators.flatmap(Iterators.reverse, itr)) Tuple 128 identical nonempty singleton Tuples better (optimized out vs. 160 B allocs) 43 times less (49 ns vs. 2 μs) similar (122 ms vs. 123 ms) similar (7 MB vs. 5 MB)
unrolled_flatmap(Iterators.reverse, itr) Tuple(Iterators.flatmap(Iterators.reverse, itr)) Tuple 2 identical nonempty non-singleton Tuples better (8 LLVM lines vs. 192 B allocs) 4 times less (49 ns vs. 240 ns) similar (39 ms vs. 70 ms) 2 times less (1 MB vs. 4 MB)
unrolled_flatmap(Iterators.reverse, itr) Tuple(Iterators.flatmap(Iterators.reverse, itr)) Tuple 8 identical nonempty non-singleton Tuples better (12 LLVM lines vs. 240 B allocs) 8 times less (49 ns vs. 400 ns) similar (71 ms vs. 73 ms) similar (3 MB vs. 5 MB)
unrolled_flatmap(Iterators.reverse, itr) Tuple(Iterators.flatmap(Iterators.reverse, itr)) Tuple 32 identical nonempty non-singleton Tuples better (36 LLVM lines vs. 800 B allocs) 19 times less (60 ns vs. 1 μs) similar (88 ms vs. 77 ms) 2 times more (9 MB vs. 4 MB)
unrolled_flatmap(Iterators.reverse, itr) Tuple(Iterators.flatmap(Iterators.reverse, itr)) Tuple 128 identical nonempty non-singleton Tuples better (132 LLVM lines vs. 3 kB allocs) 50 times less (80 ns vs. 4 μs) 3 times more (250 ms vs. 72 ms) 10 times more (47 MB vs. 4 MB)
unrolled_flatmap(Iterators.reverse, itr) Tuple(Iterators.flatmap(Iterators.reverse, itr)) Tuple 2 empty & nonempty singleton Tuples better (optimized out vs. 144 B allocs) 8 times less (40 ns vs. 340 ns) 2 times less (55 ms vs. 136 ms) 7 times less (1008 kB vs. 7 MB)
unrolled_flatmap(Iterators.reverse, itr) Tuple(Iterators.flatmap(Iterators.reverse, itr)) Tuple 8 empty & nonempty singleton Tuples better (optimized out vs. 2 kB allocs) 115 times less (49 ns vs. 6 μs) 3 times less (125 ms vs. 404 ms) 12 times less (2 MB vs. 30 MB)
unrolled_flatmap(Iterators.reverse, itr) Tuple(Iterators.flatmap(Iterators.reverse, itr)) Tuple 32 empty & nonempty singleton Tuples better (optimized out vs. 15 kB allocs) 749 times less (40 ns vs. 30 μs) similar (273 ms vs. 513 ms) 3 times less (8 MB vs. 33 MB)
unrolled_flatmap(Iterators.reverse, itr) Tuple(Iterators.flatmap(Iterators.reverse, itr)) Tuple 128 empty & nonempty singleton Tuples better (optimized out vs. 55 kB allocs) 2015 times less (49 ns vs. 99 μs) similar (422 ms vs. 455 ms) similar (24 MB vs. 33 MB)
unrolled_flatmap(Iterators.reverse, itr) Tuple(Iterators.flatmap(Iterators.reverse, itr)) Tuple 2 nonempty singleton Tuples better (optimized out vs. 240 B allocs) 9 times less (49 ns vs. 450 ns) 5 times less (56 ms vs. 279 ms) 17 times less (1 MB vs. 17 MB)
unrolled_flatmap(Iterators.reverse, itr) Tuple(Iterators.flatmap(Iterators.reverse, itr)) Tuple 8 nonempty singleton Tuples better (optimized out vs. 3 kB allocs) 85 times less (49 ns vs. 4 μs) 3 times less (108 ms vs. 346 ms) 9 times less (3 MB vs. 24 MB)
unrolled_flatmap(Iterators.reverse, itr) Tuple(Iterators.flatmap(Iterators.reverse, itr)) Tuple 32 nonempty singleton Tuples better (optimized out vs. 15 kB allocs) 581 times less (49 ns vs. 28 μs) similar (227 ms vs. 436 ms) 3 times less (8 MB vs. 26 MB)
unrolled_flatmap(Iterators.reverse, itr) Tuple(Iterators.flatmap(Iterators.reverse, itr)) Tuple 128 nonempty singleton Tuples better (optimized out vs. 55 kB allocs) 1997 times less (49 ns vs. 98 μs) similar (436 ms vs. 412 ms) similar (24 MB vs. 26 MB)
unrolled_flatmap(Iterators.reverse, itr) Tuple(Iterators.flatmap(Iterators.reverse, itr)) Tuple 2 nonempty non-singleton Tuples better (13 LLVM lines vs. 352 B allocs) 9 times less (49 ns vs. 450 ns) 2 times less (40 ms vs. 91 ms) 3 times less (2 MB vs. 6 MB)
unrolled_flatmap(Iterators.reverse, itr) Tuple(Iterators.flatmap(Iterators.reverse, itr)) Tuple 8 nonempty non-singleton Tuples better (59 LLVM lines vs. 9 kB allocs) 62 times less (60 ns vs. 4 μs) similar (89 ms vs. 150 ms) similar (6 MB vs. 7 MB)
unrolled_flatmap(Iterators.reverse, itr) Tuple(Iterators.flatmap(Iterators.reverse, itr)) Tuple 32 nonempty non-singleton Tuples better (291 LLVM lines vs. 229 kB allocs) 350 times less (100 ns vs. 35 μs) similar (303 ms vs. 238 ms) 5 times more (48 MB vs. 9 MB)
unrolled_flatmap(Iterators.reverse, itr) Tuple(Iterators.flatmap(Iterators.reverse, itr)) Tuple 128 nonempty non-singleton Tuples better (955 LLVM lines vs. 3 MB allocs) 938 times less (401 ns vs. 376 μs) 4 times more (1 s vs. 236 ms) 18 times more (222 MB vs. 12 MB)
unrolled_product(itr, itr) Tuple(Iterators.product(itr, itr)) Tuple 1 empty singleton Tuple better (optimized out vs. 80 B allocs) 3 times less (40 ns vs. 150 ns) similar (82 ms vs. 123 ms) 5 times less (3 MB vs. 15 MB)
unrolled_product(itr, itr) Tuple(Iterators.product(itr, itr)) Tuple 1 nonempty singleton Tuple better (optimized out vs. 80 B allocs) 3 times less (49 ns vs. 150 ns) similar (83 ms vs. 133 ms) 5 times less (3 MB vs. 15 MB)
unrolled_product(itr, itr) Tuple(Iterators.product(itr, itr)) Tuple 1 nonempty non-singleton Tuple better (10 LLVM lines vs. 160 B allocs) 3 times less (60 ns vs. 180 ns) similar (81 ms vs. 130 ms) 6 times less (3 MB vs. 17 MB)
unrolled_product(itr, itr) Tuple(Iterators.product(itr, itr)) Tuple 2 identical nonempty singleton Tuples better (optimized out vs. 80 B allocs) 4 times less (49 ns vs. 200 ns) similar (119 ms vs. 145 ms) 5 times less (3 MB vs. 16 MB)
unrolled_product(itr, itr) Tuple(Iterators.product(itr, itr)) Tuple 8 identical nonempty singleton Tuples better (optimized out vs. 80 B allocs) 22 times less (49 ns vs. 1 μs) similar (242 ms vs. 148 ms) similar (12 MB vs. 16 MB)
unrolled_product(itr, itr) Tuple(Iterators.product(itr, itr)) Tuple 32 identical nonempty singleton Tuples better (optimized out vs. 8 kB allocs) 402 times less (40 ns vs. 16 μs) 41 times more (6 s vs. 138 ms) 9 times more (152 MB vs. 16 MB)
unrolled_product(itr, itr) Tuple(Iterators.product(itr, itr)) Tuple 2 identical nonempty non-singleton Tuples better (19 LLVM lines vs. 352 B allocs) 5 times less (60 ns vs. 300 ns) similar (100 ms vs. 129 ms) 5 times less (3 MB vs. 16 MB)
unrolled_product(itr, itr) Tuple(Iterators.product(itr, itr)) Tuple 8 identical nonempty non-singleton Tuples better (246 LLVM lines vs. 4 kB allocs) 28 times less (89 ns vs. 3 μs) 2 times more (261 ms vs. 127 ms) similar (13 MB vs. 16 MB)
unrolled_product(itr, itr) Tuple(Iterators.product(itr, itr)) Tuple 32 identical nonempty non-singleton Tuples better (4026 LLVM lines vs. 72 kB allocs) 33 times less (1 μs vs. 39 μs) 50 times more (7 s vs. 131 ms) 10 times more (173 MB vs. 16 MB)
unrolled_product(itr, itr) Tuple(Iterators.product(itr, itr)) Tuple 2 empty & nonempty singleton Tuples better (optimized out vs. 112 B allocs) 6 times less (49 ns vs. 330 ns) similar (113 ms vs. 176 ms) 6 times less (3 MB vs. 21 MB)
unrolled_product(itr, itr) Tuple(Iterators.product(itr, itr)) Tuple 8 empty & nonempty singleton Tuples better (optimized out vs. 592 B allocs) 85 times less (40 ns vs. 3 μs) similar (228 ms vs. 176 ms) similar (12 MB vs. 21 MB)
unrolled_product(itr, itr) Tuple(Iterators.product(itr, itr)) Tuple 32 empty & nonempty singleton Tuples better (optimized out vs. 16 kB allocs) 1422 times less (40 ns vs. 57 μs) 27 times more (5 s vs. 178 ms) 7 times more (158 MB vs. 21 MB)
unrolled_product(itr, itr) Tuple(Iterators.product(itr, itr)) Tuple 2 nonempty singleton Tuples better (optimized out vs. 112 B allocs) 6 times less (49 ns vs. 320 ns) similar (114 ms vs. 157 ms) 6 times less (3 MB vs. 21 MB)
unrolled_product(itr, itr) Tuple(Iterators.product(itr, itr)) Tuple 8 nonempty singleton Tuples better (optimized out vs. 592 B allocs) 175 times less (40 ns vs. 7 μs) similar (218 ms vs. 226 ms) similar (12 MB vs. 23 MB)
unrolled_product(itr, itr) Tuple(Iterators.product(itr, itr)) Tuple 32 nonempty singleton Tuples better (optimized out vs. 24 kB allocs) 2798 times less (40 ns vs. 112 μs) 12 times more (4 s vs. 359 ms) 5 times more (158 MB vs. 27 MB)
unrolled_product(itr, itr) Tuple(Iterators.product(itr, itr)) Tuple 2 nonempty non-singleton Tuples better (25 LLVM lines vs. 592 B allocs) 8 times less (60 ns vs. 530 ns) similar (96 ms vs. 166 ms) 6 times less (3 MB vs. 21 MB)
unrolled_product(itr, itr) Tuple(Iterators.product(itr, itr)) Tuple 8 nonempty non-singleton Tuples better (394 LLVM lines vs. 25 kB allocs) 41 times less (280 ns vs. 11 μs) similar (267 ms vs. 264 ms) similar (13 MB vs. 24 MB)
unrolled_product(itr, itr) Tuple(Iterators.product(itr, itr)) Tuple 32 nonempty non-singleton Tuples better (8189 LLVM lines vs. 1 MB allocs) 29 times less (10 μs vs. 304 μs) 12 times more (6 s vs. 475 ms) 5 times more (175 MB vs. 30 MB)
unrolled_product(itr, itr, itr) Tuple(Iterators.product(itr, itr, itr)) Tuple 1 empty singleton Tuple better (optimized out vs. 80 B allocs) 4 times less (40 ns vs. 160 ns) similar (81 ms vs. 142 ms) 6 times less (3 MB vs. 17 MB)
unrolled_product(itr, itr, itr) Tuple(Iterators.product(itr, itr, itr)) Tuple 1 nonempty singleton Tuple better (optimized out vs. 80 B allocs) 3 times less (40 ns vs. 150 ns) similar (89 ms vs. 137 ms) 6 times less (3 MB vs. 17 MB)
unrolled_product(itr, itr, itr) Tuple(Iterators.product(itr, itr, itr)) Tuple 1 nonempty non-singleton Tuple better (12 LLVM lines vs. 160 B allocs) 3 times less (60 ns vs. 200 ns) similar (78 ms vs. 140 ms) 6 times less (3 MB vs. 19 MB)
unrolled_product(itr, itr, itr) Tuple(Iterators.product(itr, itr, itr)) Tuple 2 identical nonempty singleton Tuples better (optimized out vs. 80 B allocs) 5 times less (49 ns vs. 260 ns) similar (136 ms vs. 169 ms) 4 times less (4 MB vs. 18 MB)
unrolled_product(itr, itr, itr) Tuple(Iterators.product(itr, itr, itr)) Tuple 8 identical nonempty singleton Tuples better (optimized out vs. 4 kB allocs) 165 times less (49 ns vs. 8 μs) 18 times more (3 s vs. 162 ms) 4 times more (90 MB vs. 18 MB)
unrolled_product(itr, itr, itr) Tuple(Iterators.product(itr, itr, itr)) Tuple 2 identical nonempty non-singleton Tuples better (32 LLVM lines vs. 736 B allocs) 7 times less (60 ns vs. 460 ns) similar (125 ms vs. 156 ms) 4 times less (4 MB vs. 18 MB)
unrolled_product(itr, itr, itr) Tuple(Iterators.product(itr, itr, itr)) Tuple 8 identical nonempty non-singleton Tuples better (2716 LLVM lines vs. 44 kB allocs) 33 times less (601 ns vs. 20 μs) 24 times more (4 s vs. 148 ms) 5 times more (103 MB vs. 19 MB)
unrolled_product(itr, itr, itr) Tuple(Iterators.product(itr, itr, itr)) Tuple 2 empty & nonempty singleton Tuples better (optimized out vs. 144 B allocs) 15 times less (40 ns vs. 631 ns) similar (124 ms vs. 188 ms) 5 times less (4 MB vs. 23 MB)
unrolled_product(itr, itr, itr) Tuple(Iterators.product(itr, itr, itr)) Tuple 8 empty & nonempty singleton Tuples better (optimized out vs. 8 kB allocs) 831 times less (40 ns vs. 33 μs) 10 times more (2 s vs. 191 ms) 3 times more (93 MB vs. 24 MB)
unrolled_product(itr, itr, itr) Tuple(Iterators.product(itr, itr, itr)) Tuple 2 nonempty singleton Tuples better (optimized out vs. 144 B allocs) 16 times less (40 ns vs. 641 ns) similar (117 ms vs. 174 ms) 5 times less (4 MB vs. 24 MB)
unrolled_product(itr, itr, itr) Tuple(Iterators.product(itr, itr, itr)) Tuple 8 nonempty singleton Tuples better (optimized out vs. 8 kB allocs) 1648 times less (40 ns vs. 66 μs) 4 times more (2 s vs. 428 ms) 2 times more (93 MB vs. 32 MB)
unrolled_product(itr, itr, itr) Tuple(Iterators.product(itr, itr, itr)) Tuple 2 nonempty non-singleton Tuples better (59 LLVM lines vs. 1 kB allocs) 20 times less (60 ns vs. 1 μs) similar (116 ms vs. 198 ms) 5 times less (4 MB vs. 24 MB)
unrolled_product(itr, itr, itr) Tuple(Iterators.product(itr, itr, itr)) Tuple 8 nonempty non-singleton Tuples better (5538 LLVM lines vs. 234 kB allocs) 29 times less (5 μs vs. 137 μs) 4 times more (3 s vs. 625 ms) 3 times more (104 MB vs. 33 MB)
unrolled_cycle(itr, Val(3)) Tuple(Iterators.cycle(itr, 3)) Tuple 1 empty singleton Tuple better (optimized out vs. 64 B allocs) 4 times less (41 ns vs. 180 ns) similar (36 ms vs. 63 ms) 11 times less (422 kB vs. 5 MB)
unrolled_cycle(itr, Val(3)) Tuple(Iterators.cycle(itr, 3)) Tuple 1 nonempty singleton Tuple better (optimized out vs. 64 B allocs) 4 times less (40 ns vs. 180 ns) similar (37 ms vs. 68 ms) 11 times less (427 kB vs. 5 MB)
unrolled_cycle(itr, Val(3)) Tuple(Iterators.cycle(itr, 3)) Tuple 1 nonempty non-singleton Tuple better (12 LLVM lines vs. 160 B allocs) 5 times less (49 ns vs. 260 ns) similar (42 ms vs. 64 ms) 5 times less (1 MB vs. 5 MB)
unrolled_cycle(itr, Val(3)) Tuple(Iterators.cycle(itr, 3)) Tuple 2 identical nonempty singleton Tuples better (optimized out vs. 64 B allocs) 5 times less (40 ns vs. 220 ns) similar (39 ms vs. 69 ms) 11 times less (427 kB vs. 5 MB)
unrolled_cycle(itr, Val(3)) Tuple(Iterators.cycle(itr, 3)) Tuple 8 identical nonempty singleton Tuples better (optimized out vs. 64 B allocs) 12 times less (40 ns vs. 490 ns) similar (40 ms vs. 71 ms) 11 times less (429 kB vs. 5 MB)
unrolled_cycle(itr, Val(3)) Tuple(Iterators.cycle(itr, 3)) Tuple 32 identical nonempty singleton Tuples better (optimized out vs. 64 B allocs) 39 times less (40 ns vs. 2 μs) similar (87 ms vs. 76 ms) 3 times less (1 MB vs. 5 MB)
unrolled_cycle(itr, Val(3)) Tuple(Iterators.cycle(itr, 3)) Tuple 128 identical nonempty singleton Tuples better (optimized out vs. 64 B allocs) 144 times less (40 ns vs. 6 μs) similar (106 ms vs. 73 ms) similar (3 MB vs. 5 MB)
unrolled_cycle(itr, Val(3)) Tuple(Iterators.cycle(itr, 3)) Tuple 2 identical nonempty non-singleton Tuples better (11 LLVM lines vs. 272 B allocs) 7 times less (49 ns vs. 360 ns) similar (38 ms vs. 62 ms) 5 times less (1 MB vs. 5 MB)
unrolled_cycle(itr, Val(3)) Tuple(Iterators.cycle(itr, 3)) Tuple 8 identical nonempty non-singleton Tuples better (37 LLVM lines vs. 848 B allocs) 19 times less (60 ns vs. 1 μs) similar (43 ms vs. 73 ms) 4 times less (1 MB vs. 6 MB)
unrolled_cycle(itr, Val(3)) Tuple(Iterators.cycle(itr, 3)) Tuple 32 identical nonempty non-singleton Tuples better (229 LLVM lines vs. 3 kB allocs) 64 times less (80 ns vs. 5 μs) similar (109 ms vs. 93 ms) similar (11 MB vs. 6 MB)
unrolled_cycle(itr, Val(3)) Tuple(Iterators.cycle(itr, 3)) Tuple 128 identical nonempty non-singleton Tuples better (260 LLVM lines vs. 12 kB allocs) 211 times less (220 ns vs. 46 μs) 4 times more (376 ms vs. 82 ms) 7 times more (39 MB vs. 5 MB)
unrolled_cycle(itr, Val(3)) Tuple(Iterators.cycle(itr, 3)) Tuple 2 empty & nonempty singleton Tuples better (optimized out vs. 112 B allocs) 5 times less (49 ns vs. 250 ns) similar (37 ms vs. 68 ms) 13 times less (427 kB vs. 6 MB)
unrolled_cycle(itr, Val(3)) Tuple(Iterators.cycle(itr, 3)) Tuple 8 empty & nonempty singleton Tuples better (optimized out vs. 256 B allocs) 16 times less (40 ns vs. 671 ns) similar (42 ms vs. 74 ms) 13 times less (429 kB vs. 6 MB)
unrolled_cycle(itr, Val(3)) Tuple(Iterators.cycle(itr, 3)) Tuple 32 empty & nonempty singleton Tuples better (optimized out vs. 848 B allocs) 58 times less (40 ns vs. 2 μs) similar (79 ms vs. 72 ms) 4 times less (1 MB vs. 6 MB)
unrolled_cycle(itr, Val(3)) Tuple(Iterators.cycle(itr, 3)) Tuple 128 empty & nonempty singleton Tuples better (optimized out vs. 3 kB allocs) 223 times less (40 ns vs. 9 μs) similar (94 ms vs. 68 ms) similar (3 MB vs. 6 MB)
unrolled_cycle(itr, Val(3)) Tuple(Iterators.cycle(itr, 3)) Tuple 2 nonempty singleton Tuples better (optimized out vs. 112 B allocs) 6 times less (40 ns vs. 250 ns) similar (36 ms vs. 65 ms) 13 times less (427 kB vs. 6 MB)
unrolled_cycle(itr, Val(3)) Tuple(Iterators.cycle(itr, 3)) Tuple 8 nonempty singleton Tuples better (optimized out vs. 256 B allocs) 30 times less (40 ns vs. 1 μs) 2 times less (35 ms vs. 80 ms) 13 times less (429 kB vs. 6 MB)
unrolled_cycle(itr, Val(3)) Tuple(Iterators.cycle(itr, 3)) Tuple 32 nonempty singleton Tuples better (optimized out vs. 848 B allocs) 172 times less (40 ns vs. 7 μs) similar (74 ms vs. 95 ms) 4 times less (1 MB vs. 6 MB)
unrolled_cycle(itr, Val(3)) Tuple(Iterators.cycle(itr, 3)) Tuple 128 nonempty singleton Tuples better (optimized out vs. 3 kB allocs) 555 times less (40 ns vs. 22 μs) similar (93 ms vs. 94 ms) similar (3 MB vs. 6 MB)
unrolled_cycle(itr, Val(3)) Tuple(Iterators.cycle(itr, 3)) Tuple 2 nonempty non-singleton Tuples better (19 LLVM lines vs. 528 B allocs) 6 times less (60 ns vs. 400 ns) similar (38 ms vs. 76 ms) 5 times less (1 MB vs. 6 MB)
unrolled_cycle(itr, Val(3)) Tuple(Iterators.cycle(itr, 3)) Tuple 8 nonempty non-singleton Tuples better (61 LLVM lines vs. 6 kB allocs) 43 times less (60 ns vs. 3 μs) 2 times less (44 ms vs. 99 ms) 4 times less (1 MB vs. 6 MB)
unrolled_cycle(itr, Val(3)) Tuple(Iterators.cycle(itr, 3)) Tuple 32 nonempty non-singleton Tuples better (212 LLVM lines vs. 119 kB allocs) 90 times less (240 ns vs. 22 μs) similar (130 ms vs. 114 ms) similar (11 MB vs. 6 MB)
unrolled_cycle(itr, Val(3)) Tuple(Iterators.cycle(itr, 3)) Tuple 128 nonempty non-singleton Tuples better (1436 LLVM lines vs. 2 MB allocs) 377 times less (872 ns vs. 330 μs) 6 times more (804 ms vs. 118 ms) 4 times more (39 MB vs. 8 MB)
unrolled_partition(itr, Val(3)) Tuple(Iterators.map(Tuple, Iterators.partition(itr, 3))) Tuple 1 empty singleton Tuple better (optimized out vs. 320 B allocs) 23 times less (49 ns vs. 1 μs) 2 times less (45 ms vs. 126 ms) 17 times less (658 kB vs. 11 MB)
unrolled_partition(itr, Val(3)) Tuple(Iterators.map(Tuple, Iterators.partition(itr, 3))) Tuple 1 nonempty singleton Tuple better (optimized out vs. 320 B allocs) 27 times less (40 ns vs. 1 μs) 2 times less (48 ms vs. 133 ms) 17 times less (688 kB vs. 12 MB)
unrolled_partition(itr, Val(3)) Tuple(Iterators.map(Tuple, Iterators.partition(itr, 3))) Tuple 1 nonempty non-singleton Tuple better (8 LLVM lines vs. 400 B allocs) 26 times less (49 ns vs. 1 μs) 2 times less (54 ms vs. 142 ms) 13 times less (900 kB vs. 12 MB)
unrolled_partition(itr, Val(3)) Tuple(Iterators.map(Tuple, Iterators.partition(itr, 3))) Tuple 2 identical nonempty singleton Tuples better (optimized out vs. 320 B allocs) 22 times less (49 ns vs. 1 μs) 2 times less (52 ms vs. 146 ms) 20 times less (560 kB vs. 11 MB)
unrolled_partition(itr, Val(3)) Tuple(Iterators.map(Tuple, Iterators.partition(itr, 3))) Tuple 8 identical nonempty singleton Tuples better (optimized out vs. 592 B allocs) 32 times less (49 ns vs. 2 μs) 3 times less (66 ms vs. 234 ms) 21 times less (926 kB vs. 20 MB)
unrolled_partition(itr, Val(3)) Tuple(Iterators.map(Tuple, Iterators.partition(itr, 3))) Tuple 32 identical nonempty singleton Tuples better (optimized out vs. 1 kB allocs) 54 times less (49 ns vs. 3 μs) 2 times less (115 ms vs. 249 ms) 11 times less (2 MB vs. 20 MB)
unrolled_partition(itr, Val(3)) Tuple(Iterators.map(Tuple, Iterators.partition(itr, 3))) Tuple 128 identical nonempty singleton Tuples better (optimized out vs. 3 kB allocs) 170 times less (40 ns vs. 7 μs) similar (254 ms vs. 240 ms) 4 times less (5 MB vs. 20 MB)
unrolled_partition(itr, Val(3)) Tuple(Iterators.map(Tuple, Iterators.partition(itr, 3))) Tuple 2 identical nonempty non-singleton Tuples better (8 LLVM lines vs. 496 B allocs) 24 times less (49 ns vs. 1 μs) 3 times less (45 ms vs. 137 ms) 14 times less (795 kB vs. 12 MB)
unrolled_partition(itr, Val(3)) Tuple(Iterators.map(Tuple, Iterators.partition(itr, 3))) Tuple 8 identical nonempty non-singleton Tuples better (12 LLVM lines vs. 1 kB allocs) 39 times less (49 ns vs. 2 μs) 4 times less (51 ms vs. 235 ms) 12 times less (2 MB vs. 20 MB)
unrolled_partition(itr, Val(3)) Tuple(Iterators.map(Tuple, Iterators.partition(itr, 3))) Tuple 32 identical nonempty non-singleton Tuples better (36 LLVM lines vs. 4 kB allocs) 62 times less (60 ns vs. 4 μs) 3 times less (76 ms vs. 256 ms) 5 times less (4 MB vs. 20 MB)
unrolled_partition(itr, Val(3)) Tuple(Iterators.map(Tuple, Iterators.partition(itr, 3))) Tuple 128 identical nonempty non-singleton Tuples better (132 LLVM lines vs. 14 kB allocs) 122 times less (89 ns vs. 11 μs) 2 times less (131 ms vs. 303 ms) similar (13 MB vs. 20 MB)
unrolled_partition(itr, Val(3)) Tuple(Iterators.map(Tuple, Iterators.partition(itr, 3))) Tuple 2 empty & nonempty singleton Tuples better (optimized out vs. 368 B allocs) 26 times less (49 ns vs. 1 μs) 3 times less (46 ms vs. 149 ms) 18 times less (560 kB vs. 10 MB)
unrolled_partition(itr, Val(3)) Tuple(Iterators.map(Tuple, Iterators.partition(itr, 3))) Tuple 8 empty & nonempty singleton Tuples better (optimized out vs. 752 B allocs) 47 times less (40 ns vs. 2 μs) 4 times less (67 ms vs. 332 ms) 31 times less (926 kB vs. 29 MB)
unrolled_partition(itr, Val(3)) Tuple(Iterators.map(Tuple, Iterators.partition(itr, 3))) Tuple 32 empty & nonempty singleton Tuples better (optimized out vs. 2 kB allocs) 588 times less (40 ns vs. 24 μs) 3 times less (103 ms vs. 409 ms) 21 times less (2 MB vs. 36 MB)
unrolled_partition(itr, Val(3)) Tuple(Iterators.map(Tuple, Iterators.partition(itr, 3))) Tuple 128 empty & nonempty singleton Tuples better (optimized out vs. 5 kB allocs) 1953 times less (40 ns vs. 78 μs) 2 times less (197 ms vs. 486 ms) 8 times less (5 MB vs. 43 MB)
unrolled_partition(itr, Val(3)) Tuple(Iterators.map(Tuple, Iterators.partition(itr, 3))) Tuple 2 nonempty singleton Tuples better (optimized out vs. 368 B allocs) 36 times less (40 ns vs. 1 μs) 3 times less (44 ms vs. 139 ms) 19 times less (560 kB vs. 10 MB)
unrolled_partition(itr, Val(3)) Tuple(Iterators.map(Tuple, Iterators.partition(itr, 3))) Tuple 8 nonempty singleton Tuples better (optimized out vs. 832 B allocs) 46 times less (49 ns vs. 2 μs) 5 times less (55 ms vs. 311 ms) 30 times less (926 kB vs. 28 MB)
unrolled_partition(itr, Val(3)) Tuple(Iterators.map(Tuple, Iterators.partition(itr, 3))) Tuple 32 nonempty singleton Tuples better (optimized out vs. 2 kB allocs) 486 times less (49 ns vs. 24 μs) 5 times less (95 ms vs. 488 ms) 25 times less (2 MB vs. 43 MB)
unrolled_partition(itr, Val(3)) Tuple(Iterators.map(Tuple, Iterators.partition(itr, 3))) Tuple 128 nonempty singleton Tuples better (optimized out vs. 7 kB allocs) 1540 times less (49 ns vs. 75 μs) 2 times less (201 ms vs. 492 ms) 8 times less (5 MB vs. 43 MB)
unrolled_partition(itr, Val(3)) Tuple(Iterators.map(Tuple, Iterators.partition(itr, 3))) Tuple 2 nonempty non-singleton Tuples better (11 LLVM lines vs. 624 B allocs) 29 times less (49 ns vs. 1 μs) 3 times less (45 ms vs. 162 ms) 13 times less (821 kB vs. 11 MB)
unrolled_partition(itr, Val(3)) Tuple(Iterators.map(Tuple, Iterators.partition(itr, 3))) Tuple 8 nonempty non-singleton Tuples better (29 LLVM lines vs. 4 kB allocs) 44 times less (60 ns vs. 3 μs) 6 times less (54 ms vs. 350 ms) 17 times less (2 MB vs. 28 MB)
unrolled_partition(itr, Val(3)) Tuple(Iterators.map(Tuple, Iterators.partition(itr, 3))) Tuple 32 nonempty non-singleton Tuples better (93 LLVM lines vs. 49 kB allocs) 178 times less (80 ns vs. 14 μs) 5 times less (82 ms vs. 477 ms) 9 times less (4 MB vs. 36 MB)
unrolled_partition(itr, Val(3)) Tuple(Iterators.map(Tuple, Iterators.partition(itr, 3))) Tuple 128 nonempty non-singleton Tuples better (556 LLVM lines vs. 564 kB allocs) 259 times less (371 ns vs. 96 μs) 3 times less (210 ms vs. 795 ms) 2 times less (13 MB vs. 36 MB)

Nested Unrolled Functions

Unrolled Expression Reference Expression Itr Type Itr Length Itr Contents Optimization Run Time Compilation Time Total Allocations
unrolled_any((x->unrolled_sum(x) > 7), itr3) any((x->sum(x) > 7), itr3) Tuple 1 nonempty non-singleton Tuple similar (9 LLVM lines) similar (49 ns vs. 49 ns) similar (38 ms vs. 47 ms) 3 times less (482 kB vs. 2 MB)
unrolled_any((x->unrolled_sum(x) > 7), itr3) any((x->sum(x) > 7), itr3) Tuple 2 identical nonempty non-singleton Tuples similar (13 LLVM lines) similar (40 ns vs. 49 ns) similar (38 ms vs. 49 ms) 3 times less (519 kB vs. 2 MB)
unrolled_any((x->unrolled_sum(x) > 7), itr3) any((x->sum(x) > 7), itr3) Tuple 8 identical nonempty non-singleton Tuples similar (12 LLVM lines) similar (49 ns vs. 49 ns) similar (60 ms vs. 51 ms) 2 times less (806 kB vs. 2 MB)
unrolled_any((x->unrolled_sum(x) > 7), itr3) any((x->sum(x) > 7), itr3) Tuple 32 identical nonempty non-singleton Tuples similar (12 LLVM lines) similar (49 ns vs. 60 ns) similar (66 ms vs. 55 ms) similar (2 MB vs. 2 MB)
unrolled_any((x->unrolled_sum(x) > 7), itr3) any((x->sum(x) > 7), itr3) Tuple 128 identical nonempty non-singleton Tuples similar (12 LLVM lines) similar (60 ns vs. 80 ns) similar (94 ms vs. 61 ms) 2 times more (5 MB vs. 2 MB)
unrolled_any((x->unrolled_sum(x) > 7), itr3) any((x->sum(x) > 7), itr3) Tuple 2 nonempty non-singleton Tuples similar (22 LLVM lines) similar (49 ns vs. 49 ns) similar (41 ms vs. 49 ms) 2 times less (907 kB vs. 2 MB)
unrolled_any((x->unrolled_sum(x) > 7), itr3) any((x->sum(x) > 7), itr3) Tuple 8 nonempty non-singleton Tuples similar (81 LLVM lines) similar (49 ns vs. 49 ns) similar (89 ms vs. 86 ms) similar (4 MB vs. 5 MB)
unrolled_any((x->unrolled_sum(x) > 7), itr3) any((x->sum(x) > 7), itr3) Tuple 32 nonempty non-singleton Tuples similar (353 LLVM lines) 512 times less (49 ns vs. 25 μs) similar (127 ms vs. 106 ms) similar (7 MB vs. 7 MB)
unrolled_any((x->unrolled_sum(x) > 7), itr3) any((x->sum(x) > 7), itr3) Tuple 128 nonempty non-singleton Tuples better (1236 LLVM lines vs. 25 kB allocs) 38 times less (49 ns vs. 2 μs) 3 times more (268 ms vs. 82 ms) similar (12 MB vs. 6 MB)
unrolled_mapreduce(unrolled_sum, max, itr3) mapreduce(sum, max, itr3) Tuple 1 nonempty non-singleton Tuple similar (7 LLVM lines) similar (49 ns vs. 49 ns) similar (36 ms vs. 59 ms) 9 times less (745 kB vs. 7 MB)
unrolled_mapreduce(unrolled_sum, max, itr3) mapreduce(sum, max, itr3) Tuple 2 identical nonempty non-singleton Tuples similar (10 LLVM lines) similar (49 ns vs. 49 ns) 2 times less (30 ms vs. 63 ms) 11 times less (631 kB vs. 7 MB)
unrolled_mapreduce(unrolled_sum, max, itr3) mapreduce(sum, max, itr3) Tuple 8 identical nonempty non-singleton Tuples similar (28 LLVM lines) similar (49 ns vs. 50 ns) similar (58 ms vs. 68 ms) 3 times less (3 MB vs. 8 MB)
unrolled_mapreduce(unrolled_sum, max, itr3) mapreduce(sum, max, itr3) Tuple 32 identical nonempty non-singleton Tuples similar (8 LLVM lines) similar (49 ns vs. 49 ns) similar (63 ms vs. 83 ms) 3 times less (4 MB vs. 14 MB)
unrolled_mapreduce(unrolled_sum, max, itr3) mapreduce(sum, max, itr3) Tuple 128 identical nonempty non-singleton Tuples similar (8 LLVM lines) similar (60 ns vs. 80 ns) similar (89 ms vs. 66 ms) similar (9 MB vs. 7 MB)
unrolled_mapreduce(unrolled_sum, max, itr3) mapreduce(sum, max, itr3) Tuple 2 nonempty non-singleton Tuples similar (13 LLVM lines) similar (49 ns vs. 49 ns) similar (37 ms vs. 61 ms) 6 times less (1 MB vs. 7 MB)
unrolled_mapreduce(unrolled_sum, max, itr3) mapreduce(sum, max, itr3) Tuple 8 nonempty non-singleton Tuples similar (54 LLVM lines) similar (49 ns vs. 49 ns) similar (73 ms vs. 77 ms) 2 times less (4 MB vs. 11 MB)
unrolled_mapreduce(unrolled_sum, max, itr3) mapreduce(sum, max, itr3) Tuple 32 nonempty non-singleton Tuples similar (380 LLVM lines) similar (69 ns vs. 100 ns) similar (112 ms vs. 142 ms) 2 times less (8 MB vs. 23 MB)
unrolled_mapreduce(unrolled_sum, max, itr3) mapreduce(sum, max, itr3) Tuple 128 nonempty non-singleton Tuples better (908 LLVM lines vs. 521 kB allocs) 296 times less (170 ns vs. 50 μs) 2 times more (269 ms vs. 133 ms) similar (16 MB vs. 20 MB)
unrolled_applyat(unrolled_minimum, rand(1:length(itr3)), itr3) minimum(itr3[rand(1:length(itr3))]) Tuple 1 nonempty non-singleton Tuple similar (20 LLVM lines) similar (49 ns vs. 49 ns) similar (67 ms vs. 53 ms) similar (3 MB vs. 3 MB)
unrolled_applyat(unrolled_minimum, rand(1:length(itr3)), itr3) minimum(itr3[rand(1:length(itr3))]) Tuple 2 identical nonempty non-singleton Tuples similar (27 LLVM lines w/ switch) similar (50 ns vs. 49 ns) similar (67 ms vs. 53 ms) similar (3 MB vs. 3 MB)
unrolled_applyat(unrolled_minimum, rand(1:length(itr3)), itr3) minimum(itr3[rand(1:length(itr3))]) Tuple 8 identical nonempty non-singleton Tuples similar (57 LLVM lines w/ switch) similar (49 ns vs. 49 ns) similar (92 ms vs. 55 ms) similar (4 MB vs. 3 MB)
unrolled_applyat(unrolled_minimum, rand(1:length(itr3)), itr3) minimum(itr3[rand(1:length(itr3))]) Tuple 32 identical nonempty non-singleton Tuples similar (177 LLVM lines w/ switch) similar (50 ns vs. 49 ns) similar (99 ms vs. 52 ms) similar (6 MB vs. 3 MB)
unrolled_applyat(unrolled_minimum, rand(1:length(itr3)), itr3) minimum(itr3[rand(1:length(itr3))]) Tuple 128 identical nonempty non-singleton Tuples similar (657 LLVM lines w/ switch) similar (60 ns vs. 49 ns) 2 times more (150 ms vs. 53 ms) 5 times more (17 MB vs. 3 MB)
unrolled_applyat(unrolled_minimum, rand(1:length(itr3)), itr3) minimum(itr3[rand(1:length(itr3))]) Tuple 2 nonempty non-singleton Tuples better (34 LLVM lines w/ switch vs. 64 B allocs) similar (49 ns vs. 89 ns) similar (67 ms vs. 53 ms) similar (3 MB vs. 3 MB)
unrolled_applyat(unrolled_minimum, rand(1:length(itr3)), itr3) minimum(itr3[rand(1:length(itr3))]) Tuple 8 nonempty non-singleton Tuples better (109 LLVM lines w/ switch vs. 240 B allocs) 2 times less (49 ns vs. 100 ns) similar (108 ms vs. 55 ms) 2 times more (7 MB vs. 3 MB)
unrolled_applyat(unrolled_minimum, rand(1:length(itr3)), itr3) minimum(itr3[rand(1:length(itr3))]) Tuple 32 nonempty non-singleton Tuples better (547 LLVM lines w/ switch vs. 1 kB allocs) 2 times less (60 ns vs. 120 ns) 2 times more (152 ms vs. 54 ms) 3 times more (12 MB vs. 3 MB)
unrolled_applyat(unrolled_minimum, rand(1:length(itr3)), itr3) minimum(itr3[rand(1:length(itr3))]) Tuple 128 nonempty non-singleton Tuples better (1924 LLVM lines w/ switch vs. 4 kB allocs) 3 times less (120 ns vs. 371 ns) 4 times more (234 ms vs. 56 ms) 8 times more (25 MB vs. 3 MB)
unrolled_foreach(((x1, x2)->@assert(unrolled_all(unrolled_map(==, x1, x2)))), itr1, itr2) foreach(((x1, x2)->@assert(all(map(==, x1, x2)))), itr1, itr2) Tuple 1 singleton Tuple similar (optimized out) similar (49 ns vs. 49 ns) 2 times less (58 ms vs. 147 ms) 33 times less (284 kB vs. 9 MB)
unrolled_foreach(((x1, x2)->@assert(unrolled_all(unrolled_map(==, x1, x2)))), itr1, itr2) foreach(((x1, x2)->@assert(all(map(==, x1, x2)))), itr1, itr2) Tuple 2 identical singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) 2 times less (58 ms vs. 154 ms) 32 times less (315 kB vs. 10 MB)
unrolled_foreach(((x1, x2)->@assert(unrolled_all(unrolled_map(==, x1, x2)))), itr1, itr2) foreach(((x1, x2)->@assert(all(map(==, x1, x2)))), itr1, itr2) Tuple 8 identical singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (90 ms vs. 154 ms) 10 times less (1006 kB vs. 10 MB)
unrolled_foreach(((x1, x2)->@assert(unrolled_all(unrolled_map(==, x1, x2)))), itr1, itr2) foreach(((x1, x2)->@assert(all(map(==, x1, x2)))), itr1, itr2) Tuple 32 identical singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (91 ms vs. 153 ms) 9 times less (1 MB vs. 10 MB)
unrolled_foreach(((x1, x2)->@assert(unrolled_all(unrolled_map(==, x1, x2)))), itr1, itr2) foreach(((x1, x2)->@assert(all(map(==, x1, x2)))), itr1, itr2) Tuple 128 identical singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (97 ms vs. 157 ms) 6 times less (1 MB vs. 10 MB)
unrolled_foreach(((x1, x2)->@assert(unrolled_all(unrolled_map(==, x1, x2)))), itr1, itr2) foreach(((x1, x2)->@assert(all(map(==, x1, x2)))), itr1, itr2) Tuple 2 singleton Tuples better (optimized out vs. 8 LLVM lines w/ Const) similar (40 ns vs. 69 ns) 2 times less (79 ms vs. 216 ms) 12 times less (1 MB vs. 14 MB)
unrolled_foreach(((x1, x2)->@assert(unrolled_all(unrolled_map(==, x1, x2)))), itr1, itr2) foreach(((x1, x2)->@assert(all(map(==, x1, x2)))), itr1, itr2) Tuple 8 singleton Tuples better (optimized out vs. type-unstable) 9 times less (49 ns vs. 480 ns) similar (166 ms vs. 220 ms) 3 times less (4 MB vs. 16 MB)
unrolled_foreach(((x1, x2)->@assert(unrolled_all(unrolled_map(==, x1, x2)))), itr1, itr2) foreach(((x1, x2)->@assert(all(map(==, x1, x2)))), itr1, itr2) Tuple 32 singleton Tuples better (optimized out vs. type-unstable) 58 times less (49 ns vs. 3 μs) similar (304 ms vs. 253 ms) 2 times less (8 MB vs. 18 MB)
unrolled_foreach(((x1, x2)->@assert(unrolled_all(unrolled_map(==, x1, x2)))), itr1, itr2) foreach(((x1, x2)->@assert(all(map(==, x1, x2)))), itr1, itr2) Tuple 128 singleton Tuples better (optimized out vs. type-unstable) 253 times less (40 ns vs. 10 μs) similar (388 ms vs. 265 ms) similar (11 MB vs. 19 MB)
unrolled_foreach(((x2, x3)->@assert(x2 == unrolled_map(Val, x3))), itr2, itr3) foreach(((x2, x3)->@assert(x2 == map(Val, x3))), itr2, itr3) Tuple 1 nonempty Tuple similar (46 LLVM lines w/ Const) similar (120 ns vs. 120 ns) 2 times less (58 ms vs. 129 ms) 19 times less (585 kB vs. 11 MB)
unrolled_foreach(((x2, x3)->@assert(x2 == unrolled_map(Val, x3))), itr2, itr3) foreach(((x2, x3)->@assert(x2 == map(Val, x3))), itr2, itr3) Tuple 2 identical nonempty Tuples similar (72 LLVM lines w/ Const) similar (190 ns vs. 200 ns) 2 times less (60 ms vs. 136 ms) 18 times less (628 kB vs. 12 MB)
unrolled_foreach(((x2, x3)->@assert(x2 == unrolled_map(Val, x3))), itr2, itr3) foreach(((x2, x3)->@assert(x2 == map(Val, x3))), itr2, itr3) Tuple 8 identical nonempty Tuples similar (228 LLVM lines w/ Const) similar (610 ns vs. 610 ns) similar (90 ms vs. 140 ms) 4 times less (2 MB vs. 12 MB)
unrolled_foreach(((x2, x3)->@assert(x2 == unrolled_map(Val, x3))), itr2, itr3) foreach(((x2, x3)->@assert(x2 == map(Val, x3))), itr2, itr3) Tuple 32 identical nonempty Tuples similar (852 LLVM lines w/ Const) similar (2 μs vs. 2 μs) similar (124 ms vs. 141 ms) 2 times less (5 MB vs. 12 MB)
unrolled_foreach(((x2, x3)->@assert(x2 == unrolled_map(Val, x3))), itr2, itr3) foreach(((x2, x3)->@assert(x2 == map(Val, x3))), itr2, itr3) Tuple 128 identical nonempty Tuples similar (3348 LLVM lines w/ Const) similar (9 μs vs. 9 μs) similar (266 ms vs. 140 ms) similar (16 MB vs. 12 MB)
unrolled_foreach(((x2, x3)->@assert(x2 == unrolled_map(Val, x3))), itr2, itr3) foreach(((x2, x3)->@assert(x2 == map(Val, x3))), itr2, itr3) Tuple 2 nonempty Tuples better (83 LLVM lines w/ Const vs. 96 B allocs) similar (260 ns vs. 410 ns) 2 times less (64 ms vs. 172 ms) 12 times less (1 MB vs. 16 MB)
unrolled_foreach(((x2, x3)->@assert(x2 == unrolled_map(Val, x3))), itr2, itr3) foreach(((x2, x3)->@assert(x2 == map(Val, x3))), itr2, itr3) Tuple 8 nonempty Tuples better (382 LLVM lines w/ Const vs. 2 kB allocs) similar (2 μs vs. 3 μs) similar (135 ms vs. 205 ms) 3 times less (6 MB vs. 19 MB)
unrolled_foreach(((x2, x3)->@assert(x2 == unrolled_map(Val, x3))), itr2, itr3) foreach(((x2, x3)->@assert(x2 == map(Val, x3))), itr2, itr3) Tuple 32 nonempty Tuples better (1454 LLVM lines w/ Const vs. 38 kB allocs) similar (10 μs vs. 17 μs) similar (225 ms vs. 267 ms) similar (15 MB vs. 23 MB)
unrolled_foreach(((x2, x3)->@assert(x2 == unrolled_map(Val, x3))), itr2, itr3) foreach(((x2, x3)->@assert(x2 == map(Val, x3))), itr2, itr3) Tuple 128 nonempty Tuples better (5627 LLVM lines w/ Const vs. 527 kB allocs) 3 times less (36 μs vs. 110 μs) similar (469 ms vs. 256 ms) similar (33 MB vs. 24 MB)
unrolled_applyat(((x1, x2)->@assert(unrolled_all(unrolled_map(==, x1, x2)))), rand(1:length(itr1)), itr1, itr2) let n = rand(1:length(itr1)) @assert all(map(==, itr1[n], itr2[n])) end Tuple 1 singleton Tuple similar (17 LLVM lines w/ Const) similar (60 ns vs. 49 ns) similar (110 ms vs. 65 ms) similar (3 MB vs. 2 MB)
unrolled_applyat(((x1, x2)->@assert(unrolled_all(unrolled_map(==, x1, x2)))), rand(1:length(itr1)), itr1, itr2) let n = rand(1:length(itr1)) @assert all(map(==, itr1[n], itr2[n])) end Tuple 2 identical singleton Tuples similar (18 LLVM lines w/ Const) similar (49 ns vs. 49 ns) similar (111 ms vs. 65 ms) similar (3 MB vs. 2 MB)
unrolled_applyat(((x1, x2)->@assert(unrolled_all(unrolled_map(==, x1, x2)))), rand(1:length(itr1)), itr1, itr2) let n = rand(1:length(itr1)) @assert all(map(==, itr1[n], itr2[n])) end Tuple 8 identical singleton Tuples similar (18 LLVM lines w/ Const) similar (49 ns vs. 49 ns) similar (131 ms vs. 66 ms) 2 times more (4 MB vs. 2 MB)
unrolled_applyat(((x1, x2)->@assert(unrolled_all(unrolled_map(==, x1, x2)))), rand(1:length(itr1)), itr1, itr2) let n = rand(1:length(itr1)) @assert all(map(==, itr1[n], itr2[n])) end Tuple 32 identical singleton Tuples similar (18 LLVM lines w/ Const) similar (60 ns vs. 49 ns) 2 times more (135 ms vs. 65 ms) 3 times more (6 MB vs. 2 MB)
unrolled_applyat(((x1, x2)->@assert(unrolled_all(unrolled_map(==, x1, x2)))), rand(1:length(itr1)), itr1, itr2) let n = rand(1:length(itr1)) @assert all(map(==, itr1[n], itr2[n])) end Tuple 128 identical singleton Tuples similar (18 LLVM lines w/ Const) similar (49 ns vs. 49 ns) 2 times more (173 ms vs. 65 ms) 7 times more (15 MB vs. 2 MB)
unrolled_applyat(((x1, x2)->@assert(unrolled_all(unrolled_map(==, x1, x2)))), rand(1:length(itr1)), itr1, itr2) let n = rand(1:length(itr1)) @assert all(map(==, itr1[n], itr2[n])) end Tuple 2 singleton Tuples similar (18 LLVM lines w/ Const) similar (49 ns vs. 80 ns) similar (131 ms vs. 75 ms) 2 times more (4 MB vs. 2 MB)
unrolled_applyat(((x1, x2)->@assert(unrolled_all(unrolled_map(==, x1, x2)))), rand(1:length(itr1)), itr1, itr2) let n = rand(1:length(itr1)) @assert all(map(==, itr1[n], itr2[n])) end Tuple 8 singleton Tuples better (18 LLVM lines w/ Const vs. type-unstable) 2 times less (49 ns vs. 100 ns) 2 times more (206 ms vs. 80 ms) 3 times more (7 MB vs. 2 MB)
unrolled_applyat(((x1, x2)->@assert(unrolled_all(unrolled_map(==, x1, x2)))), rand(1:length(itr1)), itr1, itr2) let n = rand(1:length(itr1)) @assert all(map(==, itr1[n], itr2[n])) end Tuple 32 singleton Tuples better (18 LLVM lines w/ Const vs. type-unstable) 2 times less (49 ns vs. 120 ns) 3 times more (342 ms vs. 86 ms) 4 times more (13 MB vs. 3 MB)
unrolled_applyat(((x1, x2)->@assert(unrolled_all(unrolled_map(==, x1, x2)))), rand(1:length(itr1)), itr1, itr2) let n = rand(1:length(itr1)) @assert all(map(==, itr1[n], itr2[n])) end Tuple 128 singleton Tuples better (18 LLVM lines w/ Const vs. 5 kB allocs) 2 times less (49 ns vs. 130 ns) 5 times more (511 ms vs. 92 ms) 8 times more (25 MB vs. 3 MB)
unrolled_applyat(((x2, x3)->@assert(x2 == unrolled_map(Val, x3))), rand(1:length(itr2)), itr2, itr3) let n = rand(1:length(itr2)) @assert itr2[n] == map(Val, itr3[n]) end Tuple 1 nonempty Tuple similar (59 LLVM lines w/ Const) similar (130 ns vs. 130 ns) similar (98 ms vs. 74 ms) similar (4 MB vs. 2 MB)
unrolled_applyat(((x2, x3)->@assert(x2 == unrolled_map(Val, x3))), rand(1:length(itr2)), itr2, itr3) let n = rand(1:length(itr2)) @assert itr2[n] == map(Val, itr3[n]) end Tuple 2 identical nonempty Tuples similar (89 LLVM lines w/ Const) similar (130 ns vs. 130 ns) similar (100 ms vs. 74 ms) similar (4 MB vs. 2 MB)
unrolled_applyat(((x2, x3)->@assert(x2 == unrolled_map(Val, x3))), rand(1:length(itr2)), itr2, itr3) let n = rand(1:length(itr2)) @assert itr2[n] == map(Val, itr3[n]) end Tuple 8 identical nonempty Tuples similar (263 LLVM lines w/ Const) similar (130 ns vs. 130 ns) similar (128 ms vs. 74 ms) 2 times more (5 MB vs. 2 MB)
unrolled_applyat(((x2, x3)->@assert(x2 == unrolled_map(Val, x3))), rand(1:length(itr2)), itr2, itr3) let n = rand(1:length(itr2)) @assert itr2[n] == map(Val, itr3[n]) end Tuple 32 identical nonempty Tuples similar (959 LLVM lines w/ Const) similar (140 ns vs. 130 ns) 2 times more (174 ms vs. 73 ms) 5 times more (11 MB vs. 2 MB)
unrolled_applyat(((x2, x3)->@assert(x2 == unrolled_map(Val, x3))), rand(1:length(itr2)), itr2, itr3) let n = rand(1:length(itr2)) @assert itr2[n] == map(Val, itr3[n]) end Tuple 128 identical nonempty Tuples similar (3743 LLVM lines w/ Const) similar (150 ns vs. 130 ns) 5 times more (397 ms vs. 75 ms) 15 times more (32 MB vs. 2 MB)
unrolled_applyat(((x2, x3)->@assert(x2 == unrolled_map(Val, x3))), rand(1:length(itr2)), itr2, itr3) let n = rand(1:length(itr2)) @assert itr2[n] == map(Val, itr3[n]) end Tuple 2 nonempty Tuples better (100 LLVM lines w/ Const vs. 64 B allocs) similar (131 ns vs. 180 ns) similar (107 ms vs. 81 ms) 2 times more (5 MB vs. 2 MB)
unrolled_applyat(((x2, x3)->@assert(x2 == unrolled_map(Val, x3))), rand(1:length(itr2)), itr2, itr3) let n = rand(1:length(itr2)) @assert itr2[n] == map(Val, itr3[n]) end Tuple 8 nonempty Tuples better (417 LLVM lines w/ Const vs. 224 B allocs) 2 times less (130 ns vs. 380 ns) 2 times more (190 ms vs. 86 ms) 3 times more (9 MB vs. 2 MB)
unrolled_applyat(((x2, x3)->@assert(x2 == unrolled_map(Val, x3))), rand(1:length(itr2)), itr2, itr3) let n = rand(1:length(itr2)) @assert itr2[n] == map(Val, itr3[n]) end Tuple 32 nonempty Tuples better (1568 LLVM lines w/ Const vs. 7 kB allocs) 2 times less (140 ns vs. 401 ns) 2 times more (278 ms vs. 99 ms) 6 times more (22 MB vs. 3 MB)
unrolled_applyat(((x2, x3)->@assert(x2 == unrolled_map(Val, x3))), rand(1:length(itr2)), itr2, itr3) let n = rand(1:length(itr2)) @assert itr2[n] == map(Val, itr3[n]) end Tuple 128 nonempty Tuples better (6043 LLVM lines w/ Const vs. 4 kB allocs) 3 times less (200 ns vs. 702 ns) 7 times more (630 ms vs. 82 ms) 23 times more (52 MB vs. 2 MB)

Recursive Unrolled Functions

Unrolled Expression Reference Expression Itr Type Itr Length Itr Contents Optimization Run Time Compilation Time Total Allocations
(map((x->if eltype(x) <: Tuple unrolled_sum(var"#self#", x) else length(x) end), (itr,)))[1] (map((x->if eltype(x) <: Tuple sum(var"#self#", x) else length(x) end), (itr,)))[1] Tuple 2 Tuples with 1 value similar (optimized out) similar (40 ns vs. 40 ns) similar (42 ms vs. 49 ms) 6 times less (228 kB vs. 1 MB)
(map((x->if eltype(x) <: Tuple unrolled_sum(var"#self#", x) else length(x) end), (itr,)))[1] (map((x->if eltype(x) <: Tuple sum(var"#self#", x) else length(x) end), (itr,)))[1] Tuple 2 Tuples with 4 values similar (optimized out) similar (40 ns vs. 49 ns) similar (43 ms vs. 49 ms) 5 times less (262 kB vs. 1 MB)
(map((x->if eltype(x) <: Tuple unrolled_sum(var"#self#", x) else length(x) end), (itr,)))[1] (map((x->if eltype(x) <: Tuple sum(var"#self#", x) else length(x) end), (itr,)))[1] Tuple 2 nested Tuples with 4 values at depth 3 similar (optimized out) similar (40 ns vs. 40 ns) similar (55 ms vs. 58 ms) 4 times less (705 kB vs. 3 MB)
(map((x->if eltype(x) <: Tuple unrolled_sum(var"#self#", x) else length(x) end), (itr,)))[1] (map((x->if eltype(x) <: Tuple sum(var"#self#", x) else length(x) end), (itr,)))[1] Tuple 2 Tuples with 16 values similar (optimized out) similar (40 ns vs. 40 ns) similar (44 ms vs. 51 ms) 5 times less (267 kB vs. 1 MB)
(map((x->if eltype(x) <: Tuple unrolled_sum(var"#self#", x) else length(x) end), (itr,)))[1] (map((x->if eltype(x) <: Tuple sum(var"#self#", x) else length(x) end), (itr,)))[1] Tuple 2 nested Tuples with 16 values at depth 3 similar (optimized out) similar (40 ns vs. 49 ns) similar (53 ms vs. 56 ms) 4 times less (739 kB vs. 3 MB)
(map((x->if eltype(x) <: Tuple unrolled_sum(var"#self#", x) else length(x) end), (itr,)))[1] (map((x->if eltype(x) <: Tuple sum(var"#self#", x) else length(x) end), (itr,)))[1] Tuple 2 nested Tuples with 16 values at depth 5 similar (optimized out) similar (40 ns vs. 49 ns) similar (53 ms vs. 60 ms) 4 times less (1 MB vs. 5 MB)
(map((x->if eltype(x) <: Tuple unrolled_sum(var"#self#", x) else length(x) end), (itr,)))[1] (map((x->if eltype(x) <: Tuple sum(var"#self#", x) else length(x) end), (itr,)))[1] Tuple 2 Tuples with 64 values similar (optimized out) similar (40 ns vs. 49 ns) similar (46 ms vs. 52 ms) 5 times less (268 kB vs. 1 MB)
(map((x->if eltype(x) <: Tuple unrolled_sum(var"#self#", x) else length(x) end), (itr,)))[1] (map((x->if eltype(x) <: Tuple sum(var"#self#", x) else length(x) end), (itr,)))[1] Tuple 2 nested Tuples with 64 values at depth 3 similar (optimized out) similar (40 ns vs. 49 ns) similar (53 ms vs. 56 ms) 4 times less (744 kB vs. 3 MB)
(map((x->if eltype(x) <: Tuple unrolled_sum(var"#self#", x) else length(x) end), (itr,)))[1] (map((x->if eltype(x) <: Tuple sum(var"#self#", x) else length(x) end), (itr,)))[1] Tuple 2 nested Tuples with 64 values at depth 5 similar (optimized out) similar (49 ns vs. 49 ns) similar (57 ms vs. 61 ms) 4 times less (1 MB vs. 5 MB)
(map((x->if eltype(x) <: Tuple unrolled_sum(var"#self#", x) else length(x) end), (itr,)))[1] (map((x->if eltype(x) <: Tuple sum(var"#self#", x) else length(x) end), (itr,)))[1] Tuple 2 nested Tuples with 64 values at depth 7 similar (optimized out) similar (40 ns vs. 49 ns) similar (56 ms vs. 66 ms) 4 times less (1 MB vs. 6 MB)
(map((x->if eltype(x) <: Tuple unrolled_sum(var"#self#", x) else unrolled_sum(x) end), (itr,)))[1] (map((x->if eltype(x) <: Tuple sum(var"#self#", x) else sum(x) end), (itr,)))[1] Tuple 2 Tuples with 1 value similar (10 LLVM lines) similar (49 ns vs. 49 ns) similar (52 ms vs. 56 ms) 3 times less (1018 kB vs. 4 MB)
(map((x->if eltype(x) <: Tuple unrolled_sum(var"#self#", x) else unrolled_sum(x) end), (itr,)))[1] (map((x->if eltype(x) <: Tuple sum(var"#self#", x) else sum(x) end), (itr,)))[1] Tuple 2 Tuples with 4 values similar (8 LLVM lines) similar (49 ns vs. 49 ns) similar (84 ms vs. 77 ms) 2 times less (3 MB vs. 8 MB)
(map((x->if eltype(x) <: Tuple unrolled_sum(var"#self#", x) else unrolled_sum(x) end), (itr,)))[1] (map((x->if eltype(x) <: Tuple sum(var"#self#", x) else sum(x) end), (itr,)))[1] Tuple 2 nested Tuples with 4 values at depth 3 similar (8 LLVM lines) similar (49 ns vs. 49 ns) similar (56 ms vs. 78 ms) 4 times less (2 MB vs. 11 MB)
(map((x->if eltype(x) <: Tuple unrolled_sum(var"#self#", x) else unrolled_sum(x) end), (itr,)))[1] (map((x->if eltype(x) <: Tuple sum(var"#self#", x) else sum(x) end), (itr,)))[1] Tuple 2 Tuples with 16 values better (8 LLVM lines vs. type-unstable) similar (49 ns vs. 70 ns) similar (87 ms vs. 80 ms) 2 times less (4 MB vs. 9 MB)
(map((x->if eltype(x) <: Tuple unrolled_sum(var"#self#", x) else unrolled_sum(x) end), (itr,)))[1] (map((x->if eltype(x) <: Tuple sum(var"#self#", x) else sum(x) end), (itr,)))[1] Tuple 2 nested Tuples with 16 values at depth 3 similar (8 LLVM lines) similar (49 ns vs. 49 ns) similar (93 ms vs. 91 ms) 2 times less (5 MB vs. 12 MB)
(map((x->if eltype(x) <: Tuple unrolled_sum(var"#self#", x) else unrolled_sum(x) end), (itr,)))[1] (map((x->if eltype(x) <: Tuple sum(var"#self#", x) else sum(x) end), (itr,)))[1] Tuple 2 nested Tuples with 16 values at depth 5 similar (8 LLVM lines) similar (49 ns vs. 50 ns) similar (70 ms vs. 136 ms) 6 times less (6 MB vs. 36 MB)
(map((x->if eltype(x) <: Tuple unrolled_sum(var"#self#", x) else unrolled_sum(x) end), (itr,)))[1] (map((x->if eltype(x) <: Tuple sum(var"#self#", x) else sum(x) end), (itr,)))[1] Tuple 2 Tuples with 64 values similar (7 LLVM lines) similar (60 ns vs. 60 ns) similar (114 ms vs. 75 ms) similar (7 MB vs. 6 MB)
(map((x->if eltype(x) <: Tuple unrolled_sum(var"#self#", x) else unrolled_sum(x) end), (itr,)))[1] (map((x->if eltype(x) <: Tuple sum(var"#self#", x) else sum(x) end), (itr,)))[1] Tuple 2 nested Tuples with 64 values at depth 3 better (7 LLVM lines vs. type-unstable) similar (60 ns vs. 69 ns) similar (111 ms vs. 94 ms) similar (8 MB vs. 13 MB)
(map((x->if eltype(x) <: Tuple unrolled_sum(var"#self#", x) else unrolled_sum(x) end), (itr,)))[1] (map((x->if eltype(x) <: Tuple sum(var"#self#", x) else sum(x) end), (itr,)))[1] Tuple 2 nested Tuples with 64 values at depth 5 similar (7 LLVM lines) similar (60 ns vs. 60 ns) similar (118 ms vs. 110 ms) similar (11 MB vs. 16 MB)
(map((x->if eltype(x) <: Tuple unrolled_sum(var"#self#", x) else unrolled_sum(x) end), (itr,)))[1] (map((x->if eltype(x) <: Tuple sum(var"#self#", x) else sum(x) end), (itr,)))[1] Tuple 2 nested Tuples with 64 values at depth 7 similar (7 LLVM lines) similar (60 ns vs. 60 ns) 2 times less (112 ms vs. 309 ms) 4 times less (17 MB vs. 78 MB)
(map((x->if eltype(x) <: Tuple unrolled_sum(var"#self#", x) + unrolled_sum(log ∘ var"#self#", x) else unrolled_sum(x) end), (itr,)))[1] (map((x->if eltype(x) <: Tuple sum(var"#self#", x) + sum(log ∘ var"#self#", x) else sum(x) end), (itr,)))[1] Tuple 2 Tuples with 1 value similar (17 LLVM lines) similar (69 ns vs. 69 ns) similar (54 ms vs. 70 ms) 3 times less (2 MB vs. 7 MB)
(map((x->if eltype(x) <: Tuple unrolled_sum(var"#self#", x) + unrolled_sum(log ∘ var"#self#", x) else unrolled_sum(x) end), (itr,)))[1] (map((x->if eltype(x) <: Tuple sum(var"#self#", x) + sum(log ∘ var"#self#", x) else sum(x) end), (itr,)))[1] Tuple 2 Tuples with 4 values similar (30 LLVM lines) similar (69 ns vs. 69 ns) similar (87 ms vs. 103 ms) 3 times less (4 MB vs. 12 MB)
(map((x->if eltype(x) <: Tuple unrolled_sum(var"#self#", x) + unrolled_sum(log ∘ var"#self#", x) else unrolled_sum(x) end), (itr,)))[1] (map((x->if eltype(x) <: Tuple sum(var"#self#", x) + sum(log ∘ var"#self#", x) else sum(x) end), (itr,)))[1] Tuple 2 nested Tuples with 4 values at depth 3 better (7 LLVM lines vs. 208 B allocs) similar (370 ns vs. 440 ns) 2 times less (72 ms vs. 192 ms) 4 times less (5 MB vs. 22 MB)
(map((x->if eltype(x) <: Tuple unrolled_sum(var"#self#", x) + unrolled_sum(log ∘ var"#self#", x) else unrolled_sum(x) end), (itr,)))[1] (map((x->if eltype(x) <: Tuple sum(var"#self#", x) + sum(log ∘ var"#self#", x) else sum(x) end), (itr,)))[1] Tuple 2 Tuples with 16 values better (7 LLVM lines vs. type-unstable) similar (80 ns vs. 80 ns) similar (97 ms vs. 105 ms) 2 times less (6 MB vs. 13 MB)
(map((x->if eltype(x) <: Tuple unrolled_sum(var"#self#", x) + unrolled_sum(log ∘ var"#self#", x) else unrolled_sum(x) end), (itr,)))[1] (map((x->if eltype(x) <: Tuple sum(var"#self#", x) + sum(log ∘ var"#self#", x) else sum(x) end), (itr,)))[1] Tuple 2 nested Tuples with 16 values at depth 3 better (7 LLVM lines vs. 592 B allocs) similar (430 ns vs. 561 ns) 2 times less (109 ms vs. 221 ms) 3 times less (8 MB vs. 26 MB)
(map((x->if eltype(x) <: Tuple unrolled_sum(var"#self#", x) + unrolled_sum(log ∘ var"#self#", x) else unrolled_sum(x) end), (itr,)))[1] (map((x->if eltype(x) <: Tuple sum(var"#self#", x) + sum(log ∘ var"#self#", x) else sum(x) end), (itr,)))[1] Tuple 2 nested Tuples with 16 values at depth 5 better (7 LLVM lines vs. 4 kB allocs) similar (5 μs vs. 7 μs) 4 times less (90 ms vs. 361 ms) 6 times less (6 MB vs. 40 MB)
(map((x->if eltype(x) <: Tuple unrolled_sum(var"#self#", x) + unrolled_sum(log ∘ var"#self#", x) else unrolled_sum(x) end), (itr,)))[1] (map((x->if eltype(x) <: Tuple sum(var"#self#", x) + sum(log ∘ var"#self#", x) else sum(x) end), (itr,)))[1] Tuple 2 Tuples with 64 values similar (7 LLVM lines) similar (100 ns vs. 130 ns) similar (153 ms vs. 101 ms) similar (11 MB vs. 9 MB)
(map((x->if eltype(x) <: Tuple unrolled_sum(var"#self#", x) + unrolled_sum(log ∘ var"#self#", x) else unrolled_sum(x) end), (itr,)))[1] (map((x->if eltype(x) <: Tuple sum(var"#self#", x) + sum(log ∘ var"#self#", x) else sum(x) end), (itr,)))[1] Tuple 2 nested Tuples with 64 values at depth 3 better (7 LLVM lines vs. 2 kB allocs) similar (570 ns vs. 681 ns) 2 times less (114 ms vs. 232 ms) 3 times less (7 MB vs. 27 MB)
(map((x->if eltype(x) <: Tuple unrolled_sum(var"#self#", x) + unrolled_sum(log ∘ var"#self#", x) else unrolled_sum(x) end), (itr,)))[1] (map((x->if eltype(x) <: Tuple sum(var"#self#", x) + sum(log ∘ var"#self#", x) else sum(x) end), (itr,)))[1] Tuple 2 nested Tuples with 64 values at depth 5 better (7 LLVM lines vs. 12 kB allocs) similar (6 μs vs. 9 μs) 3 times less (119 ms vs. 413 ms) 4 times less (10 MB vs. 44 MB)
(map((x->if eltype(x) <: Tuple unrolled_sum(var"#self#", x) + unrolled_sum(log ∘ var"#self#", x) else unrolled_sum(x) end), (itr,)))[1] (map((x->if eltype(x) <: Tuple sum(var"#self#", x) + sum(log ∘ var"#self#", x) else sum(x) end), (itr,)))[1] Tuple 2 nested Tuples with 64 values at depth 7 better (7 LLVM lines vs. 69 kB allocs) similar (85 μs vs. 116 μs) 5 times less (100 ms vs. 564 ms) 9 times less (8 MB vs. 81 MB)

Nested Unrolled Closures

Unrolled Expression Reference Expression Itr Type Itr Length Itr Contents Optimization Run Time Compilation Time Total Allocations
unrolled_reduce(((itr′, i)->Base.setindex(itr′, !(itr′[i]), i)), StaticOneTo(length(itr)); init = itr) reduce(((itr′, i)->Base.setindex(itr′, !(itr′[i]), i)), StaticOneTo(length(itr)); init = itr) Tuple 32 Bools similar (9 LLVM lines) 3 times less (60 ns vs. 230 ns) similar (146 ms vs. 164 ms) 2 times more (23 MB vs. 8 MB)
unrolled_reduce(((itr′, i)->Base.setindex(itr′, !(itr′[i]), i)), StaticOneTo(length(itr)); init = itr) reduce(((itr′, i)->Base.setindex(itr′, !(itr′[i]), i)), StaticOneTo(length(itr)); init = itr) Tuple 33 Bools better (591 LLVM lines vs. 4 kB allocs) similar (15 μs vs. 15 μs) similar (164 ms vs. 141 ms) similar (15 MB vs. 7 MB)
unrolled_reduce(((itr′, i)->Base.setindex(itr′, !(itr′[i]), i)), StaticOneTo(length(itr)); init = itr) reduce(((itr′, i)->Base.setindex(itr′, !(itr′[i]), i)), StaticOneTo(length(itr)); init = itr) StaticBitVector 256 Bools similar (519 LLVM lines) similar (3 μs vs. 4 μs) similar (129 ms vs. 126 ms) similar (8 MB vs. 7 MB)
unrolled_reduce(((itr′, i)->Base.setindex(itr′, !(itr′[i]), i)), StaticOneTo(length(itr)); init = itr) reduce(((itr′, i)->Base.setindex(itr′, !(itr′[i]), i)), StaticOneTo(length(itr)); init = itr) StaticBitVector 257 Bools similar (521 LLVM lines) similar (3 μs vs. 4 μs) similar (129 ms vs. 127 ms) similar (8 MB vs. 7 MB)
unrolled_reduce(((itr′, i)->unrolled_reduce(((itr′′, j)->Base.setindex(itr′′, !(itr′′[min(i, j)]), j)), StaticOneTo(length(itr′)); init = itr′)), StaticOneTo(length(itr)); init = itr) reduce(((itr′, i)->reduce(((itr′′, j)->Base.setindex(itr′′, !(itr′′[min(i, j)]), j)), StaticOneTo(length(itr′)); init = itr′)), StaticOneTo(length(itr)); init = itr) Tuple 32 Bools better (71 LLVM lines vs. 96 B allocs) 91 times less (60 ns vs. 5 μs) 2 times more (600 ms vs. 207 ms) 13 times more (177 MB vs. 13 MB)
unrolled_reduce(((itr′, i)->unrolled_reduce(((itr′′, j)->Base.setindex(itr′′, !(itr′′[min(i, j)]), j)), StaticOneTo(length(itr′)); init = itr′)), StaticOneTo(length(itr)); init = itr) reduce(((itr′, i)->reduce(((itr′′, j)->Base.setindex(itr′′, !(itr′′[min(i, j)]), j)), StaticOneTo(length(itr′)); init = itr′)), StaticOneTo(length(itr)); init = itr) Tuple 33 Bools fewer allocs (87 kB allocs vs. 136 kB allocs) similar (488 μs vs. 495 μs) similar (208 ms vs. 196 ms) similar (17 MB vs. 12 MB)
unrolled_reduce(((itr′, i)->unrolled_reduce(((itr′′, j)->Base.setindex(itr′′, !(itr′′[min(i, j)]), j)), StaticOneTo(length(itr′)); init = itr′)), StaticOneTo(length(itr)); init = itr) reduce(((itr′, i)->reduce(((itr′′, j)->Base.setindex(itr′′, !(itr′′[min(i, j)]), j)), StaticOneTo(length(itr′)); init = itr′)), StaticOneTo(length(itr)); init = itr) StaticBitVector 256 Bools better (519 LLVM lines vs. 96 B allocs) similar (821 μs vs. 944 μs) similar (204 ms vs. 181 ms) similar (12 MB vs. 13 MB)
unrolled_reduce(((itr′, i)->unrolled_reduce(((itr′′, j)->Base.setindex(itr′′, !(itr′′[min(i, j)]), j)), StaticOneTo(length(itr′)); init = itr′)), StaticOneTo(length(itr)); init = itr) reduce(((itr′, i)->reduce(((itr′′, j)->Base.setindex(itr′′, !(itr′′[min(i, j)]), j)), StaticOneTo(length(itr′)); init = itr′)), StaticOneTo(length(itr)); init = itr) StaticBitVector 257 Bools better (521 LLVM lines vs. 96 B allocs) similar (862 μs vs. 964 μs) similar (197 ms vs. 179 ms) similar (12 MB vs. 13 MB)
unrolled_reduce(((itr′, i)->unrolled_reduce(((itr′′, j)->unrolled_reduce(((itr′′′, k)->Base.setindex(itr′′′, !(itr′′′[min(i, j, k)]), k)), StaticOneTo(length(itr′′)); init = itr′′)), StaticOneTo(length(itr′)); init = itr′)), StaticOneTo(length(itr)); init = itr) reduce(((itr′, i)->reduce(((itr′′, j)->reduce(((itr′′′, k)->Base.setindex(itr′′′, !(itr′′′[min(i, j, k)]), k)), StaticOneTo(length(itr′′)); init = itr′′)), StaticOneTo(length(itr′)); init = itr′)), StaticOneTo(length(itr)); init = itr) Tuple 32 Bools better (71 LLVM lines vs. 2 kB allocs) similar (229 μs vs. 172 μs) 48 times more (12 s vs. 238 ms) 16 times more (254 MB vs. 16 MB)
unrolled_reduce(((itr′, i)->unrolled_reduce(((itr′′, j)->unrolled_reduce(((itr′′′, k)->Base.setindex(itr′′′, !(itr′′′[min(i, j, k)]), k)), StaticOneTo(length(itr′′)); init = itr′′)), StaticOneTo(length(itr′)); init = itr′)), StaticOneTo(length(itr)); init = itr) reduce(((itr′, i)->reduce(((itr′′, j)->reduce(((itr′′′, k)->Base.setindex(itr′′′, !(itr′′′[min(i, j, k)]), k)), StaticOneTo(length(itr′′)); init = itr′′)), StaticOneTo(length(itr′)); init = itr′)), StaticOneTo(length(itr)); init = itr) Tuple 33 Bools fewer allocs (3 MB allocs vs. 4 MB allocs) similar (17 ms vs. 19 ms) similar (227 ms vs. 224 ms) similar (21 MB vs. 19 MB)
unrolled_reduce(((itr′, i)->unrolled_reduce(((itr′′, j)->unrolled_reduce(((itr′′′, k)->Base.setindex(itr′′′, !(itr′′′[min(i, j, k)]), k)), StaticOneTo(length(itr′′)); init = itr′′)), StaticOneTo(length(itr′)); init = itr′)), StaticOneTo(length(itr)); init = itr) reduce(((itr′, i)->reduce(((itr′′, j)->reduce(((itr′′′, k)->Base.setindex(itr′′′, !(itr′′′[min(i, j, k)]), k)), StaticOneTo(length(itr′′)); init = itr′′)), StaticOneTo(length(itr′)); init = itr′)), StaticOneTo(length(itr)); init = itr) StaticBitVector 256 Bools better (519 LLVM lines vs. 12 kB allocs) similar (214 ms vs. 259 ms) similar (296 ms vs. 249 ms) similar (16 MB vs. 16 MB)

Empty Iterators

Unrolled Expression Reference Expression Itr Type Itr Length Itr Contents Optimization Run Time Compilation Time Total Allocations
unrolled_map(error, itr) map(error, itr) Tuple 0 nothing similar (optimized out) similar (49 ns vs. 40 ns) similar (26 ms vs. 27 ms) 4 times more (22 kB vs. 5 kB)
unrolled_any(error, itr) any(error, itr) Tuple 0 nothing similar (optimized out) similar (40 ns vs. 40 ns) similar (27 ms vs. 26 ms) similar (16 kB vs. 30 kB)
unrolled_all(error, itr) all(error, itr) Tuple 0 nothing similar (optimized out) similar (49 ns vs. 49 ns) similar (27 ms vs. 27 ms) similar (16 kB vs. 30 kB)
unrolled_foreach(error, itr) foreach(error, itr) Tuple 0 nothing similar (optimized out) similar (40 ns vs. 40 ns) similar (27 ms vs. 49 ms) 21 times less (16 kB vs. 345 kB)
unrolled_reduce(error, itr; init = 0) reduce(error, itr; init = 0) Tuple 0 nothing similar (optimized out) similar (40 ns vs. 40 ns) 2 times less (30 ms vs. 64 ms) 7 times less (221 kB vs. 2 MB)
unrolled_accumulate(error, itr) accumulate(error, itr) Tuple 0 nothing similar (optimized out) similar (40 ns vs. 49 ns) similar (26 ms vs. 38 ms) 4 times less (41 kB vs. 178 kB)
unrolled_accumulate(error, itr; init = 0) accumulate(error, itr; init = 0) Tuple 0 nothing similar (optimized out) similar (49 ns vs. 49 ns) similar (27 ms vs. 34 ms) 4 times less (47 kB vs. 224 kB)

Very Long Iterators

Unrolled Expression Reference Expression Itr Type Itr Length Itr Contents Optimization Run Time Compilation Time Total Allocations
unrolled_sum(itr) sum(itr) Tuple 2000 Ints similar (293 LLVM lines) 6 times less (150 ns vs. 941 ns) 24 times more (1 s vs. 53 ms) 45 times more (80 MB vs. 2 MB)
unrolled_sum(itr) sum(itr) StaticOneTo 2000 Ints better (optimized out vs. 6 LLVM lines) similar (40 ns vs. 49 ns) 4 times more (282 ms vs. 67 ms) 15 times more (17 MB vs. 1 MB)
unrolled_sum(itr) sum(itr) StaticOneTo 9000 Ints better (optimized out vs. 6 LLVM lines) similar (40 ns vs. 49 ns) 30 times more (2 s vs. 69 ms) 62 times more (72 MB vs. 1 MB)
unrolled_sum(log, itr) sum(log, itr) Tuple 2000 Ints similar (10004 LLVM lines) similar (14 μs vs. 15 μs) 13 times more (891 ms vs. 64 ms) 27 times more (99 MB vs. 4 MB)
unrolled_sum(log, itr) sum(log, itr) StaticOneTo 2000 Ints better (optimized out vs. 19 LLVM lines) 365 times less (40 ns vs. 15 μs) 2 times more (287 ms vs. 106 ms) 6 times more (18 MB vs. 3 MB)
unrolled_sum(log, itr) sum(log, itr) StaticOneTo 9000 Ints better (optimized out vs. 19 LLVM lines) 1658 times less (40 ns vs. 66 μs) 20 times more (2 s vs. 100 ms) 25 times more (72 MB vs. 3 MB)

Manual vs. Recursive Unrolling

Unrolled Expression Reference Expression Itr Type Itr Length Itr Contents Optimization Run Time Compilation Time Total Allocations
UnrolledUtilities.unrolled_map_into_tuple(length, itr) rec_unrolled_map(length, itr) Tuple 1 empty singleton Tuple similar (optimized out) similar (49 ns vs. 40 ns) similar (29 ms vs. 29 ms) similar (55 kB vs. 84 kB)
UnrolledUtilities.unrolled_map_into_tuple(length, itr) rec_unrolled_map(length, itr) Tuple 1 nonempty singleton Tuple similar (optimized out) similar (40 ns vs. 49 ns) similar (28 ms vs. 29 ms) similar (89 kB vs. 84 kB)
UnrolledUtilities.unrolled_map_into_tuple(length, itr) rec_unrolled_map(length, itr) Tuple 1 nonempty non-singleton Tuple similar (optimized out) similar (40 ns vs. 40 ns) similar (25 ms vs. 29 ms) similar (62 kB vs. 85 kB)
UnrolledUtilities.unrolled_map_into_tuple(length, itr) rec_unrolled_map(length, itr) Tuple 1 empty singleton Tuple similar (optimized out) similar (40 ns vs. 40 ns) similar (27 ms vs. 28 ms) similar (55 kB vs. 84 kB)
UnrolledUtilities.unrolled_map_into_tuple(length, itr) rec_unrolled_map(length, itr) Tuple 2 identical empty singleton Tuples similar (7 LLVM lines w/ Const) similar (40 ns vs. 40 ns) similar (28 ms vs. 29 ms) 2 times less (62 kB vs. 141 kB)
UnrolledUtilities.unrolled_map_into_tuple(length, itr) rec_unrolled_map(length, itr) Tuple 3 identical empty singleton Tuples similar (7 LLVM lines w/ Const) similar (40 ns vs. 49 ns) similar (29 ms vs. 32 ms) 3 times less (90 kB vs. 318 kB)
UnrolledUtilities.unrolled_map_into_tuple(length, itr) rec_unrolled_map(length, itr) Tuple 4 identical empty singleton Tuples similar (7 LLVM lines w/ Const) similar (40 ns vs. 40 ns) similar (52 ms vs. 35 ms) 2 times less (144 kB vs. 381 kB)
UnrolledUtilities.unrolled_map_into_tuple(length, itr) rec_unrolled_map(length, itr) Tuple 5 identical empty singleton Tuples similar (7 LLVM lines w/ Const) similar (40 ns vs. 40 ns) similar (49 ms vs. 33 ms) 2 times less (148 kB vs. 433 kB)
UnrolledUtilities.unrolled_map_into_tuple(length, itr) rec_unrolled_map(length, itr) Tuple 6 identical empty singleton Tuples similar (7 LLVM lines w/ Const) similar (40 ns vs. 40 ns) similar (48 ms vs. 33 ms) 3 times less (152 kB vs. 500 kB)
UnrolledUtilities.unrolled_map_into_tuple(length, itr) rec_unrolled_map(length, itr) Tuple 7 identical empty singleton Tuples similar (7 LLVM lines w/ Const) similar (40 ns vs. 40 ns) similar (47 ms vs. 33 ms) 3 times less (155 kB vs. 556 kB)
UnrolledUtilities.unrolled_map_into_tuple(length, itr) rec_unrolled_map(length, itr) Tuple 8 identical empty singleton Tuples similar (7 LLVM lines w/ Const) similar (40 ns vs. 49 ns) similar (46 ms vs. 34 ms) 3 times less (159 kB vs. 632 kB)
UnrolledUtilities.unrolled_map_into_tuple(length, itr) rec_unrolled_map(length, itr) Tuple 16 identical empty singleton Tuples similar (7 LLVM lines w/ Const) similar (40 ns vs. 40 ns) similar (47 ms vs. 38 ms) 6 times less (188 kB vs. 1 MB)
UnrolledUtilities.unrolled_map_into_tuple(length, itr) rec_unrolled_map(length, itr) Tuple 32 identical empty singleton Tuples similar (7 LLVM lines w/ Const) similar (49 ns vs. 40 ns) similar (47 ms vs. 43 ms) 11 times less (248 kB vs. 3 MB)
UnrolledUtilities.unrolled_map_into_tuple(length, itr) rec_unrolled_map(length, itr) Tuple 128 identical empty singleton Tuples similar (7 LLVM lines w/ Const) 6751 times less (69 ns vs. 466 μs) similar (56 ms vs. 53 ms) 10 times less (761 kB vs. 8 MB)
UnrolledUtilities.unrolled_map_into_tuple(length, itr) rec_unrolled_map(length, itr) Tuple 1 nonempty singleton Tuple similar (optimized out) similar (40 ns vs. 40 ns) similar (28 ms vs. 27 ms) similar (89 kB vs. 84 kB)
UnrolledUtilities.unrolled_map_into_tuple(length, itr) rec_unrolled_map(length, itr) Tuple 2 identical nonempty singleton Tuples similar (7 LLVM lines w/ Const) similar (40 ns vs. 49 ns) similar (26 ms vs. 28 ms) similar (92 kB vs. 142 kB)
UnrolledUtilities.unrolled_map_into_tuple(length, itr) rec_unrolled_map(length, itr) Tuple 3 identical nonempty singleton Tuples similar (7 LLVM lines w/ Const) similar (40 ns vs. 49 ns) similar (27 ms vs. 31 ms) 3 times less (95 kB vs. 323 kB)
UnrolledUtilities.unrolled_map_into_tuple(length, itr) rec_unrolled_map(length, itr) Tuple 4 identical nonempty singleton Tuples similar (7 LLVM lines w/ Const) similar (40 ns vs. 40 ns) similar (48 ms vs. 37 ms) 2 times less (149 kB vs. 386 kB)
UnrolledUtilities.unrolled_map_into_tuple(length, itr) rec_unrolled_map(length, itr) Tuple 5 identical nonempty singleton Tuples similar (7 LLVM lines w/ Const) similar (40 ns vs. 40 ns) similar (49 ms vs. 33 ms) 2 times less (153 kB vs. 438 kB)
UnrolledUtilities.unrolled_map_into_tuple(length, itr) rec_unrolled_map(length, itr) Tuple 6 identical nonempty singleton Tuples similar (7 LLVM lines w/ Const) similar (49 ns vs. 40 ns) similar (49 ms vs. 36 ms) 3 times less (156 kB vs. 505 kB)
UnrolledUtilities.unrolled_map_into_tuple(length, itr) rec_unrolled_map(length, itr) Tuple 7 identical nonempty singleton Tuples similar (7 LLVM lines w/ Const) similar (40 ns vs. 40 ns) similar (49 ms vs. 33 ms) 3 times less (160 kB vs. 561 kB)
UnrolledUtilities.unrolled_map_into_tuple(length, itr) rec_unrolled_map(length, itr) Tuple 8 identical nonempty singleton Tuples similar (7 LLVM lines w/ Const) similar (49 ns vs. 49 ns) similar (49 ms vs. 36 ms) 3 times less (164 kB vs. 637 kB)
UnrolledUtilities.unrolled_map_into_tuple(length, itr) rec_unrolled_map(length, itr) Tuple 16 identical nonempty singleton Tuples similar (7 LLVM lines w/ Const) similar (49 ns vs. 40 ns) similar (49 ms vs. 38 ms) 6 times less (193 kB vs. 1 MB)
UnrolledUtilities.unrolled_map_into_tuple(length, itr) rec_unrolled_map(length, itr) Tuple 32 identical nonempty singleton Tuples similar (7 LLVM lines w/ Const) similar (40 ns vs. 40 ns) similar (50 ms vs. 45 ms) 11 times less (253 kB vs. 3 MB)
UnrolledUtilities.unrolled_map_into_tuple(length, itr) rec_unrolled_map(length, itr) Tuple 128 identical nonempty singleton Tuples similar (69 LLVM lines w/ Const) 6546 times less (69 ns vs. 452 μs) similar (69 ms vs. 53 ms) 10 times less (766 kB vs. 8 MB)
UnrolledUtilities.unrolled_map_into_tuple(length, itr) rec_unrolled_map(length, itr) Tuple 1 nonempty non-singleton Tuple similar (optimized out) similar (40 ns vs. 49 ns) similar (24 ms vs. 29 ms) similar (62 kB vs. 85 kB)
UnrolledUtilities.unrolled_map_into_tuple(length, itr) rec_unrolled_map(length, itr) Tuple 2 identical nonempty non-singleton Tuples similar (7 LLVM lines w/ Const) similar (40 ns vs. 40 ns) similar (24 ms vs. 29 ms) 2 times less (69 kB vs. 148 kB)
UnrolledUtilities.unrolled_map_into_tuple(length, itr) rec_unrolled_map(length, itr) Tuple 3 identical nonempty non-singleton Tuples similar (7 LLVM lines w/ Const) similar (49 ns vs. 40 ns) similar (25 ms vs. 33 ms) 3 times less (102 kB vs. 326 kB)
UnrolledUtilities.unrolled_map_into_tuple(length, itr) rec_unrolled_map(length, itr) Tuple 4 identical nonempty non-singleton Tuples similar (7 LLVM lines w/ Const) similar (49 ns vs. 40 ns) similar (44 ms vs. 36 ms) 2 times less (160 kB vs. 398 kB)
UnrolledUtilities.unrolled_map_into_tuple(length, itr) rec_unrolled_map(length, itr) Tuple 5 identical nonempty non-singleton Tuples similar (7 LLVM lines w/ Const) similar (49 ns vs. 40 ns) similar (47 ms vs. 35 ms) 2 times less (169 kB vs. 457 kB)
UnrolledUtilities.unrolled_map_into_tuple(length, itr) rec_unrolled_map(length, itr) Tuple 6 identical nonempty non-singleton Tuples similar (7 LLVM lines w/ Const) similar (49 ns vs. 49 ns) similar (45 ms vs. 37 ms) 3 times less (177 kB vs. 540 kB)
UnrolledUtilities.unrolled_map_into_tuple(length, itr) rec_unrolled_map(length, itr) Tuple 7 identical nonempty non-singleton Tuples similar (7 LLVM lines w/ Const) similar (49 ns vs. 40 ns) similar (44 ms vs. 36 ms) 3 times less (185 kB vs. 606 kB)
UnrolledUtilities.unrolled_map_into_tuple(length, itr) rec_unrolled_map(length, itr) Tuple 8 identical nonempty non-singleton Tuples similar (7 LLVM lines w/ Const) similar (40 ns vs. 40 ns) similar (47 ms vs. 39 ms) 3 times less (193 kB vs. 701 kB)
UnrolledUtilities.unrolled_map_into_tuple(length, itr) rec_unrolled_map(length, itr) Tuple 16 identical nonempty non-singleton Tuples similar (7 LLVM lines w/ Const) similar (40 ns vs. 40 ns) similar (45 ms vs. 44 ms) 5 times less (257 kB vs. 1 MB)
UnrolledUtilities.unrolled_map_into_tuple(length, itr) rec_unrolled_map(length, itr) Tuple 32 identical nonempty non-singleton Tuples similar (7 LLVM lines w/ Const) similar (49 ns vs. 40 ns) similar (46 ms vs. 58 ms) 10 times less (388 kB vs. 4 MB)
UnrolledUtilities.unrolled_map_into_tuple(length, itr) rec_unrolled_map(length, itr) Tuple 128 identical nonempty non-singleton Tuples similar (69 LLVM lines w/ Const) 7480 times less (80 ns vs. 598 μs) similar (69 ms vs. 58 ms) 6 times less (1 MB vs. 9 MB)
UnrolledUtilities.unrolled_map_into_tuple(length, itr) rec_unrolled_map(length, itr) Tuple 1 empty singleton Tuple similar (optimized out) similar (49 ns vs. 49 ns) similar (31 ms vs. 31 ms) similar (55 kB vs. 84 kB)
UnrolledUtilities.unrolled_map_into_tuple(length, itr) rec_unrolled_map(length, itr) Tuple 2 empty & nonempty singleton Tuples similar (7 LLVM lines w/ Const) similar (40 ns vs. 49 ns) similar (29 ms vs. 29 ms) similar (92 kB vs. 142 kB)
UnrolledUtilities.unrolled_map_into_tuple(length, itr) rec_unrolled_map(length, itr) Tuple 3 empty & nonempty singleton Tuples similar (7 LLVM lines w/ Const) similar (40 ns vs. 40 ns) similar (28 ms vs. 33 ms) 3 times less (95 kB vs. 337 kB)
UnrolledUtilities.unrolled_map_into_tuple(length, itr) rec_unrolled_map(length, itr) Tuple 4 empty & nonempty singleton Tuples similar (7 LLVM lines w/ Const) similar (40 ns vs. 40 ns) similar (47 ms vs. 33 ms) 2 times less (153 kB vs. 435 kB)
UnrolledUtilities.unrolled_map_into_tuple(length, itr) rec_unrolled_map(length, itr) Tuple 5 empty & nonempty singleton Tuples similar (7 LLVM lines w/ Const) similar (40 ns vs. 40 ns) similar (45 ms vs. 39 ms) 4 times less (157 kB vs. 635 kB)
UnrolledUtilities.unrolled_map_into_tuple(length, itr) rec_unrolled_map(length, itr) Tuple 6 empty & nonempty singleton Tuples similar (7 LLVM lines w/ Const) similar (40 ns vs. 49 ns) similar (49 ms vs. 42 ms) 4 times less (161 kB vs. 688 kB)
UnrolledUtilities.unrolled_map_into_tuple(length, itr) rec_unrolled_map(length, itr) Tuple 7 empty & nonempty singleton Tuples similar (7 LLVM lines w/ Const) similar (49 ns vs. 40 ns) similar (48 ms vs. 47 ms) 4 times less (170 kB vs. 771 kB)
UnrolledUtilities.unrolled_map_into_tuple(length, itr) rec_unrolled_map(length, itr) Tuple 8 empty & nonempty singleton Tuples similar (7 LLVM lines w/ Const) similar (49 ns vs. 40 ns) similar (46 ms vs. 44 ms) 5 times less (174 kB vs. 916 kB)
UnrolledUtilities.unrolled_map_into_tuple(length, itr) rec_unrolled_map(length, itr) Tuple 16 empty & nonempty singleton Tuples similar (7 LLVM lines w/ Const) similar (40 ns vs. 40 ns) similar (46 ms vs. 63 ms) 7 times less (212 kB vs. 2 MB)
UnrolledUtilities.unrolled_map_into_tuple(length, itr) rec_unrolled_map(length, itr) Tuple 32 empty & nonempty singleton Tuples similar (7 LLVM lines w/ Const) similar (49 ns vs. 40 ns) similar (47 ms vs. 89 ms) 13 times less (281 kB vs. 4 MB)
UnrolledUtilities.unrolled_map_into_tuple(length, itr) rec_unrolled_map(length, itr) Tuple 128 empty & nonempty singleton Tuples similar (71 LLVM lines w/ Const) 10591 times less (80 ns vs. 847 μs) similar (69 ms vs. 117 ms) 11 times less (792 kB vs. 9 MB)
UnrolledUtilities.unrolled_map_into_tuple(length, itr) rec_unrolled_map(length, itr) Tuple 1 nonempty singleton Tuple similar (optimized out) similar (40 ns vs. 40 ns) similar (27 ms vs. 27 ms) similar (89 kB vs. 84 kB)
UnrolledUtilities.unrolled_map_into_tuple(length, itr) rec_unrolled_map(length, itr) Tuple 2 nonempty singleton Tuples similar (7 LLVM lines w/ Const) similar (40 ns vs. 40 ns) similar (28 ms vs. 27 ms) similar (96 kB vs. 142 kB)
UnrolledUtilities.unrolled_map_into_tuple(length, itr) rec_unrolled_map(length, itr) Tuple 3 nonempty singleton Tuples similar (7 LLVM lines w/ Const) similar (49 ns vs. 40 ns) similar (27 ms vs. 30 ms) 3 times less (99 kB vs. 341 kB)
UnrolledUtilities.unrolled_map_into_tuple(length, itr) rec_unrolled_map(length, itr) Tuple 4 nonempty singleton Tuples similar (7 LLVM lines w/ Const) similar (40 ns vs. 40 ns) similar (48 ms vs. 33 ms) 2 times less (158 kB vs. 435 kB)
UnrolledUtilities.unrolled_map_into_tuple(length, itr) rec_unrolled_map(length, itr) Tuple 5 nonempty singleton Tuples similar (7 LLVM lines w/ Const) similar (40 ns vs. 40 ns) similar (51 ms vs. 42 ms) 3 times less (162 kB vs. 639 kB)
UnrolledUtilities.unrolled_map_into_tuple(length, itr) rec_unrolled_map(length, itr) Tuple 6 nonempty singleton Tuples similar (7 LLVM lines w/ Const) similar (40 ns vs. 49 ns) similar (44 ms vs. 38 ms) 4 times less (166 kB vs. 689 kB)
UnrolledUtilities.unrolled_map_into_tuple(length, itr) rec_unrolled_map(length, itr) Tuple 7 nonempty singleton Tuples similar (7 LLVM lines w/ Const) similar (49 ns vs. 40 ns) similar (43 ms vs. 40 ms) 4 times less (174 kB vs. 775 kB)
UnrolledUtilities.unrolled_map_into_tuple(length, itr) rec_unrolled_map(length, itr) Tuple 8 nonempty singleton Tuples similar (7 LLVM lines w/ Const) similar (49 ns vs. 40 ns) similar (42 ms vs. 42 ms) 5 times less (178 kB vs. 916 kB)
UnrolledUtilities.unrolled_map_into_tuple(length, itr) rec_unrolled_map(length, itr) Tuple 16 nonempty singleton Tuples similar (7 LLVM lines w/ Const) similar (49 ns vs. 40 ns) similar (43 ms vs. 56 ms) 7 times less (216 kB vs. 2 MB)
UnrolledUtilities.unrolled_map_into_tuple(length, itr) rec_unrolled_map(length, itr) Tuple 32 nonempty singleton Tuples similar (7 LLVM lines w/ Const) similar (49 ns vs. 40 ns) similar (43 ms vs. 84 ms) 13 times less (281 kB vs. 4 MB)
UnrolledUtilities.unrolled_map_into_tuple(length, itr) rec_unrolled_map(length, itr) Tuple 128 nonempty singleton Tuples similar (69 LLVM lines w/ Const) 10480 times less (80 ns vs. 838 μs) similar (65 ms vs. 99 ms) 11 times less (792 kB vs. 9 MB)
UnrolledUtilities.unrolled_map_into_tuple(length, itr) rec_unrolled_map(length, itr) Tuple 1 nonempty non-singleton Tuple similar (optimized out) similar (49 ns vs. 40 ns) similar (22 ms vs. 26 ms) similar (62 kB vs. 85 kB)
UnrolledUtilities.unrolled_map_into_tuple(length, itr) rec_unrolled_map(length, itr) Tuple 2 nonempty non-singleton Tuples similar (7 LLVM lines w/ Const) similar (40 ns vs. 40 ns) similar (22 ms vs. 26 ms) similar (95 kB vs. 148 kB)
UnrolledUtilities.unrolled_map_into_tuple(length, itr) rec_unrolled_map(length, itr) Tuple 3 nonempty non-singleton Tuples similar (7 LLVM lines w/ Const) similar (49 ns vs. 40 ns) similar (22 ms vs. 30 ms) 3 times less (102 kB vs. 339 kB)
UnrolledUtilities.unrolled_map_into_tuple(length, itr) rec_unrolled_map(length, itr) Tuple 4 nonempty non-singleton Tuples similar (7 LLVM lines w/ Const) similar (40 ns vs. 49 ns) similar (39 ms vs. 31 ms) 2 times less (161 kB vs. 442 kB)
UnrolledUtilities.unrolled_map_into_tuple(length, itr) rec_unrolled_map(length, itr) Tuple 5 nonempty non-singleton Tuples similar (7 LLVM lines w/ Const) similar (40 ns vs. 40 ns) similar (40 ms vs. 39 ms) 3 times less (169 kB vs. 650 kB)
UnrolledUtilities.unrolled_map_into_tuple(length, itr) rec_unrolled_map(length, itr) Tuple 6 nonempty non-singleton Tuples similar (7 LLVM lines w/ Const) similar (40 ns vs. 40 ns) similar (40 ms vs. 39 ms) 4 times less (177 kB vs. 719 kB)
UnrolledUtilities.unrolled_map_into_tuple(length, itr) rec_unrolled_map(length, itr) Tuple 7 nonempty non-singleton Tuples similar (7 LLVM lines w/ Const) similar (40 ns vs. 49 ns) similar (39 ms vs. 44 ms) 4 times less (186 kB vs. 807 kB)
UnrolledUtilities.unrolled_map_into_tuple(length, itr) rec_unrolled_map(length, itr) Tuple 8 nonempty non-singleton Tuples similar (7 LLVM lines w/ Const) similar (49 ns vs. 49 ns) similar (40 ms vs. 45 ms) 5 times less (194 kB vs. 972 kB)
UnrolledUtilities.unrolled_map_into_tuple(length, itr) rec_unrolled_map(length, itr) Tuple 16 nonempty non-singleton Tuples similar (7 LLVM lines w/ Const) similar (49 ns vs. 40 ns) similar (40 ms vs. 61 ms) 7 times less (268 kB vs. 2 MB)
UnrolledUtilities.unrolled_map_into_tuple(length, itr) rec_unrolled_map(length, itr) Tuple 32 nonempty non-singleton Tuples similar (7 LLVM lines w/ Const) similar (49 ns vs. 49 ns) 2 times less (42 ms vs. 101 ms) 11 times less (403 kB vs. 5 MB)
UnrolledUtilities.unrolled_map_into_tuple(length, itr) rec_unrolled_map(length, itr) Tuple 128 nonempty non-singleton Tuples similar (69 LLVM lines w/ Const) 15360 times less (70 ns vs. 1 ms) similar (61 ms vs. 100 ms) 7 times less (1 MB vs. 10 MB)
unrolled_any(isempty, itr) rec_unrolled_any(isempty, itr) Tuple 1 empty singleton Tuple similar (optimized out) similar (40 ns vs. 49 ns) similar (28 ms vs. 30 ms) similar (54 kB vs. 89 kB)
unrolled_any(isempty, itr) rec_unrolled_any(isempty, itr) Tuple 1 nonempty singleton Tuple similar (optimized out) similar (40 ns vs. 49 ns) similar (28 ms vs. 30 ms) similar (88 kB vs. 89 kB)
unrolled_any(isempty, itr) rec_unrolled_any(isempty, itr) Tuple 1 nonempty non-singleton Tuple similar (optimized out) similar (49 ns vs. 49 ns) similar (24 ms vs. 30 ms) similar (62 kB vs. 90 kB)
unrolled_any(isempty, itr) rec_unrolled_any(isempty, itr) Tuple 1 empty singleton Tuple similar (optimized out) similar (40 ns vs. 40 ns) similar (27 ms vs. 28 ms) similar (54 kB vs. 89 kB)
unrolled_any(isempty, itr) rec_unrolled_any(isempty, itr) Tuple 2 identical empty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (28 ms vs. 30 ms) 2 times less (61 kB vs. 151 kB)
unrolled_any(isempty, itr) rec_unrolled_any(isempty, itr) Tuple 3 identical empty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (28 ms vs. 28 ms) 2 times less (88 kB vs. 208 kB)
unrolled_any(isempty, itr) rec_unrolled_any(isempty, itr) Tuple 4 identical empty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (51 ms vs. 32 ms) similar (143 kB vs. 255 kB)
unrolled_any(isempty, itr) rec_unrolled_any(isempty, itr) Tuple 5 identical empty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (50 ms vs. 28 ms) 2 times less (146 kB vs. 308 kB)
unrolled_any(isempty, itr) rec_unrolled_any(isempty, itr) Tuple 6 identical empty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (50 ms vs. 30 ms) 2 times less (149 kB vs. 356 kB)
unrolled_any(isempty, itr) rec_unrolled_any(isempty, itr) Tuple 7 identical empty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (48 ms vs. 28 ms) 2 times less (152 kB vs. 409 kB)
unrolled_any(isempty, itr) rec_unrolled_any(isempty, itr) Tuple 8 identical empty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (50 ms vs. 30 ms) 2 times less (155 kB vs. 459 kB)
unrolled_any(isempty, itr) rec_unrolled_any(isempty, itr) Tuple 16 identical empty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (49 ms vs. 31 ms) 5 times less (177 kB vs. 888 kB)
unrolled_any(isempty, itr) rec_unrolled_any(isempty, itr) Tuple 32 identical empty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (49 ms vs. 33 ms) 8 times less (223 kB vs. 2 MB)
unrolled_any(isempty, itr) rec_unrolled_any(isempty, itr) Tuple 128 identical empty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (60 ms vs. 42 ms) 12 times less (496 kB vs. 6 MB)
unrolled_any(isempty, itr) rec_unrolled_any(isempty, itr) Tuple 1 nonempty singleton Tuple similar (optimized out) similar (40 ns vs. 40 ns) similar (27 ms vs. 28 ms) similar (88 kB vs. 89 kB)
unrolled_any(isempty, itr) rec_unrolled_any(isempty, itr) Tuple 2 identical nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (27 ms vs. 30 ms) similar (92 kB vs. 152 kB)
unrolled_any(isempty, itr) rec_unrolled_any(isempty, itr) Tuple 3 identical nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (27 ms vs. 32 ms) 3 times less (96 kB vs. 297 kB)
unrolled_any(isempty, itr) rec_unrolled_any(isempty, itr) Tuple 4 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (50 ms vs. 34 ms) 2 times less (154 kB vs. 354 kB)
unrolled_any(isempty, itr) rec_unrolled_any(isempty, itr) Tuple 5 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (50 ms vs. 32 ms) 2 times less (160 kB vs. 397 kB)
unrolled_any(isempty, itr) rec_unrolled_any(isempty, itr) Tuple 6 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (51 ms vs. 36 ms) 2 times less (165 kB vs. 455 kB)
unrolled_any(isempty, itr) rec_unrolled_any(isempty, itr) Tuple 7 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (50 ms vs. 34 ms) 2 times less (170 kB vs. 499 kB)
unrolled_any(isempty, itr) rec_unrolled_any(isempty, itr) Tuple 8 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (51 ms vs. 35 ms) 3 times less (175 kB vs. 558 kB)
unrolled_any(isempty, itr) rec_unrolled_any(isempty, itr) Tuple 16 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (52 ms vs. 37 ms) 4 times less (216 kB vs. 987 kB)
unrolled_any(isempty, itr) rec_unrolled_any(isempty, itr) Tuple 32 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (53 ms vs. 39 ms) 6 times less (300 kB vs. 2 MB)
unrolled_any(isempty, itr) rec_unrolled_any(isempty, itr) Tuple 128 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (61 ms vs. 48 ms) 8 times less (799 kB vs. 6 MB)
unrolled_any(isempty, itr) rec_unrolled_any(isempty, itr) Tuple 1 nonempty non-singleton Tuple similar (optimized out) similar (49 ns vs. 40 ns) similar (23 ms vs. 30 ms) similar (62 kB vs. 90 kB)
unrolled_any(isempty, itr) rec_unrolled_any(isempty, itr) Tuple 2 identical nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (24 ms vs. 31 ms) 2 times less (70 kB vs. 160 kB)
unrolled_any(isempty, itr) rec_unrolled_any(isempty, itr) Tuple 3 identical nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (24 ms vs. 33 ms) 2 times less (104 kB vs. 299 kB)
unrolled_any(isempty, itr) rec_unrolled_any(isempty, itr) Tuple 4 identical nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (46 ms vs. 37 ms) 2 times less (166 kB vs. 366 kB)
unrolled_any(isempty, itr) rec_unrolled_any(isempty, itr) Tuple 5 identical nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (46 ms vs. 35 ms) 2 times less (176 kB vs. 414 kB)
unrolled_any(isempty, itr) rec_unrolled_any(isempty, itr) Tuple 6 identical nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (47 ms vs. 37 ms) 2 times less (186 kB vs. 486 kB)
unrolled_any(isempty, itr) rec_unrolled_any(isempty, itr) Tuple 7 identical nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (46 ms vs. 36 ms) 2 times less (195 kB vs. 537 kB)
unrolled_any(isempty, itr) rec_unrolled_any(isempty, itr) Tuple 8 identical nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (47 ms vs. 39 ms) 3 times less (205 kB vs. 617 kB)
unrolled_any(isempty, itr) rec_unrolled_any(isempty, itr) Tuple 16 identical nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (49 ms vs. 43 ms) 4 times less (281 kB vs. 1 MB)
unrolled_any(isempty, itr) rec_unrolled_any(isempty, itr) Tuple 32 identical nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (50 ms vs. 53 ms) 6 times less (436 kB vs. 3 MB)
unrolled_any(isempty, itr) rec_unrolled_any(isempty, itr) Tuple 128 identical nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (64 ms vs. 53 ms) 5 times less (1 MB vs. 7 MB)
unrolled_any(isempty, itr) rec_unrolled_any(isempty, itr) Tuple 1 empty singleton Tuple similar (optimized out) similar (40 ns vs. 49 ns) similar (31 ms vs. 32 ms) similar (54 kB vs. 89 kB)
unrolled_any(isempty, itr) rec_unrolled_any(isempty, itr) Tuple 2 empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (31 ms vs. 33 ms) similar (86 kB vs. 152 kB)
unrolled_any(isempty, itr) rec_unrolled_any(isempty, itr) Tuple 3 empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (30 ms vs. 30 ms) 2 times less (88 kB vs. 208 kB)
unrolled_any(isempty, itr) rec_unrolled_any(isempty, itr) Tuple 4 empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (48 ms vs. 28 ms) similar (143 kB vs. 256 kB)
unrolled_any(isempty, itr) rec_unrolled_any(isempty, itr) Tuple 5 empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (50 ms vs. 27 ms) 2 times less (146 kB vs. 308 kB)
unrolled_any(isempty, itr) rec_unrolled_any(isempty, itr) Tuple 6 empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (50 ms vs. 29 ms) 2 times less (149 kB vs. 356 kB)
unrolled_any(isempty, itr) rec_unrolled_any(isempty, itr) Tuple 7 empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (50 ms vs. 30 ms) 2 times less (153 kB vs. 410 kB)
unrolled_any(isempty, itr) rec_unrolled_any(isempty, itr) Tuple 8 empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (46 ms vs. 29 ms) 2 times less (156 kB vs. 459 kB)
unrolled_any(isempty, itr) rec_unrolled_any(isempty, itr) Tuple 16 empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (49 ms vs. 32 ms) 4 times less (178 kB vs. 889 kB)
unrolled_any(isempty, itr) rec_unrolled_any(isempty, itr) Tuple 32 empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (49 ms vs. 33 ms) 7 times less (224 kB vs. 2 MB)
unrolled_any(isempty, itr) rec_unrolled_any(isempty, itr) Tuple 128 empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (59 ms vs. 45 ms) 12 times less (497 kB vs. 6 MB)
unrolled_any(isempty, itr) rec_unrolled_any(isempty, itr) Tuple 1 nonempty singleton Tuple similar (optimized out) similar (40 ns vs. 49 ns) similar (27 ms vs. 28 ms) similar (88 kB vs. 89 kB)
unrolled_any(isempty, itr) rec_unrolled_any(isempty, itr) Tuple 2 nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (27 ms vs. 30 ms) similar (97 kB vs. 152 kB)
unrolled_any(isempty, itr) rec_unrolled_any(isempty, itr) Tuple 3 nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (27 ms vs. 30 ms) 3 times less (100 kB vs. 313 kB)
unrolled_any(isempty, itr) rec_unrolled_any(isempty, itr) Tuple 4 nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (49 ms vs. 33 ms) 2 times less (163 kB vs. 405 kB)
unrolled_any(isempty, itr) rec_unrolled_any(isempty, itr) Tuple 5 nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (53 ms vs. 38 ms) 3 times less (168 kB vs. 567 kB)
unrolled_any(isempty, itr) rec_unrolled_any(isempty, itr) Tuple 6 nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (46 ms vs. 37 ms) 3 times less (173 kB vs. 609 kB)
unrolled_any(isempty, itr) rec_unrolled_any(isempty, itr) Tuple 7 nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (44 ms vs. 39 ms) 3 times less (183 kB vs. 706 kB)
unrolled_any(isempty, itr) rec_unrolled_any(isempty, itr) Tuple 8 nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (44 ms vs. 41 ms) 4 times less (188 kB vs. 802 kB)
unrolled_any(isempty, itr) rec_unrolled_any(isempty, itr) Tuple 16 nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (46 ms vs. 52 ms) 5 times less (237 kB vs. 1 MB)
unrolled_any(isempty, itr) rec_unrolled_any(isempty, itr) Tuple 32 nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (46 ms vs. 75 ms) 8 times less (327 kB vs. 3 MB)
unrolled_any(isempty, itr) rec_unrolled_any(isempty, itr) Tuple 128 nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (57 ms vs. 89 ms) 8 times less (825 kB vs. 7 MB)
unrolled_any(isempty, itr) rec_unrolled_any(isempty, itr) Tuple 1 nonempty non-singleton Tuple similar (optimized out) similar (40 ns vs. 49 ns) similar (22 ms vs. 26 ms) similar (62 kB vs. 90 kB)
unrolled_any(isempty, itr) rec_unrolled_any(isempty, itr) Tuple 2 nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (21 ms vs. 28 ms) similar (100 kB vs. 160 kB)
unrolled_any(isempty, itr) rec_unrolled_any(isempty, itr) Tuple 3 nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (22 ms vs. 30 ms) 2 times less (108 kB vs. 315 kB)
unrolled_any(isempty, itr) rec_unrolled_any(isempty, itr) Tuple 4 nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (41 ms vs. 32 ms) 2 times less (175 kB vs. 421 kB)
unrolled_any(isempty, itr) rec_unrolled_any(isempty, itr) Tuple 5 nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (44 ms vs. 38 ms) 3 times less (185 kB vs. 584 kB)
unrolled_any(isempty, itr) rec_unrolled_any(isempty, itr) Tuple 6 nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (42 ms vs. 42 ms) 3 times less (195 kB vs. 645 kB)
unrolled_any(isempty, itr) rec_unrolled_any(isempty, itr) Tuple 7 nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (42 ms vs. 42 ms) 3 times less (208 kB vs. 744 kB)
unrolled_any(isempty, itr) rec_unrolled_any(isempty, itr) Tuple 8 nonempty non-singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (42 ms vs. 44 ms) 3 times less (218 kB vs. 865 kB)
unrolled_any(isempty, itr) rec_unrolled_any(isempty, itr) Tuple 16 nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (44 ms vs. 59 ms) 5 times less (303 kB vs. 2 MB)
unrolled_any(isempty, itr) rec_unrolled_any(isempty, itr) Tuple 32 nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (46 ms vs. 91 ms) 7 times less (462 kB vs. 4 MB)
unrolled_any(isempty, itr) rec_unrolled_any(isempty, itr) Tuple 128 nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (55 ms vs. 96 ms) 6 times less (1 MB vs. 8 MB)
unrolled_all(isempty, itr) rec_unrolled_all(isempty, itr) Tuple 1 empty singleton Tuple similar (optimized out) similar (49 ns vs. 40 ns) similar (28 ms vs. 29 ms) similar (54 kB vs. 89 kB)
unrolled_all(isempty, itr) rec_unrolled_all(isempty, itr) Tuple 1 nonempty singleton Tuple similar (optimized out) similar (40 ns vs. 40 ns) similar (28 ms vs. 29 ms) similar (88 kB vs. 90 kB)
unrolled_all(isempty, itr) rec_unrolled_all(isempty, itr) Tuple 1 nonempty non-singleton Tuple similar (optimized out) similar (40 ns vs. 40 ns) similar (25 ms vs. 31 ms) similar (62 kB vs. 90 kB)
unrolled_all(isempty, itr) rec_unrolled_all(isempty, itr) Tuple 1 empty singleton Tuple similar (optimized out) similar (49 ns vs. 40 ns) similar (27 ms vs. 29 ms) similar (54 kB vs. 89 kB)
unrolled_all(isempty, itr) rec_unrolled_all(isempty, itr) Tuple 2 identical empty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (27 ms vs. 30 ms) 2 times less (63 kB vs. 152 kB)
unrolled_all(isempty, itr) rec_unrolled_all(isempty, itr) Tuple 3 identical empty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (28 ms vs. 31 ms) 3 times less (92 kB vs. 298 kB)
unrolled_all(isempty, itr) rec_unrolled_all(isempty, itr) Tuple 4 identical empty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (50 ms vs. 34 ms) 2 times less (150 kB vs. 355 kB)
unrolled_all(isempty, itr) rec_unrolled_all(isempty, itr) Tuple 5 identical empty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (50 ms vs. 32 ms) 2 times less (156 kB vs. 398 kB)
unrolled_all(isempty, itr) rec_unrolled_all(isempty, itr) Tuple 6 identical empty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (51 ms vs. 35 ms) 2 times less (161 kB vs. 456 kB)
unrolled_all(isempty, itr) rec_unrolled_all(isempty, itr) Tuple 7 identical empty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (48 ms vs. 32 ms) 3 times less (166 kB vs. 500 kB)
unrolled_all(isempty, itr) rec_unrolled_all(isempty, itr) Tuple 8 identical empty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (48 ms vs. 34 ms) 3 times less (171 kB vs. 559 kB)
unrolled_all(isempty, itr) rec_unrolled_all(isempty, itr) Tuple 16 identical empty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (50 ms vs. 35 ms) 4 times less (212 kB vs. 990 kB)
unrolled_all(isempty, itr) rec_unrolled_all(isempty, itr) Tuple 32 identical empty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (49 ms vs. 37 ms) 6 times less (296 kB vs. 2 MB)
unrolled_all(isempty, itr) rec_unrolled_all(isempty, itr) Tuple 128 identical empty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (55 ms vs. 47 ms) 8 times less (794 kB vs. 6 MB)
unrolled_all(isempty, itr) rec_unrolled_all(isempty, itr) Tuple 1 nonempty singleton Tuple similar (optimized out) similar (40 ns vs. 49 ns) similar (26 ms vs. 28 ms) similar (88 kB vs. 90 kB)
unrolled_all(isempty, itr) rec_unrolled_all(isempty, itr) Tuple 2 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (28 ms vs. 32 ms) similar (90 kB vs. 152 kB)
unrolled_all(isempty, itr) rec_unrolled_all(isempty, itr) Tuple 3 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (28 ms vs. 28 ms) 2 times less (92 kB vs. 214 kB)
unrolled_all(isempty, itr) rec_unrolled_all(isempty, itr) Tuple 4 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (50 ms vs. 30 ms) similar (147 kB vs. 258 kB)
unrolled_all(isempty, itr) rec_unrolled_all(isempty, itr) Tuple 5 identical nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (48 ms vs. 28 ms) 2 times less (150 kB vs. 315 kB)
unrolled_all(isempty, itr) rec_unrolled_all(isempty, itr) Tuple 6 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (54 ms vs. 32 ms) 2 times less (153 kB vs. 359 kB)
unrolled_all(isempty, itr) rec_unrolled_all(isempty, itr) Tuple 7 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (51 ms vs. 30 ms) 2 times less (156 kB vs. 417 kB)
unrolled_all(isempty, itr) rec_unrolled_all(isempty, itr) Tuple 8 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (52 ms vs. 32 ms) 2 times less (159 kB vs. 462 kB)
unrolled_all(isempty, itr) rec_unrolled_all(isempty, itr) Tuple 16 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (51 ms vs. 33 ms) 4 times less (182 kB vs. 893 kB)
unrolled_all(isempty, itr) rec_unrolled_all(isempty, itr) Tuple 32 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (53 ms vs. 35 ms) 7 times less (227 kB vs. 2 MB)
unrolled_all(isempty, itr) rec_unrolled_all(isempty, itr) Tuple 128 identical nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (55 ms vs. 43 ms) 12 times less (500 kB vs. 6 MB)
unrolled_all(isempty, itr) rec_unrolled_all(isempty, itr) Tuple 1 nonempty non-singleton Tuple similar (optimized out) similar (40 ns vs. 40 ns) similar (24 ms vs. 30 ms) similar (62 kB vs. 90 kB)
unrolled_all(isempty, itr) rec_unrolled_all(isempty, itr) Tuple 2 identical nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (24 ms vs. 30 ms) 2 times less (64 kB vs. 160 kB)
unrolled_all(isempty, itr) rec_unrolled_all(isempty, itr) Tuple 3 identical nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (25 ms vs. 30 ms) 2 times less (91 kB vs. 218 kB)
unrolled_all(isempty, itr) rec_unrolled_all(isempty, itr) Tuple 4 identical nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (48 ms vs. 33 ms) similar (146 kB vs. 275 kB)
unrolled_all(isempty, itr) rec_unrolled_all(isempty, itr) Tuple 5 identical nonempty non-singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (47 ms vs. 32 ms) 2 times less (149 kB vs. 333 kB)
unrolled_all(isempty, itr) rec_unrolled_all(isempty, itr) Tuple 6 identical nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (46 ms vs. 33 ms) 2 times less (152 kB vs. 395 kB)
unrolled_all(isempty, itr) rec_unrolled_all(isempty, itr) Tuple 7 identical nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (59 ms vs. 32 ms) 2 times less (155 kB vs. 455 kB)
unrolled_all(isempty, itr) rec_unrolled_all(isempty, itr) Tuple 8 identical nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (47 ms vs. 34 ms) 3 times less (158 kB vs. 525 kB)
unrolled_all(isempty, itr) rec_unrolled_all(isempty, itr) Tuple 16 identical nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (47 ms vs. 39 ms) 6 times less (180 kB vs. 1 MB)
unrolled_all(isempty, itr) rec_unrolled_all(isempty, itr) Tuple 32 identical nonempty non-singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (50 ms vs. 49 ms) 12 times less (226 kB vs. 3 MB)
unrolled_all(isempty, itr) rec_unrolled_all(isempty, itr) Tuple 128 identical nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (56 ms vs. 49 ms) 14 times less (499 kB vs. 7 MB)
unrolled_all(isempty, itr) rec_unrolled_all(isempty, itr) Tuple 1 empty singleton Tuple similar (optimized out) similar (49 ns vs. 49 ns) similar (31 ms vs. 32 ms) similar (54 kB vs. 89 kB)
unrolled_all(isempty, itr) rec_unrolled_all(isempty, itr) Tuple 2 empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (30 ms vs. 32 ms) similar (92 kB vs. 152 kB)
unrolled_all(isempty, itr) rec_unrolled_all(isempty, itr) Tuple 3 empty & nonempty singleton Tuples similar (optimized out) similar (41 ns vs. 40 ns) similar (30 ms vs. 29 ms) 2 times less (94 kB vs. 226 kB)
unrolled_all(isempty, itr) rec_unrolled_all(isempty, itr) Tuple 4 empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (49 ms vs. 29 ms) similar (150 kB vs. 272 kB)
unrolled_all(isempty, itr) rec_unrolled_all(isempty, itr) Tuple 5 empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (50 ms vs. 27 ms) 2 times less (153 kB vs. 326 kB)
unrolled_all(isempty, itr) rec_unrolled_all(isempty, itr) Tuple 6 empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (49 ms vs. 29 ms) 2 times less (156 kB vs. 373 kB)
unrolled_all(isempty, itr) rec_unrolled_all(isempty, itr) Tuple 7 empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (48 ms vs. 31 ms) 2 times less (159 kB vs. 429 kB)
unrolled_all(isempty, itr) rec_unrolled_all(isempty, itr) Tuple 8 empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (47 ms vs. 29 ms) 2 times less (162 kB vs. 476 kB)
unrolled_all(isempty, itr) rec_unrolled_all(isempty, itr) Tuple 16 empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (50 ms vs. 32 ms) 4 times less (185 kB vs. 908 kB)
unrolled_all(isempty, itr) rec_unrolled_all(isempty, itr) Tuple 32 empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (49 ms vs. 34 ms) 7 times less (230 kB vs. 2 MB)
unrolled_all(isempty, itr) rec_unrolled_all(isempty, itr) Tuple 128 empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (56 ms vs. 45 ms) 12 times less (503 kB vs. 6 MB)
unrolled_all(isempty, itr) rec_unrolled_all(isempty, itr) Tuple 1 nonempty singleton Tuple similar (optimized out) similar (40 ns vs. 40 ns) similar (27 ms vs. 27 ms) similar (88 kB vs. 90 kB)
unrolled_all(isempty, itr) rec_unrolled_all(isempty, itr) Tuple 2 nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (27 ms vs. 29 ms) similar (90 kB vs. 152 kB)
unrolled_all(isempty, itr) rec_unrolled_all(isempty, itr) Tuple 3 nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (28 ms vs. 26 ms) 2 times less (92 kB vs. 215 kB)
unrolled_all(isempty, itr) rec_unrolled_all(isempty, itr) Tuple 4 nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (49 ms vs. 29 ms) similar (148 kB vs. 258 kB)
unrolled_all(isempty, itr) rec_unrolled_all(isempty, itr) Tuple 5 nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (50 ms vs. 28 ms) 2 times less (151 kB vs. 315 kB)
unrolled_all(isempty, itr) rec_unrolled_all(isempty, itr) Tuple 6 nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (45 ms vs. 27 ms) 2 times less (153 kB vs. 359 kB)
unrolled_all(isempty, itr) rec_unrolled_all(isempty, itr) Tuple 7 nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (44 ms vs. 25 ms) 2 times less (157 kB vs. 417 kB)
unrolled_all(isempty, itr) rec_unrolled_all(isempty, itr) Tuple 8 nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (44 ms vs. 27 ms) 2 times less (160 kB vs. 463 kB)
unrolled_all(isempty, itr) rec_unrolled_all(isempty, itr) Tuple 16 nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (45 ms vs. 29 ms) 4 times less (182 kB vs. 894 kB)
unrolled_all(isempty, itr) rec_unrolled_all(isempty, itr) Tuple 32 nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (46 ms vs. 31 ms) 7 times less (228 kB vs. 2 MB)
unrolled_all(isempty, itr) rec_unrolled_all(isempty, itr) Tuple 128 nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (51 ms vs. 41 ms) 12 times less (501 kB vs. 6 MB)
unrolled_all(isempty, itr) rec_unrolled_all(isempty, itr) Tuple 1 nonempty non-singleton Tuple similar (optimized out) similar (40 ns vs. 40 ns) similar (22 ms vs. 27 ms) similar (62 kB vs. 90 kB)
unrolled_all(isempty, itr) rec_unrolled_all(isempty, itr) Tuple 2 nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (21 ms vs. 28 ms) similar (89 kB vs. 160 kB)
unrolled_all(isempty, itr) rec_unrolled_all(isempty, itr) Tuple 3 nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (22 ms vs. 27 ms) 2 times less (91 kB vs. 218 kB)
unrolled_all(isempty, itr) rec_unrolled_all(isempty, itr) Tuple 4 nonempty non-singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (42 ms vs. 31 ms) similar (147 kB vs. 275 kB)
unrolled_all(isempty, itr) rec_unrolled_all(isempty, itr) Tuple 5 nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (43 ms vs. 28 ms) 2 times less (150 kB vs. 333 kB)
unrolled_all(isempty, itr) rec_unrolled_all(isempty, itr) Tuple 6 nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (44 ms vs. 32 ms) 2 times less (152 kB vs. 395 kB)
unrolled_all(isempty, itr) rec_unrolled_all(isempty, itr) Tuple 7 nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (41 ms vs. 29 ms) 2 times less (156 kB vs. 456 kB)
unrolled_all(isempty, itr) rec_unrolled_all(isempty, itr) Tuple 8 nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (41 ms vs. 30 ms) 3 times less (159 kB vs. 526 kB)
unrolled_all(isempty, itr) rec_unrolled_all(isempty, itr) Tuple 16 nonempty non-singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (42 ms vs. 36 ms) 6 times less (181 kB vs. 1 MB)
unrolled_all(isempty, itr) rec_unrolled_all(isempty, itr) Tuple 32 nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (43 ms vs. 47 ms) 12 times less (227 kB vs. 3 MB)
unrolled_all(isempty, itr) rec_unrolled_all(isempty, itr) Tuple 128 nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (51 ms vs. 46 ms) 14 times less (499 kB vs. 7 MB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) rec_unrolled_foreach((x->@assert(length(x) <= 7)), itr) Tuple 1 empty singleton Tuple similar (optimized out) similar (49 ns vs. 49 ns) similar (54 ms vs. 53 ms) similar (66 kB vs. 89 kB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) rec_unrolled_foreach((x->@assert(length(x) <= 7)), itr) Tuple 1 nonempty singleton Tuple similar (optimized out) similar (49 ns vs. 40 ns) similar (52 ms vs. 51 ms) similar (100 kB vs. 94 kB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) rec_unrolled_foreach((x->@assert(length(x) <= 7)), itr) Tuple 1 nonempty non-singleton Tuple similar (optimized out) similar (49 ns vs. 40 ns) similar (52 ms vs. 53 ms) similar (73 kB vs. 92 kB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) rec_unrolled_foreach((x->@assert(length(x) <= 7)), itr) Tuple 1 empty singleton Tuple similar (optimized out) similar (40 ns vs. 40 ns) similar (52 ms vs. 52 ms) similar (66 kB vs. 89 kB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) rec_unrolled_foreach((x->@assert(length(x) <= 7)), itr) Tuple 2 identical empty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (52 ms vs. 52 ms) similar (73 kB vs. 137 kB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) rec_unrolled_foreach((x->@assert(length(x) <= 7)), itr) Tuple 3 identical empty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (52 ms vs. 57 ms) 2 times less (101 kB vs. 260 kB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) rec_unrolled_foreach((x->@assert(length(x) <= 7)), itr) Tuple 4 identical empty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (73 ms vs. 58 ms) similar (154 kB vs. 307 kB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) rec_unrolled_foreach((x->@assert(length(x) <= 7)), itr) Tuple 5 identical empty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (72 ms vs. 57 ms) 2 times less (158 kB vs. 344 kB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) rec_unrolled_foreach((x->@assert(length(x) <= 7)), itr) Tuple 6 identical empty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (72 ms vs. 55 ms) 2 times less (162 kB vs. 391 kB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) rec_unrolled_foreach((x->@assert(length(x) <= 7)), itr) Tuple 7 identical empty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (71 ms vs. 56 ms) 2 times less (166 kB vs. 429 kB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) rec_unrolled_foreach((x->@assert(length(x) <= 7)), itr) Tuple 8 identical empty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (72 ms vs. 57 ms) 2 times less (169 kB vs. 478 kB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) rec_unrolled_foreach((x->@assert(length(x) <= 7)), itr) Tuple 16 identical empty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (74 ms vs. 58 ms) 4 times less (198 kB vs. 840 kB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) rec_unrolled_foreach((x->@assert(length(x) <= 7)), itr) Tuple 32 identical empty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (73 ms vs. 59 ms) 6 times less (257 kB vs. 2 MB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) rec_unrolled_foreach((x->@assert(length(x) <= 7)), itr) Tuple 128 identical empty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (75 ms vs. 69 ms) 9 times less (607 kB vs. 6 MB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) rec_unrolled_foreach((x->@assert(length(x) <= 7)), itr) Tuple 1 nonempty singleton Tuple similar (optimized out) similar (40 ns vs. 40 ns) similar (51 ms vs. 52 ms) similar (100 kB vs. 94 kB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) rec_unrolled_foreach((x->@assert(length(x) <= 7)), itr) Tuple 2 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (54 ms vs. 54 ms) similar (103 kB vs. 141 kB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) rec_unrolled_foreach((x->@assert(length(x) <= 7)), itr) Tuple 3 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (52 ms vs. 57 ms) 2 times less (106 kB vs. 265 kB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) rec_unrolled_foreach((x->@assert(length(x) <= 7)), itr) Tuple 4 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (73 ms vs. 57 ms) similar (159 kB vs. 312 kB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) rec_unrolled_foreach((x->@assert(length(x) <= 7)), itr) Tuple 5 identical nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (72 ms vs. 56 ms) 2 times less (163 kB vs. 348 kB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) rec_unrolled_foreach((x->@assert(length(x) <= 7)), itr) Tuple 6 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (71 ms vs. 55 ms) 2 times less (167 kB vs. 396 kB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) rec_unrolled_foreach((x->@assert(length(x) <= 7)), itr) Tuple 7 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (77 ms vs. 58 ms) 2 times less (170 kB vs. 434 kB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) rec_unrolled_foreach((x->@assert(length(x) <= 7)), itr) Tuple 8 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (73 ms vs. 58 ms) 2 times less (174 kB vs. 483 kB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) rec_unrolled_foreach((x->@assert(length(x) <= 7)), itr) Tuple 16 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (71 ms vs. 59 ms) 4 times less (202 kB vs. 845 kB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) rec_unrolled_foreach((x->@assert(length(x) <= 7)), itr) Tuple 32 identical nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (74 ms vs. 61 ms) 6 times less (261 kB vs. 2 MB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) rec_unrolled_foreach((x->@assert(length(x) <= 7)), itr) Tuple 128 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (78 ms vs. 72 ms) 9 times less (612 kB vs. 6 MB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) rec_unrolled_foreach((x->@assert(length(x) <= 7)), itr) Tuple 1 nonempty non-singleton Tuple similar (optimized out) similar (40 ns vs. 40 ns) similar (49 ms vs. 53 ms) similar (73 kB vs. 92 kB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) rec_unrolled_foreach((x->@assert(length(x) <= 7)), itr) Tuple 2 identical nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (48 ms vs. 54 ms) similar (80 kB vs. 143 kB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) rec_unrolled_foreach((x->@assert(length(x) <= 7)), itr) Tuple 3 identical nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (51 ms vs. 58 ms) 2 times less (113 kB vs. 269 kB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) rec_unrolled_foreach((x->@assert(length(x) <= 7)), itr) Tuple 4 identical nonempty non-singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (71 ms vs. 60 ms) similar (171 kB vs. 326 kB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) rec_unrolled_foreach((x->@assert(length(x) <= 7)), itr) Tuple 5 identical nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (71 ms vs. 61 ms) 2 times less (179 kB vs. 367 kB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) rec_unrolled_foreach((x->@assert(length(x) <= 7)), itr) Tuple 6 identical nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (68 ms vs. 59 ms) 2 times less (187 kB vs. 429 kB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) rec_unrolled_foreach((x->@assert(length(x) <= 7)), itr) Tuple 7 identical nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (71 ms vs. 61 ms) 2 times less (195 kB vs. 473 kB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) rec_unrolled_foreach((x->@assert(length(x) <= 7)), itr) Tuple 8 identical nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (69 ms vs. 62 ms) 2 times less (203 kB vs. 542 kB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) rec_unrolled_foreach((x->@assert(length(x) <= 7)), itr) Tuple 16 identical nonempty non-singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (70 ms vs. 66 ms) 4 times less (267 kB vs. 1 MB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) rec_unrolled_foreach((x->@assert(length(x) <= 7)), itr) Tuple 32 identical nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (73 ms vs. 77 ms) 6 times less (397 kB vs. 2 MB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) rec_unrolled_foreach((x->@assert(length(x) <= 7)), itr) Tuple 128 identical nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (77 ms vs. 78 ms) 5 times less (1 MB vs. 6 MB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) rec_unrolled_foreach((x->@assert(length(x) <= 7)), itr) Tuple 1 empty singleton Tuple similar (optimized out) similar (40 ns vs. 40 ns) similar (53 ms vs. 55 ms) similar (66 kB vs. 89 kB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) rec_unrolled_foreach((x->@assert(length(x) <= 7)), itr) Tuple 2 empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (55 ms vs. 55 ms) similar (112 kB vs. 152 kB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) rec_unrolled_foreach((x->@assert(length(x) <= 7)), itr) Tuple 3 empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (54 ms vs. 59 ms) 2 times less (115 kB vs. 285 kB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) rec_unrolled_foreach((x->@assert(length(x) <= 7)), itr) Tuple 4 empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (70 ms vs. 67 ms) 2 times less (183 kB vs. 417 kB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) rec_unrolled_foreach((x->@assert(length(x) <= 7)), itr) Tuple 5 empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (72 ms vs. 62 ms) 2 times less (187 kB vs. 558 kB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) rec_unrolled_foreach((x->@assert(length(x) <= 7)), itr) Tuple 6 empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (72 ms vs. 62 ms) 3 times less (190 kB vs. 596 kB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) rec_unrolled_foreach((x->@assert(length(x) <= 7)), itr) Tuple 7 empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (72 ms vs. 66 ms) 3 times less (209 kB vs. 688 kB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) rec_unrolled_foreach((x->@assert(length(x) <= 7)), itr) Tuple 8 empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (68 ms vs. 65 ms) 3 times less (212 kB vs. 774 kB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) rec_unrolled_foreach((x->@assert(length(x) <= 7)), itr) Tuple 16 empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (70 ms vs. 79 ms) 4 times less (269 kB vs. 1 MB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) rec_unrolled_foreach((x->@assert(length(x) <= 7)), itr) Tuple 32 empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (70 ms vs. 106 ms) 6 times less (356 kB vs. 2 MB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) rec_unrolled_foreach((x->@assert(length(x) <= 7)), itr) Tuple 128 empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (76 ms vs. 130 ms) 9 times less (705 kB vs. 7 MB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) rec_unrolled_foreach((x->@assert(length(x) <= 7)), itr) Tuple 1 nonempty singleton Tuple similar (optimized out) similar (40 ns vs. 40 ns) similar (50 ms vs. 51 ms) similar (100 kB vs. 94 kB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) rec_unrolled_foreach((x->@assert(length(x) <= 7)), itr) Tuple 2 nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (52 ms vs. 52 ms) similar (117 kB vs. 157 kB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) rec_unrolled_foreach((x->@assert(length(x) <= 7)), itr) Tuple 3 nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (51 ms vs. 54 ms) 2 times less (120 kB vs. 289 kB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) rec_unrolled_foreach((x->@assert(length(x) <= 7)), itr) Tuple 4 nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (75 ms vs. 58 ms) 2 times less (187 kB vs. 421 kB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) rec_unrolled_foreach((x->@assert(length(x) <= 7)), itr) Tuple 5 nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (71 ms vs. 60 ms) 2 times less (191 kB vs. 563 kB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) rec_unrolled_foreach((x->@assert(length(x) <= 7)), itr) Tuple 6 nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (71 ms vs. 65 ms) 3 times less (195 kB vs. 601 kB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) rec_unrolled_foreach((x->@assert(length(x) <= 7)), itr) Tuple 7 nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (65 ms vs. 62 ms) 3 times less (213 kB vs. 692 kB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) rec_unrolled_foreach((x->@assert(length(x) <= 7)), itr) Tuple 8 nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (65 ms vs. 63 ms) 3 times less (217 kB vs. 779 kB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) rec_unrolled_foreach((x->@assert(length(x) <= 7)), itr) Tuple 16 nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (66 ms vs. 73 ms) 4 times less (273 kB vs. 1 MB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) rec_unrolled_foreach((x->@assert(length(x) <= 7)), itr) Tuple 32 nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (66 ms vs. 96 ms) 6 times less (346 kB vs. 2 MB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) rec_unrolled_foreach((x->@assert(length(x) <= 7)), itr) Tuple 128 nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (71 ms vs. 111 ms) 9 times less (695 kB vs. 6 MB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) rec_unrolled_foreach((x->@assert(length(x) <= 7)), itr) Tuple 1 nonempty non-singleton Tuple similar (optimized out) similar (49 ns vs. 40 ns) similar (45 ms vs. 49 ms) similar (73 kB vs. 92 kB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) rec_unrolled_foreach((x->@assert(length(x) <= 7)), itr) Tuple 2 nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (45 ms vs. 49 ms) similar (115 kB vs. 154 kB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) rec_unrolled_foreach((x->@assert(length(x) <= 7)), itr) Tuple 3 nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (45 ms vs. 53 ms) 2 times less (122 kB vs. 289 kB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) rec_unrolled_foreach((x->@assert(length(x) <= 7)), itr) Tuple 4 nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (70 ms vs. 57 ms) 2 times less (190 kB vs. 426 kB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) rec_unrolled_foreach((x->@assert(length(x) <= 7)), itr) Tuple 5 nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (63 ms vs. 61 ms) 2 times less (198 kB vs. 572 kB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) rec_unrolled_foreach((x->@assert(length(x) <= 7)), itr) Tuple 6 nonempty non-singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (65 ms vs. 64 ms) 3 times less (207 kB vs. 624 kB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) rec_unrolled_foreach((x->@assert(length(x) <= 7)), itr) Tuple 7 nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (64 ms vs. 65 ms) 3 times less (224 kB vs. 718 kB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) rec_unrolled_foreach((x->@assert(length(x) <= 7)), itr) Tuple 8 nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (62 ms vs. 66 ms) 3 times less (232 kB vs. 825 kB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) rec_unrolled_foreach((x->@assert(length(x) <= 7)), itr) Tuple 16 nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (66 ms vs. 82 ms) 4 times less (324 kB vs. 2 MB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) rec_unrolled_foreach((x->@assert(length(x) <= 7)), itr) Tuple 32 nonempty non-singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (65 ms vs. 112 ms) 7 times less (468 kB vs. 3 MB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) rec_unrolled_foreach((x->@assert(length(x) <= 7)), itr) Tuple 128 nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (71 ms vs. 114 ms) 6 times less (1 MB vs. 8 MB)
unrolled_reduce(tuple, itr, ()) rec_unrolled_reduce(tuple, itr, ()) Tuple 1 empty singleton Tuple similar (optimized out) similar (49 ns vs. 49 ns) similar (29 ms vs. 28 ms) similar (72 kB vs. 116 kB)
unrolled_reduce(tuple, itr, ()) rec_unrolled_reduce(tuple, itr, ()) Tuple 1 nonempty singleton Tuple similar (optimized out) similar (40 ns vs. 40 ns) similar (28 ms vs. 28 ms) similar (102 kB vs. 117 kB)
unrolled_reduce(tuple, itr, ()) rec_unrolled_reduce(tuple, itr, ()) Tuple 1 nonempty non-singleton Tuple similar (8 LLVM lines) similar (50 ns vs. 60 ns) similar (29 ms vs. 30 ms) similar (220 kB vs. 118 kB)
unrolled_reduce(tuple, itr, ()) rec_unrolled_reduce(tuple, itr, ()) Tuple 1 empty singleton Tuple similar (optimized out) similar (40 ns vs. 49 ns) similar (28 ms vs. 27 ms) similar (72 kB vs. 116 kB)
unrolled_reduce(tuple, itr, ()) rec_unrolled_reduce(tuple, itr, ()) Tuple 2 identical empty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (28 ms vs. 28 ms) 2 times less (79 kB vs. 167 kB)
unrolled_reduce(tuple, itr, ()) rec_unrolled_reduce(tuple, itr, ()) Tuple 3 identical empty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (28 ms vs. 31 ms) 2 times less (108 kB vs. 321 kB)
unrolled_reduce(tuple, itr, ()) rec_unrolled_reduce(tuple, itr, ()) Tuple 4 identical empty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (57 ms vs. 32 ms) 5 times more (2 MB vs. 372 kB)
unrolled_reduce(tuple, itr, ()) rec_unrolled_reduce(tuple, itr, ()) Tuple 5 identical empty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (60 ms vs. 43 ms) 3 times more (2 MB vs. 592 kB)
unrolled_reduce(tuple, itr, ()) rec_unrolled_reduce(tuple, itr, ()) Tuple 6 identical empty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (57 ms vs. 40 ms) 3 times more (2 MB vs. 646 kB)
unrolled_reduce(tuple, itr, ()) rec_unrolled_reduce(tuple, itr, ()) Tuple 7 identical empty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (57 ms vs. 45 ms) 2 times more (2 MB vs. 867 kB)
unrolled_reduce(tuple, itr, ()) rec_unrolled_reduce(tuple, itr, ()) Tuple 8 identical empty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (58 ms vs. 46 ms) 2 times more (2 MB vs. 922 kB)
unrolled_reduce(tuple, itr, ()) rec_unrolled_reduce(tuple, itr, ()) Tuple 16 identical empty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (59 ms vs. 81 ms) similar (2 MB vs. 2 MB)
unrolled_reduce(tuple, itr, ()) rec_unrolled_reduce(tuple, itr, ()) Tuple 32 identical empty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) 2 times less (59 ms vs. 143 ms) 2 times less (2 MB vs. 4 MB)
unrolled_reduce(tuple, itr, ()) rec_unrolled_reduce(tuple, itr, ()) Tuple 1 nonempty singleton Tuple similar (optimized out) similar (49 ns vs. 40 ns) similar (28 ms vs. 28 ms) similar (102 kB vs. 117 kB)
unrolled_reduce(tuple, itr, ()) rec_unrolled_reduce(tuple, itr, ()) Tuple 2 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (27 ms vs. 27 ms) similar (105 kB vs. 167 kB)
unrolled_reduce(tuple, itr, ()) rec_unrolled_reduce(tuple, itr, ()) Tuple 3 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (30 ms vs. 33 ms) 2 times less (108 kB vs. 322 kB)
unrolled_reduce(tuple, itr, ()) rec_unrolled_reduce(tuple, itr, ()) Tuple 4 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (61 ms vs. 35 ms) 5 times more (2 MB vs. 373 kB)
unrolled_reduce(tuple, itr, ()) rec_unrolled_reduce(tuple, itr, ()) Tuple 5 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (58 ms vs. 40 ms) 3 times more (2 MB vs. 592 kB)
unrolled_reduce(tuple, itr, ()) rec_unrolled_reduce(tuple, itr, ()) Tuple 6 identical nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (59 ms vs. 39 ms) 3 times more (2 MB vs. 646 kB)
unrolled_reduce(tuple, itr, ()) rec_unrolled_reduce(tuple, itr, ()) Tuple 7 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (58 ms vs. 48 ms) 2 times more (2 MB vs. 868 kB)
unrolled_reduce(tuple, itr, ()) rec_unrolled_reduce(tuple, itr, ()) Tuple 8 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (58 ms vs. 48 ms) 2 times more (2 MB vs. 923 kB)
unrolled_reduce(tuple, itr, ()) rec_unrolled_reduce(tuple, itr, ()) Tuple 16 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (58 ms vs. 80 ms) similar (2 MB vs. 2 MB)
unrolled_reduce(tuple, itr, ()) rec_unrolled_reduce(tuple, itr, ()) Tuple 32 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) 2 times less (59 ms vs. 150 ms) 2 times less (2 MB vs. 4 MB)
unrolled_reduce(tuple, itr, ()) rec_unrolled_reduce(tuple, itr, ()) Tuple 1 nonempty non-singleton Tuple similar (8 LLVM lines) similar (50 ns vs. 49 ns) similar (29 ms vs. 29 ms) similar (220 kB vs. 118 kB)
unrolled_reduce(tuple, itr, ()) rec_unrolled_reduce(tuple, itr, ()) Tuple 2 identical nonempty non-singleton Tuples similar (8 LLVM lines) similar (49 ns vs. 49 ns) similar (29 ms vs. 29 ms) similar (243 kB vs. 173 kB)
unrolled_reduce(tuple, itr, ()) rec_unrolled_reduce(tuple, itr, ()) Tuple 3 identical nonempty non-singleton Tuples similar (12 LLVM lines) similar (49 ns vs. 60 ns) similar (29 ms vs. 39 ms) similar (289 kB vs. 436 kB)
unrolled_reduce(tuple, itr, ()) rec_unrolled_reduce(tuple, itr, ()) Tuple 4 identical nonempty non-singleton Tuples similar (8 LLVM lines) similar (49 ns vs. 49 ns) similar (59 ms vs. 41 ms) 4 times more (2 MB vs. 496 kB)
unrolled_reduce(tuple, itr, ()) rec_unrolled_reduce(tuple, itr, ()) Tuple 5 identical nonempty non-singleton Tuples similar (12 LLVM lines) similar (49 ns vs. 49 ns) similar (59 ms vs. 51 ms) 2 times more (2 MB vs. 757 kB)
unrolled_reduce(tuple, itr, ()) rec_unrolled_reduce(tuple, itr, ()) Tuple 6 identical nonempty non-singleton Tuples similar (12 LLVM lines) similar (49 ns vs. 49 ns) similar (58 ms vs. 48 ms) 2 times more (2 MB vs. 824 kB)
unrolled_reduce(tuple, itr, ()) rec_unrolled_reduce(tuple, itr, ()) Tuple 7 identical nonempty non-singleton Tuples similar (16 LLVM lines) similar (60 ns vs. 49 ns) similar (59 ms vs. 61 ms) 2 times more (2 MB vs. 1 MB)
unrolled_reduce(tuple, itr, ()) rec_unrolled_reduce(tuple, itr, ()) Tuple 8 identical nonempty non-singleton Tuples similar (12 LLVM lines) similar (49 ns vs. 49 ns) similar (60 ms vs. 69 ms) similar (2 MB vs. 1 MB)
unrolled_reduce(tuple, itr, ()) rec_unrolled_reduce(tuple, itr, ()) Tuple 16 identical nonempty non-singleton Tuples similar (20 LLVM lines) similar (49 ns vs. 49 ns) similar (63 ms vs. 109 ms) similar (2 MB vs. 3 MB)
unrolled_reduce(tuple, itr, ()) rec_unrolled_reduce(tuple, itr, ()) Tuple 32 identical nonempty non-singleton Tuples similar (36 LLVM lines) similar (60 ns vs. 50 ns) 3 times less (66 ms vs. 220 ms) 2 times less (3 MB vs. 6 MB)
unrolled_reduce(tuple, itr, ()) rec_unrolled_reduce(tuple, itr, ()) Tuple 1 empty singleton Tuple similar (optimized out) similar (40 ns vs. 40 ns) similar (30 ms vs. 28 ms) similar (72 kB vs. 116 kB)
unrolled_reduce(tuple, itr, ()) rec_unrolled_reduce(tuple, itr, ()) Tuple 2 empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (32 ms vs. 31 ms) similar (109 kB vs. 167 kB)
unrolled_reduce(tuple, itr, ()) rec_unrolled_reduce(tuple, itr, ()) Tuple 3 empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (30 ms vs. 33 ms) 2 times less (112 kB vs. 321 kB)
unrolled_reduce(tuple, itr, ()) rec_unrolled_reduce(tuple, itr, ()) Tuple 4 empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (56 ms vs. 31 ms) 4 times more (2 MB vs. 406 kB)
unrolled_reduce(tuple, itr, ()) rec_unrolled_reduce(tuple, itr, ()) Tuple 5 empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (55 ms vs. 37 ms) 2 times more (2 MB vs. 661 kB)
unrolled_reduce(tuple, itr, ()) rec_unrolled_reduce(tuple, itr, ()) Tuple 6 empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (58 ms vs. 40 ms) 2 times more (2 MB vs. 749 kB)
unrolled_reduce(tuple, itr, ()) rec_unrolled_reduce(tuple, itr, ()) Tuple 7 empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (55 ms vs. 48 ms) similar (2 MB vs. 1 MB)
unrolled_reduce(tuple, itr, ()) rec_unrolled_reduce(tuple, itr, ()) Tuple 8 empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (55 ms vs. 51 ms) similar (2 MB vs. 1 MB)
unrolled_reduce(tuple, itr, ()) rec_unrolled_reduce(tuple, itr, ()) Tuple 16 empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (56 ms vs. 87 ms) 2 times less (2 MB vs. 5 MB)
unrolled_reduce(tuple, itr, ()) rec_unrolled_reduce(tuple, itr, ()) Tuple 32 empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) 5 times less (58 ms vs. 299 ms) 8 times less (2 MB vs. 18 MB)
unrolled_reduce(tuple, itr, ()) rec_unrolled_reduce(tuple, itr, ()) Tuple 1 nonempty singleton Tuple similar (optimized out) similar (49 ns vs. 40 ns) similar (26 ms vs. 26 ms) similar (102 kB vs. 117 kB)
unrolled_reduce(tuple, itr, ()) rec_unrolled_reduce(tuple, itr, ()) Tuple 2 nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (29 ms vs. 27 ms) similar (109 kB vs. 167 kB)
unrolled_reduce(tuple, itr, ()) rec_unrolled_reduce(tuple, itr, ()) Tuple 3 nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (28 ms vs. 31 ms) 2 times less (112 kB vs. 322 kB)
unrolled_reduce(tuple, itr, ()) rec_unrolled_reduce(tuple, itr, ()) Tuple 4 nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (61 ms vs. 33 ms) 4 times more (2 MB vs. 441 kB)
unrolled_reduce(tuple, itr, ()) rec_unrolled_reduce(tuple, itr, ()) Tuple 5 nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (53 ms vs. 36 ms) 2 times more (2 MB vs. 730 kB)
unrolled_reduce(tuple, itr, ()) rec_unrolled_reduce(tuple, itr, ()) Tuple 6 nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (58 ms vs. 40 ms) 2 times more (2 MB vs. 787 kB)
unrolled_reduce(tuple, itr, ()) rec_unrolled_reduce(tuple, itr, ()) Tuple 7 nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (52 ms vs. 44 ms) similar (2 MB vs. 1 MB)
unrolled_reduce(tuple, itr, ()) rec_unrolled_reduce(tuple, itr, ()) Tuple 8 nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (51 ms vs. 45 ms) similar (2 MB vs. 1 MB)
unrolled_reduce(tuple, itr, ()) rec_unrolled_reduce(tuple, itr, ()) Tuple 16 nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (52 ms vs. 89 ms) 2 times less (2 MB vs. 6 MB)
unrolled_reduce(tuple, itr, ()) rec_unrolled_reduce(tuple, itr, ()) Tuple 32 nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) 5 times less (56 ms vs. 328 ms) 10 times less (2 MB vs. 21 MB)
unrolled_reduce(tuple, itr, ()) rec_unrolled_reduce(tuple, itr, ()) Tuple 1 nonempty non-singleton Tuple similar (8 LLVM lines) similar (49 ns vs. 49 ns) similar (25 ms vs. 25 ms) similar (220 kB vs. 118 kB)
unrolled_reduce(tuple, itr, ()) rec_unrolled_reduce(tuple, itr, ()) Tuple 2 nonempty non-singleton Tuples similar (11 LLVM lines) similar (60 ns vs. 50 ns) similar (26 ms vs. 26 ms) similar (290 kB vs. 174 kB)
unrolled_reduce(tuple, itr, ()) rec_unrolled_reduce(tuple, itr, ()) Tuple 3 nonempty non-singleton Tuples similar (14 LLVM lines) similar (49 ns vs. 50 ns) similar (26 ms vs. 36 ms) similar (310 kB vs. 437 kB)
unrolled_reduce(tuple, itr, ()) rec_unrolled_reduce(tuple, itr, ()) Tuple 4 nonempty non-singleton Tuples similar (17 LLVM lines) similar (50 ns vs. 49 ns) similar (52 ms vs. 36 ms) 3 times more (2 MB vs. 564 kB)
unrolled_reduce(tuple, itr, ()) rec_unrolled_reduce(tuple, itr, ()) Tuple 5 nonempty non-singleton Tuples similar (20 LLVM lines) similar (60 ns vs. 49 ns) similar (62 ms vs. 45 ms) 2 times more (2 MB vs. 895 kB)
unrolled_reduce(tuple, itr, ()) rec_unrolled_reduce(tuple, itr, ()) Tuple 6 nonempty non-singleton Tuples similar (23 LLVM lines) similar (60 ns vs. 60 ns) similar (56 ms vs. 47 ms) 2 times more (2 MB vs. 965 kB)
unrolled_reduce(tuple, itr, ()) rec_unrolled_reduce(tuple, itr, ()) Tuple 7 nonempty non-singleton Tuples similar (26 LLVM lines) similar (60 ns vs. 60 ns) similar (54 ms vs. 57 ms) similar (2 MB vs. 2 MB)
unrolled_reduce(tuple, itr, ()) rec_unrolled_reduce(tuple, itr, ()) Tuple 8 nonempty non-singleton Tuples similar (29 LLVM lines) similar (60 ns vs. 60 ns) similar (54 ms vs. 58 ms) similar (2 MB vs. 2 MB)
unrolled_reduce(tuple, itr, ()) rec_unrolled_reduce(tuple, itr, ()) Tuple 16 nonempty non-singleton Tuples similar (53 LLVM lines) similar (69 ns vs. 80 ns) similar (59 ms vs. 117 ms) 2 times less (3 MB vs. 6 MB)
unrolled_reduce(tuple, itr, ()) rec_unrolled_reduce(tuple, itr, ()) Tuple 32 nonempty non-singleton Tuples similar (93 LLVM lines) similar (89 ns vs. 89 ns) 5 times less (67 ms vs. 373 ms) 7 times less (3 MB vs. 23 MB)
UnrolledUtilities.unrolled_accumulate_into_tuple(tuple, itr, ()) rec_unrolled_accumulate(tuple, itr, ()) Tuple 1 empty singleton Tuple similar (optimized out) similar (49 ns vs. 49 ns) similar (28 ms vs. 32 ms) 3 times less (67 kB vs. 255 kB)
UnrolledUtilities.unrolled_accumulate_into_tuple(tuple, itr, ()) rec_unrolled_accumulate(tuple, itr, ()) Tuple 1 nonempty singleton Tuple similar (optimized out) similar (49 ns vs. 40 ns) similar (28 ms vs. 33 ms) 2 times less (97 kB vs. 284 kB)
UnrolledUtilities.unrolled_accumulate_into_tuple(tuple, itr, ()) rec_unrolled_accumulate(tuple, itr, ()) Tuple 1 nonempty non-singleton Tuple similar (8 LLVM lines) similar (50 ns vs. 49 ns) similar (28 ms vs. 33 ms) similar (188 kB vs. 326 kB)
UnrolledUtilities.unrolled_accumulate_into_tuple(tuple, itr, ()) rec_unrolled_accumulate(tuple, itr, ()) Tuple 1 empty singleton Tuple similar (optimized out) similar (40 ns vs. 49 ns) similar (28 ms vs. 33 ms) 3 times less (67 kB vs. 255 kB)
UnrolledUtilities.unrolled_accumulate_into_tuple(tuple, itr, ()) rec_unrolled_accumulate(tuple, itr, ()) Tuple 2 identical empty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (28 ms vs. 38 ms) 4 times less (74 kB vs. 343 kB)
UnrolledUtilities.unrolled_accumulate_into_tuple(tuple, itr, ()) rec_unrolled_accumulate(tuple, itr, ()) Tuple 3 identical empty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (29 ms vs. 39 ms) 3 times less (102 kB vs. 385 kB)
UnrolledUtilities.unrolled_accumulate_into_tuple(tuple, itr, ()) rec_unrolled_accumulate(tuple, itr, ()) Tuple 4 identical empty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (63 ms vs. 39 ms) similar (203 kB vs. 402 kB)
UnrolledUtilities.unrolled_accumulate_into_tuple(tuple, itr, ()) rec_unrolled_accumulate(tuple, itr, ()) Tuple 5 identical empty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (67 ms vs. 62 ms) 2 times less (209 kB vs. 471 kB)
UnrolledUtilities.unrolled_accumulate_into_tuple(tuple, itr, ()) rec_unrolled_accumulate(tuple, itr, ()) Tuple 6 identical empty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (64 ms vs. 58 ms) 2 times less (215 kB vs. 491 kB)
UnrolledUtilities.unrolled_accumulate_into_tuple(tuple, itr, ()) rec_unrolled_accumulate(tuple, itr, ()) Tuple 7 identical empty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (62 ms vs. 59 ms) 2 times less (221 kB vs. 509 kB)
UnrolledUtilities.unrolled_accumulate_into_tuple(tuple, itr, ()) rec_unrolled_accumulate(tuple, itr, ()) Tuple 8 identical empty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (63 ms vs. 58 ms) 2 times less (227 kB vs. 528 kB)
UnrolledUtilities.unrolled_accumulate_into_tuple(tuple, itr, ()) rec_unrolled_accumulate(tuple, itr, ()) Tuple 16 identical empty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (64 ms vs. 60 ms) 2 times less (275 kB vs. 686 kB)
UnrolledUtilities.unrolled_accumulate_into_tuple(tuple, itr, ()) rec_unrolled_accumulate(tuple, itr, ()) Tuple 32 identical empty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (62 ms vs. 61 ms) 2 times less (370 kB vs. 1 MB)
UnrolledUtilities.unrolled_accumulate_into_tuple(tuple, itr, ()) rec_unrolled_accumulate(tuple, itr, ()) Tuple 1 nonempty singleton Tuple similar (optimized out) similar (40 ns vs. 40 ns) similar (28 ms vs. 34 ms) 2 times less (97 kB vs. 284 kB)
UnrolledUtilities.unrolled_accumulate_into_tuple(tuple, itr, ()) rec_unrolled_accumulate(tuple, itr, ()) Tuple 2 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (27 ms vs. 37 ms) 3 times less (99 kB vs. 369 kB)
UnrolledUtilities.unrolled_accumulate_into_tuple(tuple, itr, ()) rec_unrolled_accumulate(tuple, itr, ()) Tuple 3 identical nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (29 ms vs. 39 ms) 3 times less (102 kB vs. 385 kB)
UnrolledUtilities.unrolled_accumulate_into_tuple(tuple, itr, ()) rec_unrolled_accumulate(tuple, itr, ()) Tuple 4 identical nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (69 ms vs. 43 ms) similar (204 kB vs. 403 kB)
UnrolledUtilities.unrolled_accumulate_into_tuple(tuple, itr, ()) rec_unrolled_accumulate(tuple, itr, ()) Tuple 5 identical nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (62 ms vs. 61 ms) 2 times less (210 kB vs. 471 kB)
UnrolledUtilities.unrolled_accumulate_into_tuple(tuple, itr, ()) rec_unrolled_accumulate(tuple, itr, ()) Tuple 6 identical nonempty singleton Tuples similar (optimized out) similar (41 ns vs. 40 ns) similar (63 ms vs. 57 ms) 2 times less (215 kB vs. 490 kB)
UnrolledUtilities.unrolled_accumulate_into_tuple(tuple, itr, ()) rec_unrolled_accumulate(tuple, itr, ()) Tuple 7 identical nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (65 ms vs. 63 ms) 2 times less (221 kB vs. 509 kB)
UnrolledUtilities.unrolled_accumulate_into_tuple(tuple, itr, ()) rec_unrolled_accumulate(tuple, itr, ()) Tuple 8 identical nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (64 ms vs. 61 ms) 2 times less (227 kB vs. 528 kB)
UnrolledUtilities.unrolled_accumulate_into_tuple(tuple, itr, ()) rec_unrolled_accumulate(tuple, itr, ()) Tuple 16 identical nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (65 ms vs. 61 ms) 2 times less (275 kB vs. 686 kB)
UnrolledUtilities.unrolled_accumulate_into_tuple(tuple, itr, ()) rec_unrolled_accumulate(tuple, itr, ()) Tuple 32 identical nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (66 ms vs. 63 ms) 2 times less (370 kB vs. 1 MB)
UnrolledUtilities.unrolled_accumulate_into_tuple(tuple, itr, ()) rec_unrolled_accumulate(tuple, itr, ()) Tuple 1 nonempty non-singleton Tuple similar (8 LLVM lines) similar (49 ns vs. 49 ns) similar (28 ms vs. 36 ms) similar (188 kB vs. 326 kB)
UnrolledUtilities.unrolled_accumulate_into_tuple(tuple, itr, ()) rec_unrolled_accumulate(tuple, itr, ()) Tuple 2 identical nonempty non-singleton Tuples similar (11 LLVM lines) similar (49 ns vs. 60 ns) similar (28 ms vs. 37 ms) 2 times less (205 kB vs. 606 kB)
UnrolledUtilities.unrolled_accumulate_into_tuple(tuple, itr, ()) rec_unrolled_accumulate(tuple, itr, ()) Tuple 3 identical nonempty non-singleton Tuples similar (16 LLVM lines) similar (50 ns vs. 50 ns) similar (30 ms vs. 37 ms) 2 times less (247 kB vs. 719 kB)
UnrolledUtilities.unrolled_accumulate_into_tuple(tuple, itr, ()) rec_unrolled_accumulate(tuple, itr, ()) Tuple 4 identical nonempty non-singleton Tuples similar (21 LLVM lines) similar (60 ns vs. 60 ns) similar (66 ms vs. 38 ms) 2 times less (358 kB vs. 811 kB)
UnrolledUtilities.unrolled_accumulate_into_tuple(tuple, itr, ()) rec_unrolled_accumulate(tuple, itr, ()) Tuple 5 identical nonempty non-singleton Tuples similar (31 LLVM lines) similar (60 ns vs. 60 ns) similar (67 ms vs. 57 ms) 2 times less (377 kB vs. 962 kB)
UnrolledUtilities.unrolled_accumulate_into_tuple(tuple, itr, ()) rec_unrolled_accumulate(tuple, itr, ()) Tuple 6 identical nonempty non-singleton Tuples similar (35 LLVM lines) similar (60 ns vs. 60 ns) similar (68 ms vs. 61 ms) 2 times less (396 kB vs. 1 MB)
UnrolledUtilities.unrolled_accumulate_into_tuple(tuple, itr, ()) rec_unrolled_accumulate(tuple, itr, ()) Tuple 7 identical nonempty non-singleton Tuples similar (49 LLVM lines) similar (60 ns vs. 60 ns) similar (68 ms vs. 60 ms) 2 times less (414 kB vs. 1 MB)
UnrolledUtilities.unrolled_accumulate_into_tuple(tuple, itr, ()) rec_unrolled_accumulate(tuple, itr, ()) Tuple 8 identical nonempty non-singleton Tuples similar (65 LLVM lines) similar (60 ns vs. 60 ns) similar (70 ms vs. 78 ms) 2 times less (434 kB vs. 1 MB)
UnrolledUtilities.unrolled_accumulate_into_tuple(tuple, itr, ()) rec_unrolled_accumulate(tuple, itr, ()) Tuple 16 identical nonempty non-singleton Tuples similar (265 LLVM lines) similar (90 ns vs. 90 ns) similar (96 ms vs. 92 ms) 4 times less (586 kB vs. 2 MB)
UnrolledUtilities.unrolled_accumulate_into_tuple(tuple, itr, ()) rec_unrolled_accumulate(tuple, itr, ()) Tuple 32 identical nonempty non-singleton Tuples similar (857 LLVM lines) similar (281 ns vs. 350 ns) similar (315 ms vs. 321 ms) 6 times less (894 kB vs. 6 MB)
UnrolledUtilities.unrolled_accumulate_into_tuple(tuple, itr, ()) rec_unrolled_accumulate(tuple, itr, ()) Tuple 1 empty singleton Tuple similar (optimized out) similar (40 ns vs. 40 ns) similar (30 ms vs. 36 ms) 3 times less (67 kB vs. 255 kB)
UnrolledUtilities.unrolled_accumulate_into_tuple(tuple, itr, ()) rec_unrolled_accumulate(tuple, itr, ()) Tuple 2 empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (31 ms vs. 43 ms) 3 times less (99 kB vs. 368 kB)
UnrolledUtilities.unrolled_accumulate_into_tuple(tuple, itr, ()) rec_unrolled_accumulate(tuple, itr, ()) Tuple 3 empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (29 ms vs. 42 ms) 3 times less (102 kB vs. 385 kB)
UnrolledUtilities.unrolled_accumulate_into_tuple(tuple, itr, ()) rec_unrolled_accumulate(tuple, itr, ()) Tuple 4 empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (60 ms vs. 39 ms) similar (204 kB vs. 403 kB)
UnrolledUtilities.unrolled_accumulate_into_tuple(tuple, itr, ()) rec_unrolled_accumulate(tuple, itr, ()) Tuple 5 empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (61 ms vs. 58 ms) 2 times less (210 kB vs. 472 kB)
UnrolledUtilities.unrolled_accumulate_into_tuple(tuple, itr, ()) rec_unrolled_accumulate(tuple, itr, ()) Tuple 6 empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (64 ms vs. 60 ms) 2 times less (216 kB vs. 490 kB)
UnrolledUtilities.unrolled_accumulate_into_tuple(tuple, itr, ()) rec_unrolled_accumulate(tuple, itr, ()) Tuple 7 empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (62 ms vs. 56 ms) 2 times less (222 kB vs. 510 kB)
UnrolledUtilities.unrolled_accumulate_into_tuple(tuple, itr, ()) rec_unrolled_accumulate(tuple, itr, ()) Tuple 8 empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (60 ms vs. 56 ms) 2 times less (228 kB vs. 528 kB)
UnrolledUtilities.unrolled_accumulate_into_tuple(tuple, itr, ()) rec_unrolled_accumulate(tuple, itr, ()) Tuple 16 empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (62 ms vs. 59 ms) 2 times less (276 kB vs. 702 kB)
UnrolledUtilities.unrolled_accumulate_into_tuple(tuple, itr, ()) rec_unrolled_accumulate(tuple, itr, ()) Tuple 32 empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (66 ms vs. 62 ms) 2 times less (371 kB vs. 1 MB)
UnrolledUtilities.unrolled_accumulate_into_tuple(tuple, itr, ()) rec_unrolled_accumulate(tuple, itr, ()) Tuple 1 nonempty singleton Tuple similar (optimized out) similar (40 ns vs. 40 ns) similar (26 ms vs. 31 ms) 2 times less (97 kB vs. 284 kB)
UnrolledUtilities.unrolled_accumulate_into_tuple(tuple, itr, ()) rec_unrolled_accumulate(tuple, itr, ()) Tuple 2 nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (28 ms vs. 39 ms) 3 times less (99 kB vs. 369 kB)
UnrolledUtilities.unrolled_accumulate_into_tuple(tuple, itr, ()) rec_unrolled_accumulate(tuple, itr, ()) Tuple 3 nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (28 ms vs. 39 ms) 3 times less (102 kB vs. 385 kB)
UnrolledUtilities.unrolled_accumulate_into_tuple(tuple, itr, ()) rec_unrolled_accumulate(tuple, itr, ()) Tuple 4 nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (67 ms vs. 41 ms) similar (204 kB vs. 403 kB)
UnrolledUtilities.unrolled_accumulate_into_tuple(tuple, itr, ()) rec_unrolled_accumulate(tuple, itr, ()) Tuple 5 nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (60 ms vs. 58 ms) 2 times less (210 kB vs. 472 kB)
UnrolledUtilities.unrolled_accumulate_into_tuple(tuple, itr, ()) rec_unrolled_accumulate(tuple, itr, ()) Tuple 6 nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (62 ms vs. 59 ms) 2 times less (216 kB vs. 491 kB)
UnrolledUtilities.unrolled_accumulate_into_tuple(tuple, itr, ()) rec_unrolled_accumulate(tuple, itr, ()) Tuple 7 nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (56 ms vs. 52 ms) 2 times less (222 kB vs. 509 kB)
UnrolledUtilities.unrolled_accumulate_into_tuple(tuple, itr, ()) rec_unrolled_accumulate(tuple, itr, ()) Tuple 8 nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (58 ms vs. 53 ms) 2 times less (228 kB vs. 528 kB)
UnrolledUtilities.unrolled_accumulate_into_tuple(tuple, itr, ()) rec_unrolled_accumulate(tuple, itr, ()) Tuple 16 nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (58 ms vs. 54 ms) 2 times less (276 kB vs. 703 kB)
UnrolledUtilities.unrolled_accumulate_into_tuple(tuple, itr, ()) rec_unrolled_accumulate(tuple, itr, ()) Tuple 32 nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (61 ms vs. 57 ms) 2 times less (371 kB vs. 1 MB)
UnrolledUtilities.unrolled_accumulate_into_tuple(tuple, itr, ()) rec_unrolled_accumulate(tuple, itr, ()) Tuple 1 nonempty non-singleton Tuple similar (8 LLVM lines) similar (49 ns vs. 50 ns) similar (25 ms vs. 29 ms) similar (188 kB vs. 326 kB)
UnrolledUtilities.unrolled_accumulate_into_tuple(tuple, itr, ()) rec_unrolled_accumulate(tuple, itr, ()) Tuple 2 nonempty non-singleton Tuples similar (13 LLVM lines) similar (49 ns vs. 60 ns) similar (26 ms vs. 33 ms) 2 times less (230 kB vs. 631 kB)
UnrolledUtilities.unrolled_accumulate_into_tuple(tuple, itr, ()) rec_unrolled_accumulate(tuple, itr, ()) Tuple 3 nonempty non-singleton Tuples similar (20 LLVM lines) similar (49 ns vs. 60 ns) similar (27 ms vs. 34 ms) 2 times less (247 kB vs. 719 kB)
UnrolledUtilities.unrolled_accumulate_into_tuple(tuple, itr, ()) rec_unrolled_accumulate(tuple, itr, ()) Tuple 4 nonempty non-singleton Tuples similar (29 LLVM lines) similar (60 ns vs. 60 ns) similar (59 ms vs. 36 ms) 2 times less (359 kB vs. 812 kB)
UnrolledUtilities.unrolled_accumulate_into_tuple(tuple, itr, ()) rec_unrolled_accumulate(tuple, itr, ()) Tuple 5 nonempty non-singleton Tuples similar (40 LLVM lines) similar (60 ns vs. 60 ns) similar (92 ms vs. 55 ms) 2 times less (378 kB vs. 963 kB)
UnrolledUtilities.unrolled_accumulate_into_tuple(tuple, itr, ()) rec_unrolled_accumulate(tuple, itr, ()) Tuple 6 nonempty non-singleton Tuples similar (53 LLVM lines) similar (69 ns vs. 69 ns) similar (63 ms vs. 56 ms) 2 times less (397 kB vs. 1 MB)
UnrolledUtilities.unrolled_accumulate_into_tuple(tuple, itr, ()) rec_unrolled_accumulate(tuple, itr, ()) Tuple 7 nonempty non-singleton Tuples similar (68 LLVM lines) similar (69 ns vs. 69 ns) similar (64 ms vs. 59 ms) 2 times less (415 kB vs. 1 MB)
UnrolledUtilities.unrolled_accumulate_into_tuple(tuple, itr, ()) rec_unrolled_accumulate(tuple, itr, ()) Tuple 8 nonempty non-singleton Tuples similar (85 LLVM lines) similar (70 ns vs. 69 ns) similar (66 ms vs. 62 ms) 2 times less (436 kB vs. 1 MB)
UnrolledUtilities.unrolled_accumulate_into_tuple(tuple, itr, ()) rec_unrolled_accumulate(tuple, itr, ()) Tuple 16 nonempty non-singleton Tuples similar (743 LLVM lines) similar (411 ns vs. 451 ns) similar (232 ms vs. 227 ms) 4 times less (590 kB vs. 2 MB)
UnrolledUtilities.unrolled_accumulate_into_tuple(tuple, itr, ()) rec_unrolled_accumulate(tuple, itr, ()) Tuple 32 nonempty non-singleton Tuples similar (2972 LLVM lines) similar (2 μs vs. 2 μs) similar (1 s vs. 1 s) 6 times less (910 kB vs. 6 MB)
UnrolledUtilities.unrolled_ifelse((x->length(x) >= length(itr[end])), identity, error, itr) rec_unrolled_ifelse((x->length(x) >= length(itr[end])), identity, error, itr) Tuple 1 empty singleton Tuple similar (optimized out) similar (49 ns vs. 49 ns) similar (47 ms vs. 48 ms) similar (202 kB vs. 269 kB)
UnrolledUtilities.unrolled_ifelse((x->length(x) >= length(itr[end])), identity, error, itr) rec_unrolled_ifelse((x->length(x) >= length(itr[end])), identity, error, itr) Tuple 1 nonempty singleton Tuple similar (optimized out) similar (49 ns vs. 49 ns) similar (48 ms vs. 46 ms) similar (236 kB vs. 273 kB)
UnrolledUtilities.unrolled_ifelse((x->length(x) >= length(itr[end])), identity, error, itr) rec_unrolled_ifelse((x->length(x) >= length(itr[end])), identity, error, itr) Tuple 1 nonempty non-singleton Tuple similar (8 LLVM lines) similar (49 ns vs. 60 ns) similar (46 ms vs. 48 ms) similar (243 kB vs. 290 kB)
UnrolledUtilities.unrolled_ifelse((x->length(x) >= length(itr[end])), identity, error, itr) rec_unrolled_ifelse((x->length(x) >= length(itr[end])), identity, error, itr) Tuple 1 empty singleton Tuple similar (optimized out) similar (49 ns vs. 49 ns) similar (48 ms vs. 47 ms) similar (202 kB vs. 269 kB)
UnrolledUtilities.unrolled_ifelse((x->length(x) >= length(itr[end])), identity, error, itr) rec_unrolled_ifelse((x->length(x) >= length(itr[end])), identity, error, itr) Tuple 2 identical empty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (49 ms vs. 49 ms) similar (224 kB vs. 378 kB)
UnrolledUtilities.unrolled_ifelse((x->length(x) >= length(itr[end])), identity, error, itr) rec_unrolled_ifelse((x->length(x) >= length(itr[end])), identity, error, itr) Tuple 3 identical empty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (50 ms vs. 49 ms) similar (268 kB vs. 401 kB)
UnrolledUtilities.unrolled_ifelse((x->length(x) >= length(itr[end])), identity, error, itr) rec_unrolled_ifelse((x->length(x) >= length(itr[end])), identity, error, itr) Tuple 4 identical empty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (70 ms vs. 47 ms) similar (345 kB vs. 450 kB)
UnrolledUtilities.unrolled_ifelse((x->length(x) >= length(itr[end])), identity, error, itr) rec_unrolled_ifelse((x->length(x) >= length(itr[end])), identity, error, itr) Tuple 5 identical empty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (74 ms vs. 49 ms) similar (364 kB vs. 500 kB)
UnrolledUtilities.unrolled_ifelse((x->length(x) >= length(itr[end])), identity, error, itr) rec_unrolled_ifelse((x->length(x) >= length(itr[end])), identity, error, itr) Tuple 6 identical empty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (71 ms vs. 47 ms) similar (387 kB vs. 550 kB)
UnrolledUtilities.unrolled_ifelse((x->length(x) >= length(itr[end])), identity, error, itr) rec_unrolled_ifelse((x->length(x) >= length(itr[end])), identity, error, itr) Tuple 7 identical empty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (69 ms vs. 47 ms) similar (409 kB vs. 600 kB)
UnrolledUtilities.unrolled_ifelse((x->length(x) >= length(itr[end])), identity, error, itr) rec_unrolled_ifelse((x->length(x) >= length(itr[end])), identity, error, itr) Tuple 8 identical empty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (73 ms vs. 47 ms) similar (433 kB vs. 651 kB)
UnrolledUtilities.unrolled_ifelse((x->length(x) >= length(itr[end])), identity, error, itr) rec_unrolled_ifelse((x->length(x) >= length(itr[end])), identity, error, itr) Tuple 16 identical empty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (75 ms vs. 48 ms) similar (600 kB vs. 1 MB)
UnrolledUtilities.unrolled_ifelse((x->length(x) >= length(itr[end])), identity, error, itr) rec_unrolled_ifelse((x->length(x) >= length(itr[end])), identity, error, itr) Tuple 32 identical empty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (89 ms vs. 50 ms) 2 times less (944 kB vs. 2 MB)
UnrolledUtilities.unrolled_ifelse((x->length(x) >= length(itr[end])), identity, error, itr) rec_unrolled_ifelse((x->length(x) >= length(itr[end])), identity, error, itr) Tuple 128 identical empty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) 3 times more (194 ms vs. 63 ms) 2 times less (3 MB vs. 7 MB)
UnrolledUtilities.unrolled_ifelse((x->length(x) >= length(itr[end])), identity, error, itr) rec_unrolled_ifelse((x->length(x) >= length(itr[end])), identity, error, itr) Tuple 1 nonempty singleton Tuple similar (optimized out) similar (40 ns vs. 49 ns) similar (46 ms vs. 45 ms) similar (236 kB vs. 273 kB)
UnrolledUtilities.unrolled_ifelse((x->length(x) >= length(itr[end])), identity, error, itr) rec_unrolled_ifelse((x->length(x) >= length(itr[end])), identity, error, itr) Tuple 2 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (45 ms vs. 48 ms) similar (254 kB vs. 383 kB)
UnrolledUtilities.unrolled_ifelse((x->length(x) >= length(itr[end])), identity, error, itr) rec_unrolled_ifelse((x->length(x) >= length(itr[end])), identity, error, itr) Tuple 3 identical nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (51 ms vs. 48 ms) similar (272 kB vs. 406 kB)
UnrolledUtilities.unrolled_ifelse((x->length(x) >= length(itr[end])), identity, error, itr) rec_unrolled_ifelse((x->length(x) >= length(itr[end])), identity, error, itr) Tuple 4 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (76 ms vs. 54 ms) similar (350 kB vs. 455 kB)
UnrolledUtilities.unrolled_ifelse((x->length(x) >= length(itr[end])), identity, error, itr) rec_unrolled_ifelse((x->length(x) >= length(itr[end])), identity, error, itr) Tuple 5 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (72 ms vs. 49 ms) similar (369 kB vs. 505 kB)
UnrolledUtilities.unrolled_ifelse((x->length(x) >= length(itr[end])), identity, error, itr) rec_unrolled_ifelse((x->length(x) >= length(itr[end])), identity, error, itr) Tuple 6 identical nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (70 ms vs. 48 ms) similar (392 kB vs. 555 kB)
UnrolledUtilities.unrolled_ifelse((x->length(x) >= length(itr[end])), identity, error, itr) rec_unrolled_ifelse((x->length(x) >= length(itr[end])), identity, error, itr) Tuple 7 identical nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (73 ms vs. 49 ms) similar (414 kB vs. 605 kB)
UnrolledUtilities.unrolled_ifelse((x->length(x) >= length(itr[end])), identity, error, itr) rec_unrolled_ifelse((x->length(x) >= length(itr[end])), identity, error, itr) Tuple 8 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (74 ms vs. 47 ms) similar (438 kB vs. 656 kB)
UnrolledUtilities.unrolled_ifelse((x->length(x) >= length(itr[end])), identity, error, itr) rec_unrolled_ifelse((x->length(x) >= length(itr[end])), identity, error, itr) Tuple 16 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (79 ms vs. 49 ms) similar (605 kB vs. 1 MB)
UnrolledUtilities.unrolled_ifelse((x->length(x) >= length(itr[end])), identity, error, itr) rec_unrolled_ifelse((x->length(x) >= length(itr[end])), identity, error, itr) Tuple 32 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (95 ms vs. 53 ms) 2 times less (949 kB vs. 2 MB)
UnrolledUtilities.unrolled_ifelse((x->length(x) >= length(itr[end])), identity, error, itr) rec_unrolled_ifelse((x->length(x) >= length(itr[end])), identity, error, itr) Tuple 128 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) 3 times more (198 ms vs. 63 ms) 2 times less (3 MB vs. 7 MB)
UnrolledUtilities.unrolled_ifelse((x->length(x) >= length(itr[end])), identity, error, itr) rec_unrolled_ifelse((x->length(x) >= length(itr[end])), identity, error, itr) Tuple 1 nonempty non-singleton Tuple similar (8 LLVM lines) similar (49 ns vs. 50 ns) similar (50 ms vs. 48 ms) similar (243 kB vs. 290 kB)
UnrolledUtilities.unrolled_ifelse((x->length(x) >= length(itr[end])), identity, error, itr) rec_unrolled_ifelse((x->length(x) >= length(itr[end])), identity, error, itr) Tuple 2 identical nonempty non-singleton Tuples similar (8 LLVM lines) similar (49 ns vs. 49 ns) similar (46 ms vs. 52 ms) similar (276 kB vs. 406 kB)
UnrolledUtilities.unrolled_ifelse((x->length(x) >= length(itr[end])), identity, error, itr) rec_unrolled_ifelse((x->length(x) >= length(itr[end])), identity, error, itr) Tuple 3 identical nonempty non-singleton Tuples similar (8 LLVM lines) similar (49 ns vs. 49 ns) similar (47 ms vs. 49 ms) similar (333 kB vs. 438 kB)
UnrolledUtilities.unrolled_ifelse((x->length(x) >= length(itr[end])), identity, error, itr) rec_unrolled_ifelse((x->length(x) >= length(itr[end])), identity, error, itr) Tuple 4 identical nonempty non-singleton Tuples similar (8 LLVM lines) similar (49 ns vs. 50 ns) similar (69 ms vs. 48 ms) similar (425 kB vs. 491 kB)
UnrolledUtilities.unrolled_ifelse((x->length(x) >= length(itr[end])), identity, error, itr) rec_unrolled_ifelse((x->length(x) >= length(itr[end])), identity, error, itr) Tuple 5 identical nonempty non-singleton Tuples similar (8 LLVM lines) similar (49 ns vs. 49 ns) similar (68 ms vs. 53 ms) similar (459 kB vs. 546 kB)
UnrolledUtilities.unrolled_ifelse((x->length(x) >= length(itr[end])), identity, error, itr) rec_unrolled_ifelse((x->length(x) >= length(itr[end])), identity, error, itr) Tuple 6 identical nonempty non-singleton Tuples similar (8 LLVM lines) similar (49 ns vs. 50 ns) similar (73 ms vs. 52 ms) similar (500 kB vs. 604 kB)
UnrolledUtilities.unrolled_ifelse((x->length(x) >= length(itr[end])), identity, error, itr) rec_unrolled_ifelse((x->length(x) >= length(itr[end])), identity, error, itr) Tuple 7 identical nonempty non-singleton Tuples similar (8 LLVM lines) similar (60 ns vs. 60 ns) similar (71 ms vs. 52 ms) similar (536 kB vs. 663 kB)
UnrolledUtilities.unrolled_ifelse((x->length(x) >= length(itr[end])), identity, error, itr) rec_unrolled_ifelse((x->length(x) >= length(itr[end])), identity, error, itr) Tuple 8 identical nonempty non-singleton Tuples similar (8 LLVM lines) similar (49 ns vs. 60 ns) similar (73 ms vs. 53 ms) similar (575 kB vs. 723 kB)
UnrolledUtilities.unrolled_ifelse((x->length(x) >= length(itr[end])), identity, error, itr) rec_unrolled_ifelse((x->length(x) >= length(itr[end])), identity, error, itr) Tuple 16 identical nonempty non-singleton Tuples similar (8 LLVM lines) similar (49 ns vs. 60 ns) similar (82 ms vs. 58 ms) similar (855 kB vs. 1 MB)
UnrolledUtilities.unrolled_ifelse((x->length(x) >= length(itr[end])), identity, error, itr) rec_unrolled_ifelse((x->length(x) >= length(itr[end])), identity, error, itr) Tuple 32 identical nonempty non-singleton Tuples similar (8 LLVM lines) similar (49 ns vs. 60 ns) similar (103 ms vs. 66 ms) similar (1 MB vs. 2 MB)
UnrolledUtilities.unrolled_ifelse((x->length(x) >= length(itr[end])), identity, error, itr) rec_unrolled_ifelse((x->length(x) >= length(itr[end])), identity, error, itr) Tuple 128 identical nonempty non-singleton Tuples similar (8 LLVM lines) 124 times less (49 ns vs. 6 μs) 3 times more (230 ms vs. 70 ms) similar (5 MB vs. 7 MB)
UnrolledUtilities.unrolled_ifelse((x->length(x) >= length(itr[end])), identity, error, itr) rec_unrolled_ifelse((x->length(x) >= length(itr[end])), identity, error, itr) Tuple 1 empty singleton Tuple similar (optimized out) similar (49 ns vs. 49 ns) similar (51 ms vs. 48 ms) similar (202 kB vs. 269 kB)
UnrolledUtilities.unrolled_ifelse((x->length(x) >= length(itr[end])), identity, error, itr) rec_unrolled_ifelse((x->length(x) >= length(itr[end])), identity, error, itr) Tuple 2 empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (56 ms vs. 55 ms) similar (296 kB vs. 424 kB)
UnrolledUtilities.unrolled_ifelse((x->length(x) >= length(itr[end])), identity, error, itr) rec_unrolled_ifelse((x->length(x) >= length(itr[end])), identity, error, itr) Tuple 3 empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (55 ms vs. 56 ms) similar (314 kB vs. 564 kB)
UnrolledUtilities.unrolled_ifelse((x->length(x) >= length(itr[end])), identity, error, itr) rec_unrolled_ifelse((x->length(x) >= length(itr[end])), identity, error, itr) Tuple 4 empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (85 ms vs. 69 ms) 2 times less (440 kB vs. 1 MB)
UnrolledUtilities.unrolled_ifelse((x->length(x) >= length(itr[end])), identity, error, itr) rec_unrolled_ifelse((x->length(x) >= length(itr[end])), identity, error, itr) Tuple 5 empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (78 ms vs. 74 ms) 2 times less (460 kB vs. 1 MB)
UnrolledUtilities.unrolled_ifelse((x->length(x) >= length(itr[end])), identity, error, itr) rec_unrolled_ifelse((x->length(x) >= length(itr[end])), identity, error, itr) Tuple 6 empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (82 ms vs. 74 ms) 2 times less (483 kB vs. 1 MB)
UnrolledUtilities.unrolled_ifelse((x->length(x) >= length(itr[end])), identity, error, itr) rec_unrolled_ifelse((x->length(x) >= length(itr[end])), identity, error, itr) Tuple 7 empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (83 ms vs. 82 ms) 2 times less (553 kB vs. 1 MB)
UnrolledUtilities.unrolled_ifelse((x->length(x) >= length(itr[end])), identity, error, itr) rec_unrolled_ifelse((x->length(x) >= length(itr[end])), identity, error, itr) Tuple 8 empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 41 ns) similar (84 ms vs. 86 ms) 2 times less (577 kB vs. 2 MB)
UnrolledUtilities.unrolled_ifelse((x->length(x) >= length(itr[end])), identity, error, itr) rec_unrolled_ifelse((x->length(x) >= length(itr[end])), identity, error, itr) Tuple 16 empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (102 ms vs. 118 ms) 2 times less (840 kB vs. 2 MB)
UnrolledUtilities.unrolled_ifelse((x->length(x) >= length(itr[end])), identity, error, itr) rec_unrolled_ifelse((x->length(x) >= length(itr[end])), identity, error, itr) Tuple 32 empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (126 ms vs. 153 ms) 2 times less (1 MB vs. 3 MB)
UnrolledUtilities.unrolled_ifelse((x->length(x) >= length(itr[end])), identity, error, itr) rec_unrolled_ifelse((x->length(x) >= length(itr[end])), identity, error, itr) Tuple 128 empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (241 ms vs. 164 ms) 2 times less (3 MB vs. 8 MB)
UnrolledUtilities.unrolled_ifelse((x->length(x) >= length(itr[end])), identity, error, itr) rec_unrolled_ifelse((x->length(x) >= length(itr[end])), identity, error, itr) Tuple 1 nonempty singleton Tuple similar (optimized out) similar (49 ns vs. 40 ns) similar (46 ms vs. 46 ms) similar (236 kB vs. 273 kB)
UnrolledUtilities.unrolled_ifelse((x->length(x) >= length(itr[end])), identity, error, itr) rec_unrolled_ifelse((x->length(x) >= length(itr[end])), identity, error, itr) Tuple 2 nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (53 ms vs. 51 ms) similar (301 kB vs. 429 kB)
UnrolledUtilities.unrolled_ifelse((x->length(x) >= length(itr[end])), identity, error, itr) rec_unrolled_ifelse((x->length(x) >= length(itr[end])), identity, error, itr) Tuple 3 nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (53 ms vs. 57 ms) similar (319 kB vs. 569 kB)
UnrolledUtilities.unrolled_ifelse((x->length(x) >= length(itr[end])), identity, error, itr) rec_unrolled_ifelse((x->length(x) >= length(itr[end])), identity, error, itr) Tuple 4 nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (80 ms vs. 67 ms) 2 times less (445 kB vs. 1 MB)
UnrolledUtilities.unrolled_ifelse((x->length(x) >= length(itr[end])), identity, error, itr) rec_unrolled_ifelse((x->length(x) >= length(itr[end])), identity, error, itr) Tuple 5 nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (76 ms vs. 72 ms) 2 times less (465 kB vs. 1 MB)
UnrolledUtilities.unrolled_ifelse((x->length(x) >= length(itr[end])), identity, error, itr) rec_unrolled_ifelse((x->length(x) >= length(itr[end])), identity, error, itr) Tuple 6 nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (75 ms vs. 71 ms) 2 times less (488 kB vs. 1 MB)
UnrolledUtilities.unrolled_ifelse((x->length(x) >= length(itr[end])), identity, error, itr) rec_unrolled_ifelse((x->length(x) >= length(itr[end])), identity, error, itr) Tuple 7 nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (79 ms vs. 78 ms) 2 times less (557 kB vs. 1 MB)
UnrolledUtilities.unrolled_ifelse((x->length(x) >= length(itr[end])), identity, error, itr) rec_unrolled_ifelse((x->length(x) >= length(itr[end])), identity, error, itr) Tuple 8 nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (79 ms vs. 84 ms) 2 times less (581 kB vs. 2 MB)
UnrolledUtilities.unrolled_ifelse((x->length(x) >= length(itr[end])), identity, error, itr) rec_unrolled_ifelse((x->length(x) >= length(itr[end])), identity, error, itr) Tuple 16 nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (96 ms vs. 114 ms) 2 times less (845 kB vs. 2 MB)
UnrolledUtilities.unrolled_ifelse((x->length(x) >= length(itr[end])), identity, error, itr) rec_unrolled_ifelse((x->length(x) >= length(itr[end])), identity, error, itr) Tuple 32 nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) 2 times more (115 ms vs. 51 ms) similar (1 MB vs. 2 MB)
UnrolledUtilities.unrolled_ifelse((x->length(x) >= length(itr[end])), identity, error, itr) rec_unrolled_ifelse((x->length(x) >= length(itr[end])), identity, error, itr) Tuple 128 nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) 3 times more (223 ms vs. 70 ms) 2 times less (3 MB vs. 7 MB)
UnrolledUtilities.unrolled_ifelse((x->length(x) >= length(itr[end])), identity, error, itr) rec_unrolled_ifelse((x->length(x) >= length(itr[end])), identity, error, itr) Tuple 1 nonempty non-singleton Tuple similar (8 LLVM lines) similar (49 ns vs. 60 ns) similar (40 ms vs. 44 ms) similar (243 kB vs. 290 kB)
UnrolledUtilities.unrolled_ifelse((x->length(x) >= length(itr[end])), identity, error, itr) rec_unrolled_ifelse((x->length(x) >= length(itr[end])), identity, error, itr) Tuple 2 nonempty non-singleton Tuples similar (8 LLVM lines) similar (49 ns vs. 60 ns) similar (47 ms vs. 50 ms) similar (359 kB vs. 464 kB)
UnrolledUtilities.unrolled_ifelse((x->length(x) >= length(itr[end])), identity, error, itr) rec_unrolled_ifelse((x->length(x) >= length(itr[end])), identity, error, itr) Tuple 3 nonempty non-singleton Tuples similar (8 LLVM lines) similar (49 ns vs. 60 ns) similar (50 ms vs. 57 ms) similar (391 kB vs. 622 kB)
UnrolledUtilities.unrolled_ifelse((x->length(x) >= length(itr[end])), identity, error, itr) rec_unrolled_ifelse((x->length(x) >= length(itr[end])), identity, error, itr) Tuple 4 nonempty non-singleton Tuples similar (8 LLVM lines) similar (60 ns vs. 60 ns) similar (73 ms vs. 68 ms) 2 times less (544 kB vs. 1 MB)
UnrolledUtilities.unrolled_ifelse((x->length(x) >= length(itr[end])), identity, error, itr) rec_unrolled_ifelse((x->length(x) >= length(itr[end])), identity, error, itr) Tuple 5 nonempty non-singleton Tuples similar (8 LLVM lines) similar (50 ns vs. 60 ns) similar (74 ms vs. 74 ms) 2 times less (578 kB vs. 1 MB)
UnrolledUtilities.unrolled_ifelse((x->length(x) >= length(itr[end])), identity, error, itr) rec_unrolled_ifelse((x->length(x) >= length(itr[end])), identity, error, itr) Tuple 6 nonempty non-singleton Tuples similar (8 LLVM lines) similar (49 ns vs. 60 ns) similar (77 ms vs. 78 ms) 2 times less (619 kB vs. 1 MB)
UnrolledUtilities.unrolled_ifelse((x->length(x) >= length(itr[end])), identity, error, itr) rec_unrolled_ifelse((x->length(x) >= length(itr[end])), identity, error, itr) Tuple 7 nonempty non-singleton Tuples similar (8 LLVM lines) similar (50 ns vs. 60 ns) similar (79 ms vs. 83 ms) 2 times less (714 kB vs. 2 MB)
UnrolledUtilities.unrolled_ifelse((x->length(x) >= length(itr[end])), identity, error, itr) rec_unrolled_ifelse((x->length(x) >= length(itr[end])), identity, error, itr) Tuple 8 nonempty non-singleton Tuples similar (8 LLVM lines) similar (49 ns vs. 60 ns) similar (83 ms vs. 89 ms) 2 times less (754 kB vs. 2 MB)
UnrolledUtilities.unrolled_ifelse((x->length(x) >= length(itr[end])), identity, error, itr) rec_unrolled_ifelse((x->length(x) >= length(itr[end])), identity, error, itr) Tuple 16 nonempty non-singleton Tuples similar (8 LLVM lines) similar (49 ns vs. 60 ns) similar (104 ms vs. 118 ms) 2 times less (1 MB vs. 3 MB)
UnrolledUtilities.unrolled_ifelse((x->length(x) >= length(itr[end])), identity, error, itr) rec_unrolled_ifelse((x->length(x) >= length(itr[end])), identity, error, itr) Tuple 32 nonempty non-singleton Tuples similar (8 LLVM lines) similar (60 ns vs. 49 ns) 2 times more (129 ms vs. 64 ms) similar (2 MB vs. 3 MB)
UnrolledUtilities.unrolled_ifelse((x->length(x) >= length(itr[end])), identity, error, itr) rec_unrolled_ifelse((x->length(x) >= length(itr[end])), identity, error, itr) Tuple 128 nonempty non-singleton Tuples similar (8 LLVM lines) 286 times less (49 ns vs. 14 μs) 3 times more (303 ms vs. 76 ms) similar (5 MB vs. 8 MB)
UnrolledUtilities.unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) rec_unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) Tuple 1 empty singleton Tuple similar (optimized out) similar (40 ns vs. 40 ns) 2 times less (34 ms vs. 76 ms) 10 times less (180 kB vs. 2 MB)
UnrolledUtilities.unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) rec_unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) Tuple 1 nonempty singleton Tuple similar (optimized out) similar (49 ns vs. 40 ns) 2 times less (37 ms vs. 74 ms) 9 times less (221 kB vs. 2 MB)
UnrolledUtilities.unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) rec_unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) Tuple 1 nonempty non-singleton Tuple similar (optimized out) similar (49 ns vs. 40 ns) similar (33 ms vs. 52 ms) 12 times less (195 kB vs. 2 MB)
UnrolledUtilities.unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) rec_unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) Tuple 1 empty singleton Tuple similar (optimized out) similar (40 ns vs. 49 ns) 2 times less (34 ms vs. 73 ms) 10 times less (180 kB vs. 2 MB)
UnrolledUtilities.unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) rec_unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) Tuple 2 identical empty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) 2 times less (34 ms vs. 73 ms) 11 times less (190 kB vs. 2 MB)
UnrolledUtilities.unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) rec_unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) Tuple 3 identical empty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) 2 times less (34 ms vs. 88 ms) 11 times less (220 kB vs. 2 MB)
UnrolledUtilities.unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) rec_unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) Tuple 4 identical empty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (52 ms vs. 79 ms) 9 times less (285 kB vs. 3 MB)
UnrolledUtilities.unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) rec_unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) Tuple 5 identical empty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (56 ms vs. 81 ms) 9 times less (293 kB vs. 3 MB)
UnrolledUtilities.unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) rec_unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) Tuple 6 identical empty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (53 ms vs. 76 ms) 9 times less (301 kB vs. 3 MB)
UnrolledUtilities.unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) rec_unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) Tuple 7 identical empty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (54 ms vs. 75 ms) 10 times less (308 kB vs. 3 MB)
UnrolledUtilities.unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) rec_unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) Tuple 8 identical empty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (51 ms vs. 77 ms) 10 times less (316 kB vs. 3 MB)
UnrolledUtilities.unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) rec_unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) Tuple 16 identical empty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (54 ms vs. 80 ms) 12 times less (377 kB vs. 5 MB)
UnrolledUtilities.unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) rec_unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) Tuple 32 identical empty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (57 ms vs. 90 ms) 15 times less (501 kB vs. 8 MB)
UnrolledUtilities.unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) rec_unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) Tuple 128 identical empty singleton Tuples better (optimized out vs. 207 kB allocs) 13806 times less (49 ns vs. 677 μs) similar (70 ms vs. 87 ms) 5 times less (1 MB vs. 7 MB)
UnrolledUtilities.unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) rec_unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) Tuple 1 nonempty singleton Tuple similar (optimized out) similar (40 ns vs. 40 ns) similar (35 ms vs. 69 ms) 9 times less (221 kB vs. 2 MB)
UnrolledUtilities.unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) rec_unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) Tuple 2 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) 2 times less (37 ms vs. 75 ms) 9 times less (224 kB vs. 2 MB)
UnrolledUtilities.unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) rec_unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) Tuple 3 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) 2 times less (37 ms vs. 74 ms) 10 times less (227 kB vs. 2 MB)
UnrolledUtilities.unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) rec_unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) Tuple 4 identical nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (59 ms vs. 80 ms) 8 times less (289 kB vs. 2 MB)
UnrolledUtilities.unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) rec_unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) Tuple 5 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (59 ms vs. 71 ms) 8 times less (295 kB vs. 3 MB)
UnrolledUtilities.unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) rec_unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) Tuple 6 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (57 ms vs. 77 ms) 9 times less (300 kB vs. 3 MB)
UnrolledUtilities.unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) rec_unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) Tuple 7 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (55 ms vs. 76 ms) 9 times less (305 kB vs. 3 MB)
UnrolledUtilities.unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) rec_unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) Tuple 8 identical nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (59 ms vs. 72 ms) 9 times less (310 kB vs. 3 MB)
UnrolledUtilities.unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) rec_unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) Tuple 16 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (59 ms vs. 80 ms) 12 times less (353 kB vs. 4 MB)
UnrolledUtilities.unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) rec_unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) Tuple 32 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (60 ms vs. 89 ms) 17 times less (438 kB vs. 7 MB)
UnrolledUtilities.unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) rec_unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) Tuple 128 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (70 ms vs. 83 ms) 6 times less (945 kB vs. 6 MB)
UnrolledUtilities.unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) rec_unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) Tuple 1 nonempty non-singleton Tuple similar (optimized out) similar (49 ns vs. 40 ns) similar (36 ms vs. 53 ms) 12 times less (195 kB vs. 2 MB)
UnrolledUtilities.unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) rec_unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) Tuple 2 identical nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (34 ms vs. 52 ms) 13 times less (197 kB vs. 3 MB)
UnrolledUtilities.unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) rec_unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) Tuple 3 identical nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (34 ms vs. 54 ms) 13 times less (226 kB vs. 3 MB)
UnrolledUtilities.unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) rec_unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) Tuple 4 identical nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (56 ms vs. 56 ms) 11 times less (288 kB vs. 3 MB)
UnrolledUtilities.unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) rec_unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) Tuple 5 identical nonempty non-singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (53 ms vs. 58 ms) 12 times less (293 kB vs. 3 MB)
UnrolledUtilities.unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) rec_unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) Tuple 6 identical nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (54 ms vs. 58 ms) 12 times less (299 kB vs. 4 MB)
UnrolledUtilities.unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) rec_unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) Tuple 7 identical nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (55 ms vs. 59 ms) 13 times less (304 kB vs. 4 MB)
UnrolledUtilities.unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) rec_unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) Tuple 8 identical nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (53 ms vs. 61 ms) 14 times less (309 kB vs. 4 MB)
UnrolledUtilities.unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) rec_unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) Tuple 16 identical nonempty non-singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (55 ms vs. 68 ms) 19 times less (352 kB vs. 7 MB)
UnrolledUtilities.unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) rec_unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) Tuple 32 identical nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (61 ms vs. 90 ms) 27 times less (436 kB vs. 12 MB)
UnrolledUtilities.unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) rec_unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) Tuple 128 identical nonempty non-singleton Tuples better (optimized out vs. 18 kB allocs) 292 times less (40 ns vs. 12 μs) similar (71 ms vs. 83 ms) 9 times less (943 kB vs. 9 MB)
UnrolledUtilities.unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) rec_unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) Tuple 1 empty singleton Tuple similar (optimized out) similar (40 ns vs. 40 ns) 2 times less (34 ms vs. 74 ms) 10 times less (180 kB vs. 2 MB)
UnrolledUtilities.unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) rec_unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) Tuple 2 empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) 2 times less (37 ms vs. 88 ms) 9 times less (269 kB vs. 3 MB)
UnrolledUtilities.unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) rec_unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) Tuple 3 empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) 2 times less (37 ms vs. 86 ms) 10 times less (272 kB vs. 3 MB)
UnrolledUtilities.unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) rec_unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) Tuple 4 empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (56 ms vs. 94 ms) 9 times less (335 kB vs. 3 MB)
UnrolledUtilities.unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) rec_unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) Tuple 5 empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (55 ms vs. 95 ms) 9 times less (340 kB vs. 3 MB)
UnrolledUtilities.unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) rec_unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) Tuple 6 empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (55 ms vs. 97 ms) 9 times less (346 kB vs. 3 MB)
UnrolledUtilities.unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) rec_unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) Tuple 7 empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (57 ms vs. 107 ms) 10 times less (352 kB vs. 4 MB)
UnrolledUtilities.unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) rec_unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) Tuple 8 empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (54 ms vs. 101 ms) 10 times less (357 kB vs. 4 MB)
UnrolledUtilities.unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) rec_unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) Tuple 16 empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) 2 times less (58 ms vs. 129 ms) 13 times less (400 kB vs. 5 MB)
UnrolledUtilities.unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) rec_unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) Tuple 32 empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) 2 times less (58 ms vs. 156 ms) 17 times less (484 kB vs. 8 MB)
UnrolledUtilities.unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) rec_unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) Tuple 128 empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) 2 times less (68 ms vs. 146 ms) 7 times less (991 kB vs. 7 MB)
UnrolledUtilities.unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) rec_unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) Tuple 1 nonempty singleton Tuple similar (optimized out) similar (40 ns vs. 40 ns) 2 times less (35 ms vs. 75 ms) 9 times less (221 kB vs. 2 MB)
UnrolledUtilities.unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) rec_unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) Tuple 2 nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) 2 times less (35 ms vs. 81 ms) 10 times less (224 kB vs. 2 MB)
UnrolledUtilities.unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) rec_unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) Tuple 3 nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) 2 times less (35 ms vs. 83 ms) 11 times less (227 kB vs. 3 MB)
UnrolledUtilities.unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) rec_unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) Tuple 4 nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (56 ms vs. 92 ms) 10 times less (290 kB vs. 3 MB)
UnrolledUtilities.unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) rec_unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) Tuple 5 nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (51 ms vs. 86 ms) 10 times less (295 kB vs. 3 MB)
UnrolledUtilities.unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) rec_unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) Tuple 6 nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (52 ms vs. 87 ms) 10 times less (300 kB vs. 3 MB)
UnrolledUtilities.unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) rec_unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) Tuple 7 nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (51 ms vs. 93 ms) 11 times less (306 kB vs. 3 MB)
UnrolledUtilities.unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) rec_unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) Tuple 8 nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (54 ms vs. 93 ms) 11 times less (311 kB vs. 3 MB)
UnrolledUtilities.unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) rec_unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) Tuple 16 nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) 2 times less (51 ms vs. 114 ms) 14 times less (354 kB vs. 5 MB)
UnrolledUtilities.unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) rec_unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) Tuple 32 nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) 2 times less (60 ms vs. 144 ms) 18 times less (439 kB vs. 8 MB)
UnrolledUtilities.unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) rec_unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) Tuple 128 nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) 2 times less (64 ms vs. 131 ms) 7 times less (946 kB vs. 7 MB)
UnrolledUtilities.unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) rec_unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) Tuple 1 nonempty non-singleton Tuple similar (optimized out) similar (40 ns vs. 49 ns) similar (29 ms vs. 46 ms) 12 times less (195 kB vs. 2 MB)
UnrolledUtilities.unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) rec_unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) Tuple 2 nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (29 ms vs. 48 ms) 13 times less (223 kB vs. 3 MB)
UnrolledUtilities.unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) rec_unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) Tuple 3 nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (30 ms vs. 50 ms) 14 times less (226 kB vs. 3 MB)
UnrolledUtilities.unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) rec_unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) Tuple 4 nonempty non-singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (48 ms vs. 54 ms) 12 times less (288 kB vs. 4 MB)
UnrolledUtilities.unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) rec_unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) Tuple 5 nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (47 ms vs. 51 ms) 13 times less (294 kB vs. 4 MB)
UnrolledUtilities.unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) rec_unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) Tuple 6 nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (48 ms vs. 53 ms) 14 times less (299 kB vs. 4 MB)
UnrolledUtilities.unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) rec_unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) Tuple 7 nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (49 ms vs. 55 ms) 14 times less (305 kB vs. 4 MB)
UnrolledUtilities.unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) rec_unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) Tuple 8 nonempty non-singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (48 ms vs. 55 ms) 15 times less (310 kB vs. 5 MB)
UnrolledUtilities.unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) rec_unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) Tuple 16 nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (51 ms vs. 67 ms) 21 times less (353 kB vs. 7 MB)
UnrolledUtilities.unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) rec_unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) Tuple 32 nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (51 ms vs. 88 ms) 29 times less (437 kB vs. 13 MB)
UnrolledUtilities.unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) rec_unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) Tuple 128 nonempty non-singleton Tuples better (optimized out vs. 558 kB allocs) 2260 times less (40 ns vs. 90 μs) similar (66 ms vs. 75 ms) 10 times less (944 kB vs. 10 MB)