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 (49 ns vs. 40 ns) similar (25 ms vs. 31 ms) Inf times more (51 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 (24 ms vs. 25 ms) 541 times more (51 kB vs. 96 B)
unrolled_push(itr, itr[1]) (itr..., itr[1]) Tuple 1 nonempty non-singleton Tuple similar (10 LLVM lines) similar (60 ns vs. 49 ns) similar (28 ms vs. 24 ms) 1392 times more (131 kB vs. 96 B)
unrolled_push(itr, itr[1]) (itr..., itr[1]) Tuple 2 identical nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (24 ms vs. 25 ms) 250 times more (51 kB vs. 208 B)
unrolled_push(itr, itr[1]) (itr..., itr[1]) Tuple 4 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (24 ms vs. 25 ms) 233 times more (51 kB vs. 224 B)
unrolled_push(itr, itr[1]) (itr..., itr[1]) Tuple 8 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (24 ms vs. 25 ms) 206 times more (52 kB vs. 256 B)
unrolled_push(itr, itr[1]) (itr..., itr[1]) Tuple 32 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (24 ms vs. 25 ms) 123 times more (54 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. 40 ns) similar (25 ms vs. 24 ms) 52 times more (64 kB vs. 1 kB)
unrolled_push(itr, itr[1]) (itr..., itr[1]) Tuple 2 identical nonempty non-singleton Tuples similar (11 LLVM lines) similar (49 ns vs. 49 ns) similar (29 ms vs. 25 ms) 615 times more (135 kB vs. 224 B)
unrolled_push(itr, itr[1]) (itr..., itr[1]) Tuple 4 identical nonempty non-singleton Tuples similar (11 LLVM lines) similar (49 ns vs. 49 ns) similar (29 ms vs. 25 ms) 494 times more (139 kB vs. 288 B)
unrolled_push(itr, itr[1]) (itr..., itr[1]) Tuple 8 identical nonempty non-singleton Tuples similar (15 LLVM lines) similar (60 ns vs. 50 ns) similar (28 ms vs. 25 ms) 372 times more (152 kB vs. 416 B)
unrolled_push(itr, itr[1]) (itr..., itr[1]) Tuple 32 identical nonempty non-singleton Tuples similar (39 LLVM lines) similar (69 ns vs. 60 ns) similar (31 ms vs. 24 ms) 185 times more (214 kB vs. 1 kB)
unrolled_push(itr, itr[1]) (itr..., itr[1]) Tuple 128 identical nonempty non-singleton Tuples similar (44 LLVM lines) similar (5 μs vs. 5 μs) similar (30 ms vs. 25 ms) 33 times more (143 kB vs. 4 kB)
unrolled_push(itr, itr[1]) (itr..., itr[1]) Tuple 2 distinct empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (33 ms vs. 24 ms) 464 times more (51 kB vs. 112 B)
unrolled_push(itr, itr[1]) (itr..., itr[1]) Tuple 4 distinct empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (24 ms vs. 25 ms) 407 times more (51 kB vs. 128 B)
unrolled_push(itr, itr[1]) (itr..., itr[1]) Tuple 8 distinct empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (24 ms vs. 24 ms) 329 times more (51 kB vs. 160 B)
unrolled_push(itr, itr[1]) (itr..., itr[1]) Tuple 32 distinct empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (24 ms vs. 25 ms) 156 times more (54 kB vs. 352 B)
unrolled_push(itr, itr[1]) (itr..., itr[1]) Tuple 128 distinct empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (24 ms vs. 26 ms) 56 times more (64 kB vs. 1 kB)
unrolled_push(itr, itr[1]) (itr..., itr[1]) Tuple 2 distinct nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (25 ms vs. 25 ms) 250 times more (51 kB vs. 208 B)
unrolled_push(itr, itr[1]) (itr..., itr[1]) Tuple 4 distinct nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (25 ms vs. 25 ms) 233 times more (51 kB vs. 224 B)
unrolled_push(itr, itr[1]) (itr..., itr[1]) Tuple 8 distinct nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (25 ms vs. 24 ms) 206 times more (52 kB vs. 256 B)
unrolled_push(itr, itr[1]) (itr..., itr[1]) Tuple 32 distinct nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (24 ms vs. 25 ms) 123 times more (54 kB vs. 448 B)
unrolled_push(itr, itr[1]) (itr..., itr[1]) Tuple 128 distinct nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (24 ms vs. 25 ms) 52 times more (64 kB vs. 1 kB)
unrolled_push(itr, itr[1]) (itr..., itr[1]) Tuple 2 distinct nonempty non-singleton Tuples similar (13 LLVM lines) similar (49 ns vs. 60 ns) similar (28 ms vs. 24 ms) 538 times more (135 kB vs. 256 B)
unrolled_push(itr, itr[1]) (itr..., itr[1]) Tuple 4 distinct nonempty non-singleton Tuples similar (19 LLVM lines) similar (60 ns vs. 60 ns) similar (35 ms vs. 25 ms) 356 times more (139 kB vs. 400 B)
unrolled_push(itr, itr[1]) (itr..., itr[1]) Tuple 8 distinct nonempty non-singleton Tuples similar (32 LLVM lines) similar (60 ns vs. 69 ns) similar (30 ms vs. 24 ms) 198 times more (152 kB vs. 784 B)
unrolled_push(itr, itr[1]) (itr..., itr[1]) Tuple 32 distinct nonempty non-singleton Tuples similar (107 LLVM lines) similar (89 ns vs. 80 ns) similar (36 ms vs. 25 ms) 80 times more (215 kB vs. 3 kB)
unrolled_push(itr, itr[1]) (itr..., itr[1]) Tuple 128 distinct nonempty non-singleton Tuples similar (44 LLVM lines) similar (6 μs vs. 6 μs) similar (29 ms vs. 24 ms) 14 times more (155 kB 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 (52 ms vs. 35 ms) 29 times more (3 MB vs. 108 kB)
unrolled_append(itr, Iterators.reverse(itr)) (itr..., Iterators.reverse(itr)...) Tuple 1 nonempty singleton Tuple similar (optimized out) similar (40 ns vs. 49 ns) similar (55 ms vs. 32 ms) 23 times more (3 MB vs. 138 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. 60 ns) similar (45 ms vs. 36 ms) 17 times more (3 MB vs. 208 kB)
unrolled_append(itr, Iterators.reverse(itr)) (itr..., Iterators.reverse(itr)...) Tuple 2 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (63 ms vs. 32 ms) 23 times more (3 MB vs. 138 kB)
unrolled_append(itr, Iterators.reverse(itr)) (itr..., Iterators.reverse(itr)...) Tuple 4 identical nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (64 ms vs. 33 ms) 23 times more (3 MB vs. 138 kB)
unrolled_append(itr, Iterators.reverse(itr)) (itr..., Iterators.reverse(itr)...) Tuple 8 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (63 ms vs. 32 ms) 23 times more (3 MB vs. 138 kB)
unrolled_append(itr, Iterators.reverse(itr)) (itr..., Iterators.reverse(itr)...) Tuple 32 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) 2 times more (64 ms vs. 32 ms) 24 times more (3 MB vs. 140 kB)
unrolled_append(itr, Iterators.reverse(itr)) (itr..., Iterators.reverse(itr)...) Tuple 128 identical nonempty singleton Tuples better (optimized out vs. 7 kB allocs) 189 times less (49 ns vs. 9 μs) 2 times more (67 ms vs. 32 ms) 25 times more (4 MB vs. 147 kB)
unrolled_append(itr, Iterators.reverse(itr)) (itr..., Iterators.reverse(itr)...) Tuple 2 identical nonempty non-singleton Tuples similar (9 LLVM lines) similar (49 ns vs. 49 ns) similar (55 ms vs. 36 ms) 17 times more (4 MB vs. 208 kB)
unrolled_append(itr, Iterators.reverse(itr)) (itr..., Iterators.reverse(itr)...) Tuple 4 identical nonempty non-singleton Tuples similar (22 LLVM lines) similar (60 ns vs. 49 ns) similar (58 ms vs. 38 ms) 16 times more (4 MB vs. 233 kB)
unrolled_append(itr, Iterators.reverse(itr)) (itr..., Iterators.reverse(itr)...) Tuple 8 identical nonempty non-singleton Tuples similar (37 LLVM lines) similar (50 ns vs. 60 ns) similar (57 ms vs. 37 ms) 17 times more (4 MB vs. 234 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 (66 ms vs. 37 ms) 25 times more (6 MB vs. 237 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) 62 times less (221 ns vs. 14 μs) 4 times more (179 ms vs. 36 ms) 53 times more (13 MB vs. 251 kB)
unrolled_append(itr, Iterators.reverse(itr)) (itr..., Iterators.reverse(itr)...) Tuple 2 distinct empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) 2 times more (64 ms vs. 32 ms) 23 times more (3 MB vs. 138 kB)
unrolled_append(itr, Iterators.reverse(itr)) (itr..., Iterators.reverse(itr)...) Tuple 4 distinct empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (62 ms vs. 32 ms) 23 times more (3 MB vs. 139 kB)
unrolled_append(itr, Iterators.reverse(itr)) (itr..., Iterators.reverse(itr)...) Tuple 8 distinct empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (62 ms vs. 32 ms) 23 times more (3 MB vs. 140 kB)
unrolled_append(itr, Iterators.reverse(itr)) (itr..., Iterators.reverse(itr)...) Tuple 32 distinct empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (63 ms vs. 32 ms) 24 times more (3 MB vs. 141 kB)
unrolled_append(itr, Iterators.reverse(itr)) (itr..., Iterators.reverse(itr)...) Tuple 128 distinct empty & nonempty singleton Tuples better (optimized out vs. 7 kB allocs) 429 times less (40 ns vs. 17 μs) 2 times more (68 ms vs. 32 ms) 25 times more (4 MB vs. 149 kB)
unrolled_append(itr, Iterators.reverse(itr)) (itr..., Iterators.reverse(itr)...) Tuple 2 distinct nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) 2 times more (66 ms vs. 32 ms) 23 times more (3 MB vs. 138 kB)
unrolled_append(itr, Iterators.reverse(itr)) (itr..., Iterators.reverse(itr)...) Tuple 4 distinct nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (63 ms vs. 32 ms) 23 times more (3 MB vs. 139 kB)
unrolled_append(itr, Iterators.reverse(itr)) (itr..., Iterators.reverse(itr)...) Tuple 8 distinct nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (63 ms vs. 32 ms) 23 times more (3 MB vs. 140 kB)
unrolled_append(itr, Iterators.reverse(itr)) (itr..., Iterators.reverse(itr)...) Tuple 32 distinct nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) 2 times more (65 ms vs. 32 ms) 24 times more (3 MB vs. 141 kB)
unrolled_append(itr, Iterators.reverse(itr)) (itr..., Iterators.reverse(itr)...) Tuple 128 distinct nonempty singleton Tuples better (optimized out vs. 7 kB allocs) 365 times less (49 ns vs. 18 μs) 2 times more (68 ms vs. 32 ms) 25 times more (4 MB vs. 149 kB)
unrolled_append(itr, Iterators.reverse(itr)) (itr..., Iterators.reverse(itr)...) Tuple 2 distinct nonempty non-singleton Tuples similar (15 LLVM lines) similar (49 ns vs. 60 ns) similar (55 ms vs. 36 ms) 15 times more (4 MB vs. 234 kB)
unrolled_append(itr, Iterators.reverse(itr)) (itr..., Iterators.reverse(itr)...) Tuple 4 distinct nonempty non-singleton Tuples similar (25 LLVM lines) similar (60 ns vs. 60 ns) similar (58 ms vs. 36 ms) 16 times more (4 MB vs. 235 kB)
unrolled_append(itr, Iterators.reverse(itr)) (itr..., Iterators.reverse(itr)...) Tuple 8 distinct nonempty non-singleton Tuples similar (46 LLVM lines) similar (69 ns vs. 69 ns) similar (59 ms vs. 36 ms) 17 times more (4 MB vs. 238 kB)
unrolled_append(itr, Iterators.reverse(itr)) (itr..., Iterators.reverse(itr)...) Tuple 32 distinct nonempty non-singleton Tuples similar (169 LLVM lines) similar (120 ns vs. 110 ns) 2 times more (81 ms vs. 36 ms) 21 times more (6 MB vs. 275 kB)
unrolled_append(itr, Iterators.reverse(itr)) (itr..., Iterators.reverse(itr)...) Tuple 128 distinct nonempty non-singleton Tuples better (1110 LLVM lines vs. 560 kB allocs) 103 times less (621 ns vs. 64 μs) 13 times more (471 ms vs. 36 ms) 16 times more (13 MB vs. 792 kB)
unrolled_prepend(itr, Iterators.reverse(itr)) (Iterators.reverse(itr)..., itr...) Tuple 1 empty singleton Tuple similar (optimized out) similar (49 ns vs. 49 ns) similar (52 ms vs. 32 ms) 29 times more (3 MB vs. 108 kB)
unrolled_prepend(itr, Iterators.reverse(itr)) (Iterators.reverse(itr)..., itr...) Tuple 1 nonempty singleton Tuple similar (optimized out) similar (49 ns vs. 49 ns) similar (53 ms vs. 33 ms) 23 times more (3 MB vs. 138 kB)
unrolled_prepend(itr, Iterators.reverse(itr)) (Iterators.reverse(itr)..., itr...) Tuple 1 nonempty non-singleton Tuple similar (10 LLVM lines) similar (60 ns vs. 49 ns) similar (44 ms vs. 36 ms) 17 times more (4 MB vs. 208 kB)
unrolled_prepend(itr, Iterators.reverse(itr)) (Iterators.reverse(itr)..., itr...) Tuple 2 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (63 ms vs. 32 ms) 23 times more (3 MB vs. 138 kB)
unrolled_prepend(itr, Iterators.reverse(itr)) (Iterators.reverse(itr)..., itr...) Tuple 4 identical nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (63 ms vs. 32 ms) 23 times more (3 MB vs. 138 kB)
unrolled_prepend(itr, Iterators.reverse(itr)) (Iterators.reverse(itr)..., itr...) Tuple 8 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (63 ms vs. 33 ms) 24 times more (3 MB vs. 138 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 (64 ms vs. 33 ms) 24 times more (3 MB vs. 140 kB)
unrolled_prepend(itr, Iterators.reverse(itr)) (Iterators.reverse(itr)..., itr...) Tuple 128 identical nonempty singleton Tuples better (optimized out vs. 7 kB allocs) 187 times less (49 ns vs. 9 μs) 2 times more (67 ms vs. 32 ms) 25 times more (4 MB vs. 147 kB)
unrolled_prepend(itr, Iterators.reverse(itr)) (Iterators.reverse(itr)..., itr...) Tuple 2 identical nonempty non-singleton Tuples similar (9 LLVM lines) similar (50 ns vs. 60 ns) similar (55 ms vs. 36 ms) 17 times more (4 MB vs. 208 kB)
unrolled_prepend(itr, Iterators.reverse(itr)) (Iterators.reverse(itr)..., itr...) Tuple 4 identical nonempty non-singleton Tuples similar (21 LLVM lines) similar (60 ns vs. 49 ns) similar (57 ms vs. 37 ms) 16 times more (4 MB vs. 233 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. 50 ns) similar (58 ms vs. 38 ms) 18 times more (4 MB vs. 234 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 (75 ms vs. 37 ms) 27 times more (6 MB vs. 237 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) 62 times less (221 ns vs. 14 μs) 4 times more (180 ms vs. 36 ms) 59 times more (15 MB vs. 251 kB)
unrolled_prepend(itr, Iterators.reverse(itr)) (Iterators.reverse(itr)..., itr...) Tuple 2 distinct empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (64 ms vs. 32 ms) 23 times more (3 MB vs. 138 kB)
unrolled_prepend(itr, Iterators.reverse(itr)) (Iterators.reverse(itr)..., itr...) Tuple 4 distinct empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) 2 times more (68 ms vs. 32 ms) 23 times more (3 MB vs. 139 kB)
unrolled_prepend(itr, Iterators.reverse(itr)) (Iterators.reverse(itr)..., itr...) Tuple 8 distinct empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (63 ms vs. 32 ms) 23 times more (3 MB vs. 140 kB)
unrolled_prepend(itr, Iterators.reverse(itr)) (Iterators.reverse(itr)..., itr...) Tuple 32 distinct empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (65 ms vs. 33 ms) 24 times more (3 MB vs. 141 kB)
unrolled_prepend(itr, Iterators.reverse(itr)) (Iterators.reverse(itr)..., itr...) Tuple 128 distinct empty & nonempty singleton Tuples better (optimized out vs. 7 kB allocs) 431 times less (40 ns vs. 17 μs) 2 times more (66 ms vs. 32 ms) 25 times more (4 MB vs. 149 kB)
unrolled_prepend(itr, Iterators.reverse(itr)) (Iterators.reverse(itr)..., itr...) Tuple 2 distinct nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (63 ms vs. 32 ms) 23 times more (3 MB vs. 138 kB)
unrolled_prepend(itr, Iterators.reverse(itr)) (Iterators.reverse(itr)..., itr...) Tuple 4 distinct nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (62 ms vs. 32 ms) 23 times more (3 MB vs. 139 kB)
unrolled_prepend(itr, Iterators.reverse(itr)) (Iterators.reverse(itr)..., itr...) Tuple 8 distinct nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (63 ms vs. 33 ms) 23 times more (3 MB vs. 140 kB)
unrolled_prepend(itr, Iterators.reverse(itr)) (Iterators.reverse(itr)..., itr...) Tuple 32 distinct nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (64 ms vs. 32 ms) 24 times more (3 MB vs. 141 kB)
unrolled_prepend(itr, Iterators.reverse(itr)) (Iterators.reverse(itr)..., itr...) Tuple 128 distinct nonempty singleton Tuples better (optimized out vs. 7 kB allocs) 366 times less (49 ns vs. 18 μs) 2 times more (67 ms vs. 33 ms) 25 times more (4 MB vs. 149 kB)
unrolled_prepend(itr, Iterators.reverse(itr)) (Iterators.reverse(itr)..., itr...) Tuple 2 distinct nonempty non-singleton Tuples similar (15 LLVM lines) similar (60 ns vs. 49 ns) similar (61 ms vs. 37 ms) 16 times more (4 MB vs. 234 kB)
unrolled_prepend(itr, Iterators.reverse(itr)) (Iterators.reverse(itr)..., itr...) Tuple 4 distinct nonempty non-singleton Tuples similar (27 LLVM lines) similar (60 ns vs. 60 ns) similar (58 ms vs. 44 ms) 16 times more (4 MB vs. 235 kB)
unrolled_prepend(itr, Iterators.reverse(itr)) (Iterators.reverse(itr)..., itr...) Tuple 8 distinct nonempty non-singleton Tuples similar (46 LLVM lines) similar (60 ns vs. 69 ns) similar (61 ms vs. 37 ms) 17 times more (4 MB vs. 238 kB)
unrolled_prepend(itr, Iterators.reverse(itr)) (Iterators.reverse(itr)..., itr...) Tuple 32 distinct nonempty non-singleton Tuples similar (171 LLVM lines) similar (120 ns vs. 120 ns) 2 times more (92 ms vs. 36 ms) 23 times more (6 MB vs. 275 kB)
unrolled_prepend(itr, Iterators.reverse(itr)) (Iterators.reverse(itr)..., itr...) Tuple 128 distinct nonempty non-singleton Tuples better (1110 LLVM lines vs. 560 kB allocs) 113 times less (581 ns vs. 66 μs) 11 times more (437 ms vs. 37 ms) 18 times more (15 MB vs. 792 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 (25 ms vs. 27 ms) 351 times more (77 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. 49 ns) similar (26 ms vs. 27 ms) 351 times more (77 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. 40 ns) similar (25 ms vs. 27 ms) 522 times more (114 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. 40 ns) similar (29 ms vs. 27 ms) 647 times more (202 kB vs. 320 B)
unrolled_take(itr, Val(length(itr) ÷ 2)) itr[1:length(itr) ÷ 2] Tuple 4 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (29 ms vs. 27 ms) 651 times more (204 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 (40 ns vs. 40 ns) similar (44 ms vs. 27 ms) 690 times more (227 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) 8 times less (40 ns vs. 350 ns) similar (41 ms vs. 40 ms) 2 times less (251 kB vs. 720 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) 20 times less (49 ns vs. 1 μs) similar (42 ms vs. 40 ms) 2 times less (350 kB vs. 720 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 (30 ms vs. 27 ms) 1289 times more (342 kB vs. 272 B)
unrolled_take(itr, Val(length(itr) ÷ 2)) itr[1:length(itr) ÷ 2] Tuple 4 identical nonempty non-singleton Tuples similar (8 LLVM lines) similar (49 ns vs. 49 ns) similar (30 ms vs. 27 ms) 1232 times more (385 kB vs. 320 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) similar (42 ms vs. 27 ms) 1020 times more (510 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) 15 times less (49 ns vs. 751 ns) similar (42 ms vs. 41 ms) similar (656 kB vs. 720 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) 40 times less (60 ns vs. 2 μs) similar (49 ms vs. 40 ms) 2 times more (1 MB vs. 723 kB)
unrolled_take(itr, Val(length(itr) ÷ 2)) itr[1:length(itr) ÷ 2] Tuple 2 distinct empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (29 ms vs. 27 ms) 923 times more (202 kB vs. 224 B)
unrolled_take(itr, Val(length(itr) ÷ 2)) itr[1:length(itr) ÷ 2] Tuple 4 distinct empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (28 ms vs. 27 ms) 654 times more (205 kB vs. 320 B)
unrolled_take(itr, Val(length(itr) ÷ 2)) itr[1:length(itr) ÷ 2] Tuple 8 distinct empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (40 ms vs. 27 ms) 693 times more (228 kB vs. 336 B)
unrolled_take(itr, Val(length(itr) ÷ 2)) itr[1:length(itr) ÷ 2] Tuple 32 distinct empty & nonempty singleton Tuples better (optimized out vs. 192 B allocs) 13 times less (40 ns vs. 530 ns) similar (39 ms vs. 66 ms) 9 times less (252 kB vs. 2 MB)
unrolled_take(itr, Val(length(itr) ÷ 2)) itr[1:length(itr) ÷ 2] Tuple 128 distinct empty & nonempty singleton Tuples better (optimized out vs. 576 B allocs) 32 times less (49 ns vs. 2 μs) similar (40 ms vs. 65 ms) 6 times less (350 kB vs. 2 MB)
unrolled_take(itr, Val(length(itr) ÷ 2)) itr[1:length(itr) ÷ 2] Tuple 2 distinct nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (30 ms vs. 27 ms) 647 times more (202 kB vs. 320 B)
unrolled_take(itr, Val(length(itr) ÷ 2)) itr[1:length(itr) ÷ 2] Tuple 4 distinct nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (29 ms vs. 27 ms) 654 times more (204 kB vs. 320 B)
unrolled_take(itr, Val(length(itr) ÷ 2)) itr[1:length(itr) ÷ 2] Tuple 8 distinct nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (39 ms vs. 27 ms) 692 times more (227 kB vs. 336 B)
unrolled_take(itr, Val(length(itr) ÷ 2)) itr[1:length(itr) ÷ 2] Tuple 32 distinct nonempty singleton Tuples better (optimized out vs. 192 B allocs) 49 times less (40 ns vs. 2 μs) similar (40 ms vs. 66 ms) 9 times less (252 kB vs. 2 MB)
unrolled_take(itr, Val(length(itr) ÷ 2)) itr[1:length(itr) ÷ 2] Tuple 128 distinct nonempty singleton Tuples better (optimized out vs. 576 B allocs) 192 times less (40 ns vs. 8 μs) similar (40 ms vs. 68 ms) 7 times less (350 kB vs. 2 MB)
unrolled_take(itr, Val(length(itr) ÷ 2)) itr[1:length(itr) ÷ 2] Tuple 2 distinct nonempty non-singleton Tuples similar (8 LLVM lines) similar (50 ns vs. 49 ns) similar (29 ms vs. 28 ms) 1384 times more (368 kB vs. 272 B)
unrolled_take(itr, Val(length(itr) ÷ 2)) itr[1:length(itr) ÷ 2] Tuple 4 distinct nonempty non-singleton Tuples similar (11 LLVM lines) similar (49 ns vs. 49 ns) similar (30 ms vs. 27 ms) 823 times more (386 kB vs. 480 B)
unrolled_take(itr, Val(length(itr) ÷ 2)) itr[1:length(itr) ÷ 2] Tuple 8 distinct nonempty non-singleton Tuples similar (17 LLVM lines) similar (60 ns vs. 60 ns) similar (41 ms vs. 27 ms) 584 times more (448 kB vs. 784 B)
unrolled_take(itr, Val(length(itr) ÷ 2)) itr[1:length(itr) ÷ 2] Tuple 32 distinct nonempty non-singleton Tuples better (55 LLVM lines vs. 18 kB allocs) 46 times less (69 ns vs. 3 μs) similar (44 ms vs. 81 ms) 3 times less (658 kB vs. 2 MB)
unrolled_take(itr, Val(length(itr) ÷ 2)) itr[1:length(itr) ÷ 2] Tuple 128 distinct nonempty non-singleton Tuples better (206 LLVM lines vs. 268 kB allocs) 272 times less (110 ns vs. 30 μs) similar (66 ms vs. 82 ms) similar (1 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. 49 ns) similar (35 ms vs. 26 ms) 1903 times more (416 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 (36 ms vs. 26 ms) 2037 times more (446 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 (49 ns vs. 60 ns) similar (33 ms vs. 27 ms) 2320 times more (580 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. 40 ns) similar (36 ms vs. 26 ms) 1426 times more (446 kB vs. 320 B)
unrolled_drop(itr, Val(length(itr) ÷ 2)) itr[length(itr) ÷ 2 + 1:end] Tuple 4 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (36 ms vs. 26 ms) 1476 times more (461 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 (40 ns vs. 40 ns) similar (47 ms vs. 26 ms) 1579 times more (518 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. 360 ns) similar (53 ms vs. 39 ms) similar (706 kB vs. 720 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) 25 times less (40 ns vs. 1 μs) similar (65 ms vs. 39 ms) 2 times more (1 MB vs. 720 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. 50 ns) similar (33 ms vs. 31 ms) 2183 times more (580 kB vs. 272 B)
unrolled_drop(itr, Val(length(itr) ÷ 2)) itr[length(itr) ÷ 2 + 1:end] Tuple 4 identical nonempty non-singleton Tuples similar (9 LLVM lines) similar (49 ns vs. 49 ns) similar (34 ms vs. 27 ms) 2025 times more (633 kB vs. 320 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 (60 ns vs. 60 ns) similar (44 ms vs. 26 ms) 1560 times more (780 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. 761 ns) similar (50 ms vs. 39 ms) similar (1 MB vs. 720 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) 35 times less (69 ns vs. 2 μs) similar (54 ms vs. 39 ms) 3 times more (2 MB vs. 723 kB)
unrolled_drop(itr, Val(length(itr) ÷ 2)) itr[length(itr) ÷ 2 + 1:end] Tuple 2 distinct empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (36 ms vs. 26 ms) 1429 times more (447 kB vs. 320 B)
unrolled_drop(itr, Val(length(itr) ÷ 2)) itr[length(itr) ÷ 2 + 1:end] Tuple 4 distinct empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (36 ms vs. 26 ms) 1482 times more (463 kB vs. 320 B)
unrolled_drop(itr, Val(length(itr) ÷ 2)) itr[length(itr) ÷ 2 + 1:end] Tuple 8 distinct empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (49 ms vs. 26 ms) 1585 times more (520 kB vs. 336 B)
unrolled_drop(itr, Val(length(itr) ÷ 2)) itr[length(itr) ÷ 2 + 1:end] Tuple 32 distinct empty & nonempty singleton Tuples better (optimized out vs. 192 B allocs) 12 times less (40 ns vs. 511 ns) similar (50 ms vs. 65 ms) 3 times less (707 kB vs. 2 MB)
unrolled_drop(itr, Val(length(itr) ÷ 2)) itr[length(itr) ÷ 2 + 1:end] Tuple 128 distinct empty & nonempty singleton Tuples better (optimized out vs. 576 B allocs) 39 times less (40 ns vs. 2 μs) similar (69 ms vs. 67 ms) similar (1 MB vs. 2 MB)
unrolled_drop(itr, Val(length(itr) ÷ 2)) itr[length(itr) ÷ 2 + 1:end] Tuple 2 distinct nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (36 ms vs. 27 ms) 1429 times more (447 kB vs. 320 B)
unrolled_drop(itr, Val(length(itr) ÷ 2)) itr[length(itr) ÷ 2 + 1:end] Tuple 4 distinct nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (36 ms vs. 27 ms) 1481 times more (463 kB vs. 320 B)
unrolled_drop(itr, Val(length(itr) ÷ 2)) itr[length(itr) ÷ 2 + 1:end] Tuple 8 distinct nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (47 ms vs. 27 ms) 1584 times more (520 kB vs. 336 B)
unrolled_drop(itr, Val(length(itr) ÷ 2)) itr[length(itr) ÷ 2 + 1:end] Tuple 32 distinct nonempty singleton Tuples better (optimized out vs. 192 B allocs) 39 times less (49 ns vs. 2 μs) similar (51 ms vs. 65 ms) 3 times less (707 kB vs. 2 MB)
unrolled_drop(itr, Val(length(itr) ÷ 2)) itr[length(itr) ÷ 2 + 1:end] Tuple 128 distinct nonempty singleton Tuples better (optimized out vs. 576 B allocs) 154 times less (49 ns vs. 8 μs) similar (61 ms vs. 65 ms) similar (1 MB vs. 2 MB)
unrolled_drop(itr, Val(length(itr) ÷ 2)) itr[length(itr) ÷ 2 + 1:end] Tuple 2 distinct nonempty non-singleton Tuples similar (8 LLVM lines) similar (50 ns vs. 49 ns) similar (33 ms vs. 26 ms) 2040 times more (606 kB vs. 304 B)
unrolled_drop(itr, Val(length(itr) ÷ 2)) itr[length(itr) ÷ 2 + 1:end] Tuple 4 distinct nonempty non-singleton Tuples similar (13 LLVM lines) similar (60 ns vs. 49 ns) similar (34 ms vs. 26 ms) 1194 times more (635 kB vs. 544 B)
unrolled_drop(itr, Val(length(itr) ÷ 2)) itr[length(itr) ÷ 2 + 1:end] Tuple 8 distinct nonempty non-singleton Tuples similar (20 LLVM lines) similar (60 ns vs. 60 ns) similar (46 ms vs. 26 ms) 806 times more (718 kB vs. 912 B)
unrolled_drop(itr, Val(length(itr) ÷ 2)) itr[length(itr) ÷ 2 + 1:end] Tuple 32 distinct nonempty non-singleton Tuples better (57 LLVM lines vs. 18 kB allocs) 45 times less (69 ns vs. 3 μs) similar (48 ms vs. 82 ms) 2 times less (1 MB vs. 2 MB)
unrolled_drop(itr, Val(length(itr) ÷ 2)) itr[length(itr) ÷ 2 + 1:end] Tuple 128 distinct nonempty non-singleton Tuples better (208 LLVM lines vs. 268 kB allocs) 154 times less (190 ns vs. 29 μs) similar (72 ms vs. 81 ms) similar (2 MB vs. 2 MB)
unrolled_map(length, itr) map(length, itr) Tuple 1 empty singleton Tuple similar (optimized out) similar (40 ns vs. 49 ns) similar (32 ms vs. 24 ms) 18 times more (171 kB vs. 9 kB)
unrolled_map(length, itr) map(length, itr) Tuple 1 nonempty singleton Tuple similar (optimized out) similar (49 ns vs. 40 ns) similar (32 ms vs. 24 ms) 5 times more (205 kB vs. 40 kB)
unrolled_map(length, itr) map(length, itr) Tuple 1 nonempty non-singleton Tuple similar (optimized out) similar (40 ns vs. 40 ns) similar (25 ms vs. 24 ms) 18 times more (237 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. 49 ns) similar (34 ms vs. 24 ms) 4 times more (207 kB vs. 42 kB)
unrolled_map(length, itr) map(length, itr) Tuple 4 identical nonempty singleton Tuples similar (7 LLVM lines w/ Const) similar (40 ns vs. 40 ns) 2 times more (49 ms vs. 24 ms) 2 times more (264 kB vs. 96 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) 2 times more (49 ms vs. 24 ms) similar (285 kB vs. 300 kB)
unrolled_map(length, itr) map(length, itr) Tuple 32 identical nonempty singleton Tuples better (7 LLVM lines w/ Const vs. 592 B allocs) 15 times less (49 ns vs. 741 ns) similar (51 ms vs. 31 ms) similar (390 kB vs. 294 kB)
unrolled_map(length, itr) map(length, itr) Tuple 128 identical nonempty singleton Tuples better (69 LLVM lines w/ Const vs. 2 kB allocs) 30 times less (80 ns vs. 2 μs) 2 times more (75 ms vs. 33 ms) 3 times more (1 MB vs. 297 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 (24 ms vs. 24 ms) 12 times more (244 kB vs. 20 kB)
unrolled_map(length, itr) map(length, itr) Tuple 4 identical nonempty non-singleton Tuples similar (7 LLVM lines w/ Const) similar (49 ns vs. 49 ns) similar (42 ms vs. 24 ms) 2 times more (334 kB vs. 157 kB)
unrolled_map(length, itr) map(length, itr) Tuple 8 identical nonempty non-singleton Tuples similar (7 LLVM lines w/ Const) similar (49 ns vs. 49 ns) similar (41 ms vs. 25 ms) similar (436 kB vs. 586 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) 15 times less (49 ns vs. 751 ns) similar (43 ms vs. 32 ms) similar (583 kB vs. 294 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) 30 times less (80 ns vs. 2 μs) 2 times more (64 ms vs. 32 ms) 5 times more (2 MB vs. 296 kB)
unrolled_map(length, itr) map(length, itr) Tuple 2 distinct empty & nonempty singleton Tuples similar (7 LLVM lines w/ Const) similar (40 ns vs. 40 ns) similar (32 ms vs. 24 ms) 4 times more (207 kB vs. 42 kB)
unrolled_map(length, itr) map(length, itr) Tuple 4 distinct empty & nonempty singleton Tuples similar (7 LLVM lines w/ Const) similar (49 ns vs. 40 ns) 2 times more (48 ms vs. 24 ms) 2 times more (274 kB vs. 106 kB)
unrolled_map(length, itr) map(length, itr) Tuple 8 distinct empty & nonempty singleton Tuples similar (7 LLVM lines w/ Const) similar (49 ns vs. 40 ns) similar (49 ms vs. 25 ms) similar (306 kB vs. 344 kB)
unrolled_map(length, itr) map(length, itr) Tuple 32 distinct empty & nonempty singleton Tuples better (7 LLVM lines w/ Const vs. 592 B allocs) 23 times less (49 ns vs. 1 μs) similar (50 ms vs. 33 ms) similar (414 kB vs. 318 kB)
unrolled_map(length, itr) map(length, itr) Tuple 128 distinct empty & nonempty singleton Tuples better (69 LLVM lines w/ Const vs. 2 kB allocs) 50 times less (80 ns vs. 4 μs) similar (73 ms vs. 41 ms) 3 times more (1 MB vs. 320 kB)
unrolled_map(length, itr) map(length, itr) Tuple 2 distinct nonempty singleton Tuples similar (7 LLVM lines w/ Const) similar (49 ns vs. 40 ns) similar (34 ms vs. 25 ms) 4 times more (212 kB vs. 47 kB)
unrolled_map(length, itr) map(length, itr) Tuple 4 distinct nonempty singleton Tuples similar (7 LLVM lines w/ Const) similar (49 ns vs. 40 ns) 2 times more (49 ms vs. 24 ms) 2 times more (279 kB vs. 111 kB)
unrolled_map(length, itr) map(length, itr) Tuple 8 distinct nonempty singleton Tuples similar (7 LLVM lines w/ Const) similar (40 ns vs. 40 ns) 2 times more (49 ms vs. 24 ms) similar (310 kB vs. 349 kB)
unrolled_map(length, itr) map(length, itr) Tuple 32 distinct nonempty singleton Tuples better (7 LLVM lines w/ Const vs. 592 B allocs) 23 times less (49 ns vs. 1 μs) similar (50 ms vs. 33 ms) similar (420 kB vs. 322 kB)
unrolled_map(length, itr) map(length, itr) Tuple 128 distinct nonempty singleton Tuples better (69 LLVM lines w/ Const vs. 2 kB allocs) 49 times less (80 ns vs. 4 μs) 2 times more (72 ms vs. 35 ms) 3 times more (1 MB vs. 325 kB)
unrolled_map(length, itr) map(length, itr) Tuple 2 distinct nonempty non-singleton Tuples similar (7 LLVM lines w/ Const) similar (40 ns vs. 49 ns) similar (25 ms vs. 24 ms) 5 times more (269 kB vs. 46 kB)
unrolled_map(length, itr) map(length, itr) Tuple 4 distinct nonempty non-singleton Tuples similar (7 LLVM lines w/ Const) similar (40 ns vs. 40 ns) similar (42 ms vs. 25 ms) 2 times more (335 kB vs. 159 kB)
unrolled_map(length, itr) map(length, itr) Tuple 8 distinct nonempty non-singleton Tuples similar (7 LLVM lines w/ Const) similar (40 ns vs. 49 ns) similar (43 ms vs. 26 ms) similar (385 kB vs. 622 kB)
unrolled_map(length, itr) map(length, itr) Tuple 32 distinct nonempty non-singleton Tuples better (7 LLVM lines w/ Const vs. 33 kB allocs) 59 times less (49 ns vs. 3 μs) similar (43 ms vs. 33 ms) similar (598 kB vs. 332 kB)
unrolled_map(length, itr) map(length, itr) Tuple 128 distinct nonempty non-singleton Tuples better (69 LLVM lines w/ Const vs. 528 kB allocs) 484 times less (80 ns vs. 39 μs) similar (66 ms vs. 35 ms) 2 times more (2 MB vs. 827 kB)
unrolled_any(isempty, itr) any(isempty, itr) Tuple 1 empty singleton Tuple similar (optimized out) similar (49 ns vs. 40 ns) similar (27 ms vs. 28 ms) 2 times less (55 kB vs. 159 kB)
unrolled_any(isempty, itr) any(isempty, itr) Tuple 1 nonempty singleton Tuple similar (optimized out) similar (40 ns vs. 40 ns) similar (27 ms vs. 28 ms) 3 times less (88 kB vs. 279 kB)
unrolled_any(isempty, itr) any(isempty, itr) Tuple 1 nonempty non-singleton Tuple similar (optimized out) similar (40 ns vs. 49 ns) similar (24 ms vs. 30 ms) 5 times less (62 kB vs. 335 kB)
unrolled_any(isempty, itr) any(isempty, itr) Tuple 2 identical nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (27 ms vs. 32 ms) 4 times less (92 kB vs. 448 kB)
unrolled_any(isempty, itr) any(isempty, itr) Tuple 4 identical nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (46 ms vs. 32 ms) 2 times less (154 kB vs. 448 kB)
unrolled_any(isempty, itr) any(isempty, itr) Tuple 8 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (47 ms vs. 32 ms) 2 times less (178 kB vs. 448 kB)
unrolled_any(isempty, itr) any(isempty, itr) Tuple 32 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (48 ms vs. 32 ms) similar (322 kB vs. 448 kB)
unrolled_any(isempty, itr) any(isempty, itr) Tuple 128 identical nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (60 ms vs. 32 ms) 2 times more (897 kB vs. 448 kB)
unrolled_any(isempty, itr) any(isempty, itr) Tuple 2 identical nonempty non-singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (24 ms vs. 33 ms) 7 times less (70 kB vs. 519 kB)
unrolled_any(isempty, itr) any(isempty, itr) Tuple 4 identical nonempty non-singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (43 ms vs. 34 ms) 3 times less (166 kB vs. 544 kB)
unrolled_any(isempty, itr) any(isempty, itr) Tuple 8 identical nonempty non-singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (44 ms vs. 33 ms) 2 times less (271 kB vs. 544 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 (46 ms vs. 33 ms) similar (457 kB vs. 544 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 (54 ms vs. 33 ms) 2 times more (1 MB vs. 545 kB)
unrolled_any(isempty, itr) any(isempty, itr) Tuple 2 distinct empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (28 ms vs. 29 ms) 4 times less (85 kB vs. 375 kB)
unrolled_any(isempty, itr) any(isempty, itr) Tuple 4 distinct empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (45 ms vs. 30 ms) 3 times less (144 kB vs. 498 kB)
unrolled_any(isempty, itr) any(isempty, itr) Tuple 8 distinct empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (46 ms vs. 32 ms) 5 times less (158 kB vs. 802 kB)
unrolled_any(isempty, itr) any(isempty, itr) Tuple 32 distinct empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (48 ms vs. 33 ms) 10 times less (246 kB vs. 3 MB)
unrolled_any(isempty, itr) any(isempty, itr) Tuple 128 distinct empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) 2 times more (72 ms vs. 29 ms) similar (595 kB vs. 338 kB)
unrolled_any(isempty, itr) any(isempty, itr) Tuple 2 distinct nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (28 ms vs. 32 ms) 5 times less (96 kB vs. 529 kB)
unrolled_any(isempty, itr) any(isempty, itr) Tuple 4 distinct nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (47 ms vs. 41 ms) 5 times less (166 kB vs. 936 kB)
unrolled_any(isempty, itr) any(isempty, itr) Tuple 8 distinct nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (46 ms vs. 57 ms) 8 times less (203 kB vs. 2 MB)
unrolled_any(isempty, itr) any(isempty, itr) Tuple 32 distinct nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (49 ms vs. 65 ms) 10 times less (346 kB vs. 4 MB)
unrolled_any(isempty, itr) any(isempty, itr) Tuple 128 distinct nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (59 ms vs. 36 ms) similar (920 kB vs. 501 kB)
unrolled_any(isempty, itr) any(isempty, itr) Tuple 2 distinct nonempty non-singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (24 ms vs. 34 ms) 5 times less (99 kB vs. 530 kB)
unrolled_any(isempty, itr) any(isempty, itr) Tuple 4 distinct nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (44 ms vs. 43 ms) 5 times less (179 kB vs. 946 kB)
unrolled_any(isempty, itr) any(isempty, itr) Tuple 8 distinct nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (43 ms vs. 60 ms) 7 times less (232 kB vs. 2 MB)
unrolled_any(isempty, itr) any(isempty, itr) Tuple 32 distinct nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (45 ms vs. 79 ms) 9 times less (482 kB vs. 4 MB)
unrolled_any(isempty, itr) any(isempty, itr) Tuple 128 distinct nonempty non-singleton Tuples better (optimized out vs. 521 kB allocs) 875 times less (40 ns vs. 35 μs) similar (55 ms vs. 37 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 (69 ms vs. 70 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. 60 ns) similar (69 ms vs. 70 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 (67 ms vs. 71 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 (50 ns vs. 49 ns) similar (70 ms vs. 72 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 4 identical nonempty singleton Tuples similar (28 LLVM lines) similar (60 ns vs. 60 ns) similar (91 ms vs. 72 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 identical nonempty singleton Tuples similar (48 LLVM lines) similar (70 ns vs. 80 ns) similar (92 ms vs. 81 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 (98 ms vs. 73 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 (410 ns vs. 450 ns) similar (130 ms vs. 72 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. 49 ns) similar (66 ms vs. 75 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 4 identical nonempty non-singleton Tuples similar (28 LLVM lines) similar (60 ns vs. 60 ns) similar (91 ms vs. 74 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 identical nonempty non-singleton Tuples similar (48 LLVM lines) similar (80 ns vs. 80 ns) similar (88 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 (94 ms vs. 77 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 (430 ns vs. 450 ns) similar (124 ms vs. 75 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 distinct empty & nonempty singleton Tuples similar (18 LLVM lines) similar (49 ns vs. 60 ns) similar (70 ms vs. 73 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 4 distinct empty & nonempty singleton Tuples similar (28 LLVM lines) similar (60 ns vs. 60 ns) similar (90 ms vs. 85 ms) similar (3 MB vs. 4 MB)
unrolled_any((x->length(x) == rand(8:10)), itr) any((x->length(x) == rand(8:10)), itr) Tuple 8 distinct empty & nonempty singleton Tuples better (48 LLVM lines vs. 96 B allocs) 27 times less (80 ns vs. 2 μs) similar (90 ms vs. 106 ms) 2 times less (3 MB vs. 6 MB)
unrolled_any((x->length(x) == rand(8:10)), itr) any((x->length(x) == rand(8:10)), itr) Tuple 32 distinct empty & nonempty singleton Tuples better (168 LLVM lines vs. 480 B allocs) 160 times less (140 ns vs. 22 μs) similar (99 ms vs. 114 ms) 2 times less (3 MB vs. 8 MB)
unrolled_any((x->length(x) == rand(8:10)), itr) any((x->length(x) == rand(8:10)), itr) Tuple 128 distinct empty & nonempty singleton Tuples similar (648 LLVM lines) 3 times less (430 ns vs. 2 μs) similar (134 ms vs. 74 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 distinct nonempty singleton Tuples similar (18 LLVM lines) similar (49 ns vs. 60 ns) similar (70 ms vs. 72 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 4 distinct nonempty singleton Tuples similar (28 LLVM lines) similar (60 ns vs. 60 ns) similar (89 ms vs. 86 ms) similar (3 MB vs. 4 MB)
unrolled_any((x->length(x) == rand(8:10)), itr) any((x->length(x) == rand(8:10)), itr) Tuple 8 distinct nonempty singleton Tuples better (48 LLVM lines vs. 96 B allocs) 163 times less (80 ns vs. 13 μs) similar (90 ms vs. 106 ms) 2 times less (3 MB vs. 6 MB)
unrolled_any((x->length(x) == rand(8:10)), itr) any((x->length(x) == rand(8:10)), itr) Tuple 32 distinct nonempty singleton Tuples better (168 LLVM lines vs. 496 B allocs) 560 times less (150 ns vs. 84 μs) similar (98 ms vs. 115 ms) 2 times less (3 MB vs. 8 MB)
unrolled_any((x->length(x) == rand(8:10)), itr) any((x->length(x) == rand(8:10)), itr) Tuple 128 distinct nonempty singleton Tuples similar (648 LLVM lines) 4 times less (410 ns vs. 2 μs) similar (128 ms vs. 74 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 distinct nonempty non-singleton Tuples similar (18 LLVM lines) similar (49 ns vs. 60 ns) similar (68 ms vs. 74 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 4 distinct nonempty non-singleton Tuples similar (28 LLVM lines) similar (60 ns vs. 60 ns) similar (88 ms vs. 86 ms) similar (3 MB vs. 4 MB)
unrolled_any((x->length(x) == rand(8:10)), itr) any((x->length(x) == rand(8:10)), itr) Tuple 8 distinct nonempty non-singleton Tuples better (48 LLVM lines vs. 3 kB allocs) 200 times less (70 ns vs. 14 μs) similar (87 ms vs. 109 ms) 2 times less (3 MB vs. 6 MB)
unrolled_any((x->length(x) == rand(8:10)), itr) any((x->length(x) == rand(8:10)), itr) Tuple 32 distinct nonempty non-singleton Tuples better (168 LLVM lines vs. 38 kB allocs) 710 times less (140 ns vs. 100 μs) similar (97 ms vs. 131 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 distinct nonempty non-singleton Tuples better (648 LLVM lines vs. 521 kB allocs) 88 times less (410 ns vs. 36 μs) similar (127 ms vs. 76 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. 49 ns) similar (28 ms vs. 28 ms) 3 times less (55 kB vs. 164 kB)
unrolled_all(isempty, itr) all(isempty, itr) Tuple 1 nonempty singleton Tuple similar (optimized out) similar (40 ns vs. 49 ns) similar (28 ms vs. 29 ms) 3 times less (88 kB vs. 281 kB)
unrolled_all(isempty, itr) all(isempty, itr) Tuple 1 nonempty non-singleton Tuple similar (optimized out) similar (40 ns vs. 40 ns) similar (24 ms vs. 29 ms) 5 times less (62 kB vs. 324 kB)
unrolled_all(isempty, itr) all(isempty, itr) Tuple 2 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (27 ms vs. 29 ms) 3 times less (90 kB vs. 330 kB)
unrolled_all(isempty, itr) all(isempty, itr) Tuple 4 identical nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (46 ms vs. 29 ms) 2 times less (147 kB vs. 330 kB)
unrolled_all(isempty, itr) all(isempty, itr) Tuple 8 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (48 ms vs. 29 ms) 2 times less (162 kB vs. 330 kB)
unrolled_all(isempty, itr) all(isempty, itr) Tuple 32 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (49 ms vs. 28 ms) similar (249 kB vs. 330 kB)
unrolled_all(isempty, itr) all(isempty, itr) Tuple 128 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (55 ms vs. 29 ms) similar (600 kB vs. 330 kB)
unrolled_all(isempty, itr) all(isempty, itr) Tuple 2 identical nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (24 ms vs. 29 ms) 5 times less (63 kB vs. 374 kB)
unrolled_all(isempty, itr) all(isempty, itr) Tuple 4 identical nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (43 ms vs. 30 ms) 2 times less (146 kB vs. 399 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 (43 ms vs. 30 ms) similar (225 kB vs. 399 kB)
unrolled_all(isempty, itr) all(isempty, itr) Tuple 32 identical nonempty non-singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (45 ms vs. 30 ms) similar (248 kB vs. 399 kB)
unrolled_all(isempty, itr) all(isempty, itr) Tuple 128 identical nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (51 ms vs. 29 ms) similar (599 kB vs. 400 kB)
unrolled_all(isempty, itr) all(isempty, itr) Tuple 2 distinct empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (28 ms vs. 29 ms) 4 times less (92 kB vs. 413 kB)
unrolled_all(isempty, itr) all(isempty, itr) Tuple 4 distinct empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (47 ms vs. 29 ms) 3 times less (150 kB vs. 540 kB)
unrolled_all(isempty, itr) all(isempty, itr) Tuple 8 distinct empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (46 ms vs. 29 ms) 5 times less (165 kB vs. 856 kB)
unrolled_all(isempty, itr) all(isempty, itr) Tuple 32 distinct empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (47 ms vs. 34 ms) 11 times less (252 kB vs. 3 MB)
unrolled_all(isempty, itr) all(isempty, itr) Tuple 128 distinct empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (55 ms vs. 34 ms) similar (603 kB vs. 506 kB)
unrolled_all(isempty, itr) all(isempty, itr) Tuple 2 distinct nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (28 ms vs. 28 ms) 4 times less (90 kB vs. 396 kB)
unrolled_all(isempty, itr) all(isempty, itr) Tuple 4 distinct nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (46 ms vs. 29 ms) 3 times less (148 kB vs. 523 kB)
unrolled_all(isempty, itr) all(isempty, itr) Tuple 8 distinct nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (46 ms vs. 31 ms) 5 times less (162 kB vs. 839 kB)
unrolled_all(isempty, itr) all(isempty, itr) Tuple 32 distinct nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (48 ms vs. 33 ms) 11 times less (250 kB vs. 3 MB)
unrolled_all(isempty, itr) all(isempty, itr) Tuple 128 distinct nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (55 ms vs. 29 ms) similar (601 kB vs. 345 kB)
unrolled_all(isempty, itr) all(isempty, itr) Tuple 2 distinct nonempty non-singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (24 ms vs. 30 ms) 4 times less (88 kB vs. 395 kB)
unrolled_all(isempty, itr) all(isempty, itr) Tuple 4 distinct nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (43 ms vs. 31 ms) 3 times less (147 kB vs. 535 kB)
unrolled_all(isempty, itr) all(isempty, itr) Tuple 8 distinct nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (43 ms vs. 33 ms) 5 times less (161 kB vs. 894 kB)
unrolled_all(isempty, itr) all(isempty, itr) Tuple 32 distinct nonempty non-singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (46 ms vs. 48 ms) 14 times less (249 kB vs. 3 MB)
unrolled_all(isempty, itr) all(isempty, itr) Tuple 128 distinct nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (51 ms vs. 30 ms) similar (600 kB vs. 412 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 (69 ms vs. 70 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 (70 ms vs. 70 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 (73 ms vs. 73 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 (69 ms vs. 71 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 4 identical nonempty singleton Tuples similar (28 LLVM lines) similar (60 ns vs. 49 ns) similar (89 ms vs. 73 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 identical nonempty singleton Tuples similar (48 LLVM lines) similar (49 ns vs. 49 ns) similar (92 ms vs. 77 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 (98 ms vs. 72 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. 49 ns) similar (131 ms vs. 74 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. 49 ns) similar (67 ms vs. 72 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 4 identical nonempty non-singleton Tuples similar (28 LLVM lines) similar (49 ns vs. 49 ns) similar (91 ms vs. 75 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 identical nonempty non-singleton Tuples similar (48 LLVM lines) similar (49 ns vs. 49 ns) similar (87 ms vs. 76 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. 49 ns) similar (94 ms vs. 74 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. 49 ns) similar (125 ms vs. 74 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 distinct empty & nonempty singleton Tuples similar (18 LLVM lines) similar (60 ns vs. 49 ns) similar (71 ms vs. 73 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 4 distinct empty & nonempty singleton Tuples similar (28 LLVM lines) similar (49 ns vs. 49 ns) similar (91 ms vs. 73 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 distinct empty & nonempty singleton Tuples similar (48 LLVM lines) 6 times less (49 ns vs. 330 ns) similar (92 ms vs. 77 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 distinct empty & nonempty singleton Tuples similar (168 LLVM lines) 17 times less (49 ns vs. 872 ns) similar (98 ms vs. 78 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 distinct empty & nonempty singleton Tuples similar (648 LLVM lines) similar (49 ns vs. 49 ns) similar (128 ms vs. 74 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 distinct nonempty singleton Tuples similar (18 LLVM lines) similar (49 ns vs. 49 ns) similar (70 ms vs. 72 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 4 distinct nonempty singleton Tuples similar (28 LLVM lines) similar (49 ns vs. 49 ns) similar (90 ms vs. 75 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 distinct nonempty singleton Tuples similar (48 LLVM lines) 45 times less (49 ns vs. 2 μs) similar (91 ms vs. 75 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 distinct nonempty singleton Tuples similar (168 LLVM lines) 56 times less (49 ns vs. 3 μs) similar (97 ms vs. 79 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 distinct nonempty singleton Tuples similar (648 LLVM lines) similar (60 ns vs. 49 ns) similar (136 ms vs. 75 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 distinct nonempty non-singleton Tuples similar (18 LLVM lines) similar (60 ns vs. 49 ns) similar (67 ms vs. 74 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 4 distinct nonempty non-singleton Tuples similar (28 LLVM lines) similar (50 ns vs. 49 ns) similar (88 ms vs. 75 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 distinct nonempty non-singleton Tuples better (48 LLVM lines vs. 560 B allocs) 47 times less (49 ns vs. 2 μs) similar (88 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 32 distinct nonempty non-singleton Tuples better (168 LLVM lines vs. 2 kB allocs) 66 times less (49 ns vs. 3 μs) similar (97 ms vs. 93 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 distinct nonempty non-singleton Tuples similar (648 LLVM lines) similar (49 ns vs. 49 ns) similar (126 ms vs. 76 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 (49 ms vs. 70 ms) 8 times less (66 kB vs. 541 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 (49 ns vs. 49 ns) similar (49 ms vs. 70 ms) 5 times less (99 kB vs. 578 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 (47 ms vs. 51 ms) 9 times less (73 kB vs. 725 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 (50 ms vs. 70 ms) 5 times less (102 kB vs. 580 kB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) foreach((x->@assert(length(x) <= 7)), itr) Tuple 4 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (67 ms vs. 71 ms) 3 times less (158 kB vs. 587 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 (40 ns vs. 40 ns) similar (69 ms vs. 70 ms) 3 times less (172 kB vs. 604 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. 49 ns) similar (68 ms vs. 69 ms) 2 times less (260 kB vs. 698 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 (40 ns vs. 49 ns) similar (72 ms vs. 74 ms) 2 times less (610 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. 40 ns) similar (47 ms vs. 51 ms) 9 times less (80 kB vs. 729 kB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) foreach((x->@assert(length(x) <= 7)), itr) Tuple 4 identical nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (64 ms vs. 52 ms) 4 times less (169 kB vs. 773 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 (40 ns vs. 49 ns) similar (64 ms vs. 51 ms) 3 times less (266 kB vs. 803 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 (65 ms vs. 55 ms) 2 times less (395 kB vs. 999 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 (49 ns vs. 49 ns) similar (76 ms vs. 56 ms) similar (1 MB vs. 2 MB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) foreach((x->@assert(length(x) <= 7)), itr) Tuple 2 distinct empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (51 ms vs. 69 ms) 5 times less (111 kB vs. 604 kB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) foreach((x->@assert(length(x) <= 7)), itr) Tuple 4 distinct empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (68 ms vs. 70 ms) 3 times less (196 kB vs. 667 kB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) foreach((x->@assert(length(x) <= 7)), itr) Tuple 8 distinct empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (69 ms vs. 71 ms) 3 times less (252 kB vs. 763 kB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) foreach((x->@assert(length(x) <= 7)), itr) Tuple 32 distinct empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (74 ms vs. 73 ms) 2 times less (339 kB vs. 856 kB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) foreach((x->@assert(length(x) <= 7)), itr) Tuple 128 distinct empty & nonempty singleton Tuples better (optimized out vs. 54 LLVM lines w/ Const) 28 times less (49 ns vs. 1 μs) similar (72 ms vs. 78 ms) 2 times less (688 kB vs. 2 MB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) foreach((x->@assert(length(x) <= 7)), itr) Tuple 2 distinct nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (57 ms vs. 71 ms) 5 times less (116 kB vs. 606 kB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) foreach((x->@assert(length(x) <= 7)), itr) Tuple 4 distinct nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (68 ms vs. 70 ms) 3 times less (200 kB vs. 669 kB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) foreach((x->@assert(length(x) <= 7)), itr) Tuple 8 distinct nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (67 ms vs. 71 ms) 2 times less (256 kB vs. 765 kB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) foreach((x->@assert(length(x) <= 7)), itr) Tuple 32 distinct nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (68 ms vs. 70 ms) 2 times less (344 kB vs. 860 kB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) foreach((x->@assert(length(x) <= 7)), itr) Tuple 128 distinct nonempty singleton Tuples better (optimized out vs. 54 LLVM lines w/ Const) 35 times less (40 ns vs. 1 μs) similar (71 ms vs. 83 ms) 2 times less (692 kB vs. 2 MB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) foreach((x->@assert(length(x) <= 7)), itr) Tuple 2 distinct nonempty non-singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (47 ms vs. 52 ms) 6 times less (114 kB vs. 778 kB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) foreach((x->@assert(length(x) <= 7)), itr) Tuple 4 distinct nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (64 ms vs. 52 ms) 4 times less (198 kB vs. 839 kB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) foreach((x->@assert(length(x) <= 7)), itr) Tuple 8 distinct nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (63 ms vs. 52 ms) 3 times less (272 kB vs. 954 kB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) foreach((x->@assert(length(x) <= 7)), itr) Tuple 32 distinct nonempty non-singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (65 ms vs. 55 ms) 2 times less (465 kB vs. 1 MB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) foreach((x->@assert(length(x) <= 7)), itr) Tuple 128 distinct nonempty non-singleton Tuples better (optimized out vs. 521 kB allocs) 884 times less (40 ns vs. 35 μs) similar (70 ms vs. 61 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 (27 ms vs. 57 ms) 26 times less (78 kB vs. 2 MB)
unrolled_reduce(tuple, itr) reduce(tuple, itr) Tuple 1 nonempty singleton Tuple similar (optimized out) similar (40 ns vs. 40 ns) 2 times less (27 ms vs. 55 ms) 19 times less (107 kB vs. 2 MB)
unrolled_reduce(tuple, itr) reduce(tuple, itr) Tuple 1 nonempty non-singleton Tuple similar (8 LLVM lines) similar (49 ns vs. 49 ns) similar (28 ms vs. 43 ms) 14 times less (222 kB vs. 3 MB)
unrolled_reduce(tuple, itr) reduce(tuple, itr) Tuple 2 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) 2 times less (27 ms vs. 56 ms) 22 times less (109 kB vs. 2 MB)
unrolled_reduce(tuple, itr) reduce(tuple, itr) Tuple 4 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (52 ms vs. 58 ms) similar (2 MB vs. 3 MB)
unrolled_reduce(tuple, itr) reduce(tuple, itr) Tuple 8 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (52 ms vs. 57 ms) similar (2 MB vs. 3 MB)
unrolled_reduce(tuple, itr) reduce(tuple, itr) Tuple 32 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (54 ms vs. 59 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) 101 times less (40 ns vs. 4 μs) similar (59 ms vs. 63 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. 50 ns) similar (27 ms vs. 44 ms) 13 times less (242 kB vs. 3 MB)
unrolled_reduce(tuple, itr) reduce(tuple, itr) Tuple 4 identical nonempty non-singleton Tuples similar (8 LLVM lines) similar (49 ns vs. 60 ns) similar (53 ms vs. 46 ms) similar (2 MB vs. 4 MB)
unrolled_reduce(tuple, itr) reduce(tuple, itr) Tuple 8 identical nonempty non-singleton Tuples similar (12 LLVM lines) similar (50 ns vs. 60 ns) similar (54 ms vs. 47 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 (58 ms vs. 57 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) 127 times less (89 ns vs. 11 μs) 2 times more (103 ms vs. 48 ms) similar (5 MB vs. 3 MB)
unrolled_reduce(tuple, itr) reduce(tuple, itr) Tuple 2 distinct empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) 2 times less (28 ms vs. 57 ms) 26 times less (109 kB vs. 3 MB)
unrolled_reduce(tuple, itr) reduce(tuple, itr) Tuple 4 distinct empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (51 ms vs. 58 ms) similar (2 MB vs. 3 MB)
unrolled_reduce(tuple, itr) reduce(tuple, itr) Tuple 8 distinct empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (52 ms vs. 60 ms) 2 times less (2 MB vs. 4 MB)
unrolled_reduce(tuple, itr) reduce(tuple, itr) Tuple 32 distinct empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (55 ms vs. 62 ms) 2 times less (2 MB vs. 5 MB)
unrolled_reduce(tuple, itr) reduce(tuple, itr) Tuple 128 distinct empty & nonempty singleton Tuples better (optimized out vs. 40 LLVM lines) 153 times less (40 ns vs. 6 μs) similar (58 ms vs. 64 ms) similar (3 MB vs. 3 MB)
unrolled_reduce(tuple, itr) reduce(tuple, itr) Tuple 2 distinct nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) 2 times less (28 ms vs. 57 ms) 26 times less (109 kB vs. 3 MB)
unrolled_reduce(tuple, itr) reduce(tuple, itr) Tuple 4 distinct nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (53 ms vs. 59 ms) similar (2 MB vs. 3 MB)
unrolled_reduce(tuple, itr) reduce(tuple, itr) Tuple 8 distinct nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (53 ms vs. 60 ms) 2 times less (2 MB vs. 4 MB)
unrolled_reduce(tuple, itr) reduce(tuple, itr) Tuple 32 distinct nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (54 ms vs. 68 ms) 2 times less (2 MB vs. 5 MB)
unrolled_reduce(tuple, itr) reduce(tuple, itr) Tuple 128 distinct nonempty singleton Tuples better (optimized out vs. 39 LLVM lines) 185 times less (40 ns vs. 7 μs) similar (59 ms vs. 64 ms) similar (3 MB vs. 3 MB)
unrolled_reduce(tuple, itr) reduce(tuple, itr) Tuple 2 distinct nonempty non-singleton Tuples similar (11 LLVM lines) similar (49 ns vs. 49 ns) similar (28 ms vs. 46 ms) 13 times less (267 kB vs. 4 MB)
unrolled_reduce(tuple, itr) reduce(tuple, itr) Tuple 4 distinct nonempty non-singleton Tuples similar (17 LLVM lines) similar (50 ns vs. 49 ns) similar (59 ms vs. 48 ms) 2 times less (2 MB vs. 5 MB)
unrolled_reduce(tuple, itr) reduce(tuple, itr) Tuple 8 distinct nonempty non-singleton Tuples similar (30 LLVM lines) similar (60 ns vs. 60 ns) similar (55 ms vs. 51 ms) 2 times less (2 MB vs. 6 MB)
unrolled_reduce(tuple, itr) reduce(tuple, itr) Tuple 32 distinct nonempty non-singleton Tuples similar (105 LLVM lines) similar (80 ns vs. 89 ns) similar (66 ms vs. 66 ms) 3 times less (3 MB vs. 9 MB)
unrolled_reduce(tuple, itr) reduce(tuple, itr) Tuple 128 distinct nonempty non-singleton Tuples better (625 LLVM lines vs. 784 kB allocs) 306 times less (351 ns vs. 108 μs) 3 times more (194 ms vs. 50 ms) similar (5 MB vs. 4 MB)
unrolled_reduce(tuple, itr; init = ()) reduce(tuple, itr; init = ()) Tuple 1 empty singleton Tuple similar (optimized out) similar (49 ns vs. 40 ns) 2 times less (27 ms vs. 61 ms) 28 times less (91 kB vs. 3 MB)
unrolled_reduce(tuple, itr; init = ()) reduce(tuple, itr; init = ()) Tuple 1 nonempty singleton Tuple similar (optimized out) similar (49 ns vs. 49 ns) 2 times less (27 ms vs. 64 ms) 21 times less (121 kB vs. 3 MB)
unrolled_reduce(tuple, itr; init = ()) reduce(tuple, itr; init = ()) Tuple 1 nonempty non-singleton Tuple similar (8 LLVM lines) similar (49 ns vs. 60 ns) similar (28 ms vs. 48 ms) 12 times less (256 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. 40 ns) 2 times less (28 ms vs. 60 ms) 22 times less (122 kB vs. 3 MB)
unrolled_reduce(tuple, itr; init = ()) reduce(tuple, itr; init = ()) Tuple 4 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (53 ms vs. 60 ms) similar (2 MB 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 (53 ms vs. 61 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 (40 ns vs. 49 ns) similar (54 ms vs. 64 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) 101 times less (40 ns vs. 4 μs) similar (59 ms vs. 65 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 (28 ms vs. 49 ms) 12 times less (276 kB vs. 3 MB)
unrolled_reduce(tuple, itr; init = ()) reduce(tuple, itr; init = ()) Tuple 4 identical nonempty non-singleton Tuples similar (8 LLVM lines) similar (49 ns vs. 60 ns) similar (54 ms vs. 49 ms) similar (2 MB vs. 4 MB)
unrolled_reduce(tuple, itr; init = ()) reduce(tuple, itr; init = ()) Tuple 8 identical nonempty non-singleton Tuples similar (12 LLVM lines) similar (49 ns vs. 50 ns) similar (55 ms vs. 51 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 (50 ns vs. 50 ns) similar (58 ms vs. 58 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) 129 times less (80 ns vs. 10 μs) similar (93 ms vs. 52 ms) similar (5 MB vs. 3 MB)
unrolled_reduce(tuple, itr; init = ()) reduce(tuple, itr; init = ()) Tuple 2 distinct empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) 2 times less (29 ms vs. 61 ms) 25 times less (122 kB vs. 3 MB)
unrolled_reduce(tuple, itr; init = ()) reduce(tuple, itr; init = ()) Tuple 4 distinct empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (52 ms vs. 63 ms) similar (2 MB vs. 4 MB)
unrolled_reduce(tuple, itr; init = ()) reduce(tuple, itr; init = ()) Tuple 8 distinct empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (52 ms vs. 63 ms) 2 times less (2 MB vs. 4 MB)
unrolled_reduce(tuple, itr; init = ()) reduce(tuple, itr; init = ()) Tuple 32 distinct empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (54 ms vs. 66 ms) 2 times less (2 MB vs. 5 MB)
unrolled_reduce(tuple, itr; init = ()) reduce(tuple, itr; init = ()) Tuple 128 distinct empty & nonempty singleton Tuples better (optimized out vs. 39 LLVM lines) 160 times less (40 ns vs. 6 μs) similar (59 ms vs. 68 ms) similar (3 MB vs. 3 MB)
unrolled_reduce(tuple, itr; init = ()) reduce(tuple, itr; init = ()) Tuple 2 distinct nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) 2 times less (28 ms vs. 62 ms) 25 times less (122 kB vs. 3 MB)
unrolled_reduce(tuple, itr; init = ()) reduce(tuple, itr; init = ()) Tuple 4 distinct nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (51 ms vs. 63 ms) similar (2 MB vs. 4 MB)
unrolled_reduce(tuple, itr; init = ()) reduce(tuple, itr; init = ()) Tuple 8 distinct nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (53 ms vs. 66 ms) 2 times less (2 MB vs. 4 MB)
unrolled_reduce(tuple, itr; init = ()) reduce(tuple, itr; init = ()) Tuple 32 distinct nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (53 ms vs. 65 ms) 2 times less (2 MB vs. 5 MB)
unrolled_reduce(tuple, itr; init = ()) reduce(tuple, itr; init = ()) Tuple 128 distinct nonempty singleton Tuples better (optimized out vs. 39 LLVM lines) 191 times less (40 ns vs. 8 μs) similar (60 ms vs. 70 ms) similar (3 MB vs. 3 MB)
unrolled_reduce(tuple, itr; init = ()) reduce(tuple, itr; init = ()) Tuple 2 distinct nonempty non-singleton Tuples similar (11 LLVM lines) similar (60 ns vs. 49 ns) similar (28 ms vs. 50 ms) 13 times less (301 kB vs. 4 MB)
unrolled_reduce(tuple, itr; init = ()) reduce(tuple, itr; init = ()) Tuple 4 distinct nonempty non-singleton Tuples similar (17 LLVM lines) similar (60 ns vs. 50 ns) similar (55 ms vs. 52 ms) 2 times less (2 MB vs. 5 MB)
unrolled_reduce(tuple, itr; init = ()) reduce(tuple, itr; init = ()) Tuple 8 distinct nonempty non-singleton Tuples similar (30 LLVM lines) similar (60 ns vs. 60 ns) similar (57 ms vs. 56 ms) 2 times less (2 MB vs. 6 MB)
unrolled_reduce(tuple, itr; init = ()) reduce(tuple, itr; init = ()) Tuple 32 distinct nonempty non-singleton Tuples similar (105 LLVM lines) similar (80 ns vs. 89 ns) similar (65 ms vs. 68 ms) 3 times less (3 MB vs. 9 MB)
unrolled_reduce(tuple, itr; init = ()) reduce(tuple, itr; init = ()) Tuple 128 distinct nonempty non-singleton Tuples better (625 LLVM lines vs. 784 kB allocs) 324 times less (350 ns vs. 114 μs) 3 times more (186 ms vs. 53 ms) similar (5 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 (40 ns vs. 49 ns) similar (44 ms vs. 80 ms) 5 times less (379 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. 49 ns) similar (45 ms vs. 80 ms) 5 times less (413 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 (49 ns vs. 49 ns) similar (37 ms vs. 57 ms) 4 times less (683 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) similar (44 ms vs. 84 ms) 5 times less (431 kB vs. 2 MB)
unrolled_mapreduce((x->(x, length(x))), tuple, itr) mapreduce((x->(x, length(x))), tuple, itr) Tuple 4 identical nonempty singleton Tuples similar (7 LLVM lines w/ Const) similar (40 ns vs. 49 ns) similar (87 ms vs. 91 ms) similar (2 MB 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 (49 ns vs. 49 ns) similar (87 ms vs. 108 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. 49 ns) 2 times less (94 ms vs. 197 ms) similar (3 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) 119 times less (80 ns vs. 10 μs) 2 times more (190 ms vs. 89 ms) 2 times more (7 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 (50 ns vs. 49 ns) similar (38 ms vs. 56 ms) 4 times less (736 kB vs. 3 MB)
unrolled_mapreduce((x->(x, length(x))), tuple, itr) mapreduce((x->(x, length(x))), tuple, itr) Tuple 4 identical nonempty non-singleton Tuples similar (28 LLVM lines) similar (60 ns vs. 60 ns) similar (79 ms vs. 58 ms) similar (3 MB 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 (84 ms vs. 59 ms) similar (3 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 (70 ns vs. 80 ns) similar (97 ms vs. 72 ms) similar (4 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) 61 times less (250 ns vs. 15 μs) 2 times more (175 ms vs. 61 ms) 2 times more (9 MB vs. 3 MB)
unrolled_mapreduce((x->(x, length(x))), tuple, itr) mapreduce((x->(x, length(x))), tuple, itr) Tuple 2 distinct empty & nonempty singleton Tuples similar (7 LLVM lines w/ Const) similar (40 ns vs. 49 ns) similar (45 ms vs. 84 ms) 6 times less (437 kB vs. 3 MB)
unrolled_mapreduce((x->(x, length(x))), tuple, itr) mapreduce((x->(x, length(x))), tuple, itr) Tuple 4 distinct empty & nonempty singleton Tuples similar (7 LLVM lines w/ Const) similar (49 ns vs. 40 ns) similar (86 ms vs. 92 ms) similar (2 MB vs. 3 MB)
unrolled_mapreduce((x->(x, length(x))), tuple, itr) mapreduce((x->(x, length(x))), tuple, itr) Tuple 8 distinct empty & nonempty singleton Tuples similar (7 LLVM lines w/ Const) similar (40 ns vs. 40 ns) similar (87 ms vs. 108 ms) similar (2 MB vs. 4 MB)
unrolled_mapreduce((x->(x, length(x))), tuple, itr) mapreduce((x->(x, length(x))), tuple, itr) Tuple 32 distinct empty & nonempty singleton Tuples similar (7 LLVM lines w/ Const) similar (40 ns vs. 40 ns) 2 times less (92 ms vs. 196 ms) similar (3 MB vs. 5 MB)
unrolled_mapreduce((x->(x, length(x))), tuple, itr) mapreduce((x->(x, length(x))), tuple, itr) Tuple 128 distinct empty & nonempty singleton Tuples better (55 LLVM lines w/ Const vs. 70 kB allocs) 232 times less (89 ns vs. 21 μs) 2 times more (197 ms vs. 94 ms) similar (7 MB vs. 4 MB)
unrolled_mapreduce((x->(x, length(x))), tuple, itr) mapreduce((x->(x, length(x))), tuple, itr) Tuple 2 distinct nonempty singleton Tuples similar (7 LLVM lines w/ Const) similar (40 ns vs. 49 ns) similar (45 ms vs. 86 ms) 6 times less (442 kB vs. 3 MB)
unrolled_mapreduce((x->(x, length(x))), tuple, itr) mapreduce((x->(x, length(x))), tuple, itr) Tuple 4 distinct nonempty singleton Tuples similar (7 LLVM lines w/ Const) similar (49 ns vs. 40 ns) similar (87 ms vs. 92 ms) similar (2 MB vs. 3 MB)
unrolled_mapreduce((x->(x, length(x))), tuple, itr) mapreduce((x->(x, length(x))), tuple, itr) Tuple 8 distinct nonempty singleton Tuples similar (7 LLVM lines w/ Const) similar (40 ns vs. 40 ns) similar (87 ms vs. 111 ms) similar (2 MB vs. 4 MB)
unrolled_mapreduce((x->(x, length(x))), tuple, itr) mapreduce((x->(x, length(x))), tuple, itr) Tuple 32 distinct nonempty singleton Tuples similar (7 LLVM lines w/ Const) similar (40 ns vs. 40 ns) 2 times less (91 ms vs. 197 ms) similar (3 MB vs. 6 MB)
unrolled_mapreduce((x->(x, length(x))), tuple, itr) mapreduce((x->(x, length(x))), tuple, itr) Tuple 128 distinct nonempty singleton Tuples better (55 LLVM lines w/ Const vs. 70 kB allocs) 346 times less (80 ns vs. 28 μs) similar (193 ms vs. 98 ms) similar (7 MB vs. 4 MB)
unrolled_mapreduce((x->(x, length(x))), tuple, itr) mapreduce((x->(x, length(x))), tuple, itr) Tuple 2 distinct nonempty non-singleton Tuples similar (15 LLVM lines) similar (60 ns vs. 60 ns) similar (39 ms vs. 58 ms) 4 times less (784 kB vs. 3 MB)
unrolled_mapreduce((x->(x, length(x))), tuple, itr) mapreduce((x->(x, length(x))), tuple, itr) Tuple 4 distinct nonempty non-singleton Tuples similar (25 LLVM lines) similar (60 ns vs. 60 ns) similar (85 ms vs. 61 ms) similar (3 MB vs. 4 MB)
unrolled_mapreduce((x->(x, length(x))), tuple, itr) mapreduce((x->(x, length(x))), tuple, itr) Tuple 8 distinct nonempty non-singleton Tuples similar (46 LLVM lines) similar (60 ns vs. 60 ns) similar (89 ms vs. 64 ms) similar (3 MB vs. 5 MB)
unrolled_mapreduce((x->(x, length(x))), tuple, itr) mapreduce((x->(x, length(x))), tuple, itr) Tuple 32 distinct nonempty non-singleton Tuples similar (169 LLVM lines) similar (110 ns vs. 110 ns) similar (108 ms vs. 79 ms) similar (4 MB vs. 8 MB)
unrolled_mapreduce((x->(x, length(x))), tuple, itr) mapreduce((x->(x, length(x))), tuple, itr) Tuple 128 distinct nonempty non-singleton Tuples better (881 LLVM lines vs. 855 kB allocs) 330 times less (421 ns vs. 139 μs) 3 times more (283 ms vs. 82 ms) similar (10 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) similar (45 ms vs. 85 ms) 5 times less (407 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 (40 ns vs. 40 ns) similar (45 ms vs. 85 ms) 5 times less (441 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 (39 ms vs. 60 ms) 4 times less (729 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. 49 ns) similar (46 ms vs. 90 ms) 5 times less (458 kB vs. 2 MB)
unrolled_mapreduce((x->(x, length(x))), tuple, itr; init = ()) mapreduce((x->(x, length(x))), tuple, itr; init = ()) Tuple 4 identical nonempty singleton Tuples similar (7 LLVM lines w/ Const) similar (40 ns vs. 49 ns) similar (89 ms vs. 97 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 8 identical nonempty singleton Tuples similar (7 LLVM lines w/ Const) similar (40 ns vs. 40 ns) similar (88 ms vs. 109 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 (40 ns vs. 49 ns) 2 times less (93 ms vs. 201 ms) similar (3 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) 103 times less (89 ns vs. 9 μs) 2 times more (192 ms vs. 95 ms) 2 times more (7 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. 60 ns) similar (39 ms vs. 61 ms) 3 times less (781 kB vs. 3 MB)
unrolled_mapreduce((x->(x, length(x))), tuple, itr; init = ()) mapreduce((x->(x, length(x))), tuple, itr; init = ()) Tuple 4 identical nonempty non-singleton Tuples similar (28 LLVM lines) similar (50 ns vs. 60 ns) similar (86 ms vs. 62 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 8 identical nonempty non-singleton Tuples similar (52 LLVM lines) similar (60 ns vs. 50 ns) similar (83 ms vs. 65 ms) similar (3 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 (89 ns vs. 70 ns) similar (94 ms vs. 78 ms) similar (4 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) 62 times less (250 ns vs. 16 μs) 2 times more (174 ms vs. 66 ms) 2 times more (9 MB vs. 3 MB)
unrolled_mapreduce((x->(x, length(x))), tuple, itr; init = ()) mapreduce((x->(x, length(x))), tuple, itr; init = ()) Tuple 2 distinct empty & nonempty singleton Tuples similar (7 LLVM lines w/ Const) similar (40 ns vs. 40 ns) similar (46 ms vs. 88 ms) 6 times less (465 kB vs. 3 MB)
unrolled_mapreduce((x->(x, length(x))), tuple, itr; init = ()) mapreduce((x->(x, length(x))), tuple, itr; init = ()) Tuple 4 distinct empty & nonempty singleton Tuples similar (7 LLVM lines w/ Const) similar (40 ns vs. 49 ns) similar (86 ms vs. 96 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 8 distinct empty & nonempty singleton Tuples similar (7 LLVM lines w/ Const) similar (49 ns vs. 40 ns) similar (88 ms vs. 110 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 distinct empty & nonempty singleton Tuples similar (7 LLVM lines w/ Const) similar (40 ns vs. 49 ns) 2 times less (93 ms vs. 202 ms) similar (3 MB vs. 6 MB)
unrolled_mapreduce((x->(x, length(x))), tuple, itr; init = ()) mapreduce((x->(x, length(x))), tuple, itr; init = ()) Tuple 128 distinct empty & nonempty singleton Tuples better (55 LLVM lines w/ Const vs. 70 kB allocs) 259 times less (81 ns vs. 21 μs) similar (194 ms vs. 100 ms) similar (7 MB vs. 4 MB)
unrolled_mapreduce((x->(x, length(x))), tuple, itr; init = ()) mapreduce((x->(x, length(x))), tuple, itr; init = ()) Tuple 2 distinct nonempty singleton Tuples similar (7 LLVM lines w/ Const) similar (40 ns vs. 40 ns) similar (46 ms vs. 90 ms) 6 times less (469 kB vs. 3 MB)
unrolled_mapreduce((x->(x, length(x))), tuple, itr; init = ()) mapreduce((x->(x, length(x))), tuple, itr; init = ()) Tuple 4 distinct nonempty singleton Tuples similar (7 LLVM lines w/ Const) similar (40 ns vs. 40 ns) similar (86 ms vs. 98 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 8 distinct nonempty singleton Tuples similar (7 LLVM lines w/ Const) similar (40 ns vs. 40 ns) similar (88 ms vs. 113 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 distinct nonempty singleton Tuples similar (7 LLVM lines w/ Const) similar (49 ns vs. 40 ns) 2 times less (94 ms vs. 202 ms) similar (3 MB vs. 6 MB)
unrolled_mapreduce((x->(x, length(x))), tuple, itr; init = ()) mapreduce((x->(x, length(x))), tuple, itr; init = ()) Tuple 128 distinct nonempty singleton Tuples better (55 LLVM lines w/ Const vs. 70 kB allocs) 342 times less (80 ns vs. 27 μs) 2 times more (201 ms vs. 97 ms) similar (7 MB vs. 4 MB)
unrolled_mapreduce((x->(x, length(x))), tuple, itr; init = ()) mapreduce((x->(x, length(x))), tuple, itr; init = ()) Tuple 2 distinct nonempty non-singleton Tuples similar (15 LLVM lines) similar (60 ns vs. 60 ns) similar (40 ms vs. 62 ms) 4 times less (829 kB vs. 3 MB)
unrolled_mapreduce((x->(x, length(x))), tuple, itr; init = ()) mapreduce((x->(x, length(x))), tuple, itr; init = ()) Tuple 4 distinct nonempty non-singleton Tuples similar (25 LLVM lines) similar (60 ns vs. 60 ns) similar (85 ms vs. 65 ms) similar (3 MB vs. 4 MB)
unrolled_mapreduce((x->(x, length(x))), tuple, itr; init = ()) mapreduce((x->(x, length(x))), tuple, itr; init = ()) Tuple 8 distinct nonempty non-singleton Tuples similar (46 LLVM lines) similar (69 ns vs. 60 ns) similar (87 ms vs. 67 ms) similar (3 MB vs. 5 MB)
unrolled_mapreduce((x->(x, length(x))), tuple, itr; init = ()) mapreduce((x->(x, length(x))), tuple, itr; init = ()) Tuple 32 distinct nonempty non-singleton Tuples similar (169 LLVM lines) similar (100 ns vs. 110 ns) similar (107 ms vs. 81 ms) similar (4 MB vs. 8 MB)
unrolled_mapreduce((x->(x, length(x))), tuple, itr; init = ()) mapreduce((x->(x, length(x))), tuple, itr; init = ()) Tuple 128 distinct nonempty non-singleton Tuples better (881 LLVM lines vs. 855 kB allocs) 334 times less (411 ns vs. 137 μs) 4 times more (281 ms vs. 68 ms) similar (10 MB vs. 5 MB)
unrolled_accumulate(tuple, itr) accumulate(tuple, itr) Tuple 1 empty singleton Tuple similar (optimized out) similar (40 ns vs. 49 ns) similar (27 ms vs. 41 ms) 3 times less (128 kB vs. 481 kB)
unrolled_accumulate(tuple, itr) accumulate(tuple, itr) Tuple 1 nonempty singleton Tuple similar (optimized out) similar (40 ns vs. 40 ns) similar (27 ms vs. 41 ms) 3 times less (158 kB vs. 511 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 (28 ms vs. 41 ms) 2 times less (364 kB vs. 896 kB)
unrolled_accumulate(tuple, itr) accumulate(tuple, itr) Tuple 2 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (27 ms vs. 50 ms) 6 times less (160 kB vs. 1 MB)
unrolled_accumulate(tuple, itr) accumulate(tuple, itr) Tuple 4 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (60 ms vs. 66 ms) 6 times less (264 kB vs. 2 MB)
unrolled_accumulate(tuple, itr) accumulate(tuple, itr) Tuple 8 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (63 ms vs. 96 ms) 9 times less (288 kB vs. 3 MB)
unrolled_accumulate(tuple, itr) accumulate(tuple, itr) Tuple 32 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) 4 times less (62 ms vs. 290 ms) 24 times less (430 kB vs. 10 MB)
unrolled_accumulate(tuple, itr) accumulate(tuple, itr) Tuple 2 identical nonempty non-singleton Tuples similar (11 LLVM lines) similar (49 ns vs. 49 ns) similar (29 ms vs. 49 ms) 4 times less (391 kB vs. 2 MB)
unrolled_accumulate(tuple, itr) accumulate(tuple, itr) Tuple 4 identical nonempty non-singleton Tuples similar (21 LLVM lines) similar (49 ns vs. 60 ns) similar (60 ms vs. 52 ms) 4 times less (562 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 (64 ms vs. 61 ms) 5 times less (737 kB vs. 4 MB)
unrolled_accumulate(tuple, itr) accumulate(tuple, itr) Tuple 32 identical nonempty non-singleton Tuples similar (857 LLVM lines) similar (240 ns vs. 330 ns) similar (301 ms vs. 461 ms) 12 times less (1 MB vs. 16 MB)
unrolled_accumulate(tuple, itr) accumulate(tuple, itr) Tuple 2 distinct empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (28 ms vs. 50 ms) 6 times less (160 kB vs. 1 MB)
unrolled_accumulate(tuple, itr) accumulate(tuple, itr) Tuple 4 distinct empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (59 ms vs. 68 ms) 6 times less (265 kB vs. 2 MB)
unrolled_accumulate(tuple, itr) accumulate(tuple, itr) Tuple 8 distinct empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (58 ms vs. 104 ms) 11 times less (288 kB vs. 3 MB)
unrolled_accumulate(tuple, itr) accumulate(tuple, itr) Tuple 32 distinct empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) 4 times less (61 ms vs. 287 ms) 25 times less (431 kB vs. 11 MB)
unrolled_accumulate(tuple, itr) accumulate(tuple, itr) Tuple 2 distinct nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (28 ms vs. 50 ms) 6 times less (160 kB vs. 1 MB)
unrolled_accumulate(tuple, itr) accumulate(tuple, itr) Tuple 4 distinct nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (58 ms vs. 67 ms) 6 times less (264 kB vs. 2 MB)
unrolled_accumulate(tuple, itr) accumulate(tuple, itr) Tuple 8 distinct nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (58 ms vs. 100 ms) 11 times less (288 kB vs. 3 MB)
unrolled_accumulate(tuple, itr) accumulate(tuple, itr) Tuple 32 distinct nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) 4 times less (66 ms vs. 289 ms) 25 times less (431 kB vs. 11 MB)
unrolled_accumulate(tuple, itr) accumulate(tuple, itr) Tuple 2 distinct nonempty non-singleton Tuples similar (13 LLVM lines) similar (49 ns vs. 60 ns) similar (28 ms vs. 55 ms) 3 times less (417 kB vs. 2 MB)
unrolled_accumulate(tuple, itr) accumulate(tuple, itr) Tuple 4 distinct nonempty non-singleton Tuples similar (29 LLVM lines) similar (60 ns vs. 49 ns) similar (61 ms vs. 55 ms) 5 times less (564 kB vs. 3 MB)
unrolled_accumulate(tuple, itr) accumulate(tuple, itr) Tuple 8 distinct nonempty non-singleton Tuples similar (86 LLVM lines) similar (80 ns vs. 80 ns) similar (72 ms vs. 74 ms) 7 times less (676 kB vs. 5 MB)
unrolled_accumulate(tuple, itr) accumulate(tuple, itr) Tuple 32 distinct nonempty non-singleton Tuples similar (2796 LLVM lines) similar (2 μs vs. 2 μs) similar (1 s vs. 843 ms) 12 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 (29 ms vs. 35 ms) 5 times less (142 kB vs. 816 kB)
unrolled_accumulate(tuple, itr; init = ()) accumulate(tuple, itr; init = ()) Tuple 1 nonempty singleton Tuple similar (optimized out) similar (40 ns vs. 40 ns) similar (28 ms vs. 35 ms) 4 times less (171 kB vs. 847 kB)
unrolled_accumulate(tuple, itr; init = ()) accumulate(tuple, itr; init = ()) Tuple 1 nonempty non-singleton Tuple similar (8 LLVM lines) similar (50 ns vs. 49 ns) similar (29 ms vs. 39 ms) 2 times less (398 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 (28 ms vs. 43 ms) 6 times less (174 kB vs. 1 MB)
unrolled_accumulate(tuple, itr; init = ()) accumulate(tuple, itr; init = ()) Tuple 4 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (59 ms vs. 60 ms) 6 times less (277 kB vs. 2 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 (58 ms vs. 89 ms) 9 times less (301 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 (62 ms vs. 278 ms) 23 times less (444 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 (49 ns vs. 49 ns) similar (29 ms vs. 44 ms) 3 times less (426 kB vs. 2 MB)
unrolled_accumulate(tuple, itr; init = ()) accumulate(tuple, itr; init = ()) Tuple 4 identical nonempty non-singleton Tuples similar (21 LLVM lines) similar (49 ns vs. 60 ns) similar (61 ms vs. 45 ms) 4 times less (598 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 (69 ns vs. 69 ns) similar (63 ms vs. 53 ms) 5 times less (771 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 (280 ns vs. 270 ns) similar (290 ms vs. 442 ms) 11 times less (1 MB vs. 16 MB)
unrolled_accumulate(tuple, itr; init = ()) accumulate(tuple, itr; init = ()) Tuple 2 distinct empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (29 ms vs. 43 ms) 6 times less (174 kB vs. 1 MB)
unrolled_accumulate(tuple, itr; init = ()) accumulate(tuple, itr; init = ()) Tuple 4 distinct empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (61 ms vs. 61 ms) 6 times less (278 kB vs. 2 MB)
unrolled_accumulate(tuple, itr; init = ()) accumulate(tuple, itr; init = ()) Tuple 8 distinct empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (59 ms vs. 91 ms) 11 times less (302 kB vs. 3 MB)
unrolled_accumulate(tuple, itr; init = ()) accumulate(tuple, itr; init = ()) Tuple 32 distinct empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) 4 times less (60 ms vs. 280 ms) 24 times less (445 kB vs. 11 MB)
unrolled_accumulate(tuple, itr; init = ()) accumulate(tuple, itr; init = ()) Tuple 2 distinct nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (28 ms vs. 44 ms) 6 times less (174 kB vs. 1 MB)
unrolled_accumulate(tuple, itr; init = ()) accumulate(tuple, itr; init = ()) Tuple 4 distinct nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (58 ms vs. 59 ms) 6 times less (278 kB vs. 2 MB)
unrolled_accumulate(tuple, itr; init = ()) accumulate(tuple, itr; init = ()) Tuple 8 distinct nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (59 ms vs. 93 ms) 11 times less (302 kB vs. 3 MB)
unrolled_accumulate(tuple, itr; init = ()) accumulate(tuple, itr; init = ()) Tuple 32 distinct nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) 4 times less (63 ms vs. 283 ms) 24 times less (444 kB vs. 11 MB)
unrolled_accumulate(tuple, itr; init = ()) accumulate(tuple, itr; init = ()) Tuple 2 distinct nonempty non-singleton Tuples similar (13 LLVM lines) similar (60 ns vs. 49 ns) similar (30 ms vs. 42 ms) 3 times less (452 kB vs. 2 MB)
unrolled_accumulate(tuple, itr; init = ()) accumulate(tuple, itr; init = ()) Tuple 4 distinct nonempty non-singleton Tuples similar (29 LLVM lines) similar (60 ns vs. 60 ns) similar (63 ms vs. 47 ms) 4 times less (599 kB vs. 3 MB)
unrolled_accumulate(tuple, itr; init = ()) accumulate(tuple, itr; init = ()) Tuple 8 distinct nonempty non-singleton Tuples similar (86 LLVM lines) similar (89 ns vs. 80 ns) similar (69 ms vs. 65 ms) 7 times less (710 kB vs. 5 MB)
unrolled_accumulate(tuple, itr; init = ()) accumulate(tuple, itr; init = ()) Tuple 32 distinct nonempty non-singleton Tuples similar (2795 LLVM lines) similar (2 μs vs. 2 μs) similar (1 s vs. 797 ms) 12 times less (1 MB vs. 17 MB)
unrolled_applyat(length, rand(1:7:length(itr)), itr) length(itr[rand(1:7:length(itr))]) Tuple 1 empty singleton Tuple similar (19 LLVM lines w/ Const) similar (49 ns vs. 49 ns) similar (70 ms vs. 53 ms) similar (4 MB vs. 3 MB)
unrolled_applyat(length, rand(1:7:length(itr)), itr) length(itr[rand(1:7:length(itr))]) Tuple 1 nonempty singleton Tuple similar (19 LLVM lines w/ Const) similar (49 ns vs. 49 ns) similar (70 ms vs. 57 ms) similar (4 MB vs. 3 MB)
unrolled_applyat(length, rand(1:7:length(itr)), itr) length(itr[rand(1:7:length(itr))]) Tuple 1 nonempty non-singleton Tuple similar (22 LLVM lines w/ Const) similar (49 ns vs. 50 ns) similar (67 ms vs. 53 ms) similar (4 MB vs. 3 MB)
unrolled_applyat(length, rand(1:7:length(itr)), itr) length(itr[rand(1:7:length(itr))]) Tuple 2 identical nonempty singleton Tuples similar (20 LLVM lines w/ Const) similar (49 ns vs. 49 ns) similar (75 ms vs. 53 ms) similar (4 MB vs. 3 MB)
unrolled_applyat(length, rand(1:7:length(itr)), itr) length(itr[rand(1:7:length(itr))]) Tuple 4 identical nonempty singleton Tuples similar (20 LLVM lines w/ Const) similar (49 ns vs. 49 ns) similar (89 ms vs. 54 ms) similar (4 MB vs. 3 MB)
unrolled_applyat(length, rand(1:7:length(itr)), itr) length(itr[rand(1:7:length(itr))]) Tuple 8 identical nonempty singleton Tuples similar (20 LLVM lines w/ Const) similar (49 ns vs. 49 ns) similar (88 ms vs. 53 ms) similar (5 MB vs. 3 MB)
unrolled_applyat(length, rand(1:7:length(itr)), itr) length(itr[rand(1:7:length(itr))]) Tuple 32 identical nonempty singleton Tuples similar (20 LLVM lines w/ Const) similar (49 ns vs. 49 ns) similar (94 ms vs. 53 ms) similar (7 MB vs. 3 MB)
unrolled_applyat(length, rand(1:7:length(itr)), itr) length(itr[rand(1:7:length(itr))]) Tuple 128 identical nonempty singleton Tuples similar (20 LLVM lines w/ Const) similar (49 ns vs. 49 ns) 2 times more (119 ms vs. 58 ms) 4 times more (15 MB vs. 3 MB)
unrolled_applyat(length, rand(1:7:length(itr)), itr) length(itr[rand(1:7:length(itr))]) Tuple 2 identical nonempty non-singleton Tuples similar (22 LLVM lines w/ Const) similar (49 ns vs. 49 ns) similar (69 ms vs. 54 ms) similar (4 MB vs. 3 MB)
unrolled_applyat(length, rand(1:7:length(itr)), itr) length(itr[rand(1:7:length(itr))]) Tuple 4 identical nonempty non-singleton Tuples similar (22 LLVM lines w/ Const) similar (49 ns vs. 49 ns) similar (88 ms vs. 55 ms) similar (4 MB vs. 3 MB)
unrolled_applyat(length, rand(1:7:length(itr)), itr) length(itr[rand(1:7:length(itr))]) Tuple 8 identical nonempty non-singleton Tuples similar (22 LLVM lines w/ Const) similar (49 ns vs. 49 ns) similar (87 ms vs. 53 ms) similar (5 MB vs. 3 MB)
unrolled_applyat(length, rand(1:7:length(itr)), itr) length(itr[rand(1:7:length(itr))]) Tuple 32 identical nonempty non-singleton Tuples similar (22 LLVM lines w/ Const) similar (49 ns vs. 49 ns) similar (95 ms vs. 54 ms) 2 times more (7 MB vs. 3 MB)
unrolled_applyat(length, rand(1:7:length(itr)), itr) length(itr[rand(1:7:length(itr))]) Tuple 128 identical nonempty non-singleton Tuples similar (22 LLVM lines w/ Const) similar (60 ns vs. 49 ns) 2 times more (118 ms vs. 53 ms) 4 times more (15 MB vs. 3 MB)
unrolled_applyat(length, rand(1:7:length(itr)), itr) length(itr[rand(1:7:length(itr))]) Tuple 2 distinct empty & nonempty singleton Tuples similar (25 LLVM lines w/ switch) similar (49 ns vs. 69 ns) similar (72 ms vs. 54 ms) similar (4 MB vs. 3 MB)
unrolled_applyat(length, rand(1:7:length(itr)), itr) length(itr[rand(1:7:length(itr))]) Tuple 4 distinct empty & nonempty singleton Tuples similar (20 LLVM lines w/ switch) similar (49 ns vs. 69 ns) similar (88 ms vs. 54 ms) similar (4 MB vs. 3 MB)
unrolled_applyat(length, rand(1:7:length(itr)), itr) length(itr[rand(1:7:length(itr))]) Tuple 8 distinct empty & nonempty singleton Tuples similar (22 LLVM lines w/ switch) similar (49 ns vs. 69 ns) similar (90 ms vs. 53 ms) similar (5 MB vs. 3 MB)
unrolled_applyat(length, rand(1:7:length(itr)), itr) length(itr[rand(1:7:length(itr))]) Tuple 32 distinct empty & nonempty singleton Tuples similar (22 LLVM lines w/ switch) similar (50 ns vs. 60 ns) similar (94 ms vs. 52 ms) similar (7 MB vs. 3 MB)
unrolled_applyat(length, rand(1:7:length(itr)), itr) length(itr[rand(1:7:length(itr))]) Tuple 128 distinct empty & nonempty singleton Tuples similar (22 LLVM lines w/ switch) similar (49 ns vs. 60 ns) 2 times more (125 ms vs. 53 ms) 4 times more (15 MB vs. 3 MB)
unrolled_applyat(length, rand(1:7:length(itr)), itr) length(itr[rand(1:7:length(itr))]) Tuple 2 distinct nonempty singleton Tuples similar (25 LLVM lines w/ switch) similar (49 ns vs. 60 ns) similar (72 ms vs. 53 ms) similar (4 MB vs. 3 MB)
unrolled_applyat(length, rand(1:7:length(itr)), itr) length(itr[rand(1:7:length(itr))]) Tuple 4 distinct nonempty singleton Tuples similar (20 LLVM lines w/ switch) similar (49 ns vs. 60 ns) similar (90 ms vs. 53 ms) similar (4 MB vs. 3 MB)
unrolled_applyat(length, rand(1:7:length(itr)), itr) length(itr[rand(1:7:length(itr))]) Tuple 8 distinct nonempty singleton Tuples similar (22 LLVM lines w/ switch) similar (49 ns vs. 69 ns) similar (89 ms vs. 53 ms) similar (5 MB vs. 3 MB)
unrolled_applyat(length, rand(1:7:length(itr)), itr) length(itr[rand(1:7:length(itr))]) Tuple 32 distinct nonempty singleton Tuples similar (22 LLVM lines w/ switch) similar (49 ns vs. 69 ns) similar (98 ms vs. 60 ms) similar (7 MB vs. 3 MB)
unrolled_applyat(length, rand(1:7:length(itr)), itr) length(itr[rand(1:7:length(itr))]) Tuple 128 distinct nonempty singleton Tuples similar (22 LLVM lines w/ switch) similar (49 ns vs. 60 ns) 2 times more (123 ms vs. 54 ms) 4 times more (15 MB vs. 3 MB)
unrolled_applyat(length, rand(1:7:length(itr)), itr) length(itr[rand(1:7:length(itr))]) Tuple 2 distinct nonempty non-singleton Tuples better (27 LLVM lines w/ switch vs. 48 B allocs) similar (49 ns vs. 80 ns) similar (68 ms vs. 53 ms) similar (4 MB vs. 3 MB)
unrolled_applyat(length, rand(1:7:length(itr)), itr) length(itr[rand(1:7:length(itr))]) Tuple 4 distinct nonempty non-singleton Tuples better (22 LLVM lines w/ switch vs. 112 B allocs) similar (49 ns vs. 89 ns) similar (92 ms vs. 54 ms) similar (4 MB vs. 3 MB)
unrolled_applyat(length, rand(1:7:length(itr)), itr) length(itr[rand(1:7:length(itr))]) Tuple 8 distinct nonempty non-singleton Tuples better (24 LLVM lines w/ switch vs. 256 B allocs) similar (49 ns vs. 80 ns) similar (90 ms vs. 54 ms) similar (5 MB vs. 3 MB)
unrolled_applyat(length, rand(1:7:length(itr)), itr) length(itr[rand(1:7:length(itr))]) Tuple 32 distinct nonempty non-singleton Tuples better (24 LLVM lines w/ switch vs. 1 kB allocs) similar (69 ns vs. 100 ns) similar (93 ms vs. 54 ms) 2 times more (7 MB vs. 3 MB)
unrolled_applyat(length, rand(1:7:length(itr)), itr) length(itr[rand(1:7:length(itr))]) Tuple 128 distinct nonempty non-singleton Tuples better (24 LLVM lines w/ switch vs. 4 kB allocs) 2 times less (120 ns vs. 240 ns) 2 times more (121 ms vs. 54 ms) 4 times more (15 MB vs. 3 MB)
unrolled_in(nothing, itr) nothing in itr Tuple 1 empty singleton Tuple similar (optimized out) similar (49 ns vs. 40 ns) similar (30 ms vs. 27 ms) 2 times more (131 kB vs. 48 kB)
unrolled_in(nothing, itr) nothing in itr Tuple 1 nonempty singleton Tuple similar (optimized out) similar (49 ns vs. 40 ns) similar (30 ms vs. 27 ms) similar (161 kB vs. 163 kB)
unrolled_in(nothing, itr) nothing in itr Tuple 1 nonempty non-singleton Tuple similar (optimized out) similar (49 ns vs. 40 ns) similar (26 ms vs. 24 ms) similar (137 kB vs. 193 kB)
unrolled_in(nothing, itr) nothing in itr Tuple 2 identical nonempty singleton Tuples similar (optimized out) similar (41 ns vs. 49 ns) similar (30 ms vs. 30 ms) similar (165 kB vs. 282 kB)
unrolled_in(nothing, itr) nothing in itr Tuple 4 identical nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (48 ms vs. 30 ms) similar (227 kB vs. 282 kB)
unrolled_in(nothing, itr) nothing in itr Tuple 8 identical nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (49 ms vs. 31 ms) similar (253 kB vs. 282 kB)
unrolled_in(nothing, itr) nothing in itr Tuple 32 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (51 ms vs. 30 ms) similar (404 kB vs. 282 kB)
unrolled_in(nothing, itr) nothing in itr Tuple 128 identical nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (59 ms vs. 30 ms) 3 times more (1010 kB vs. 282 kB)
unrolled_in(nothing, itr) nothing in itr Tuple 2 identical nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (29 ms vs. 28 ms) 2 times less (146 kB vs. 325 kB)
unrolled_in(nothing, itr) nothing in itr Tuple 4 identical nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (44 ms vs. 28 ms) similar (241 kB vs. 350 kB)
unrolled_in(nothing, itr) nothing in itr Tuple 8 identical nonempty non-singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (43 ms vs. 28 ms) similar (347 kB vs. 350 kB)
unrolled_in(nothing, itr) nothing in itr Tuple 32 identical nonempty non-singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (47 ms vs. 29 ms) similar (532 kB vs. 350 kB)
unrolled_in(nothing, itr) nothing in itr Tuple 128 identical nonempty non-singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (55 ms vs. 28 ms) 4 times more (1 MB vs. 350 kB)
unrolled_in(nothing, itr) nothing in itr Tuple 2 distinct empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (33 ms vs. 34 ms) similar (192 kB vs. 313 kB)
unrolled_in(nothing, itr) nothing in itr Tuple 4 distinct empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (57 ms vs. 40 ms) similar (311 kB vs. 338 kB)
unrolled_in(nothing, itr) nothing in itr Tuple 8 distinct empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (65 ms vs. 33 ms) similar (418 kB vs. 338 kB)
unrolled_in(nothing, itr) nothing in itr Tuple 32 distinct empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (66 ms vs. 34 ms) similar (569 kB vs. 338 kB)
unrolled_in(nothing, itr) nothing in itr Tuple 128 distinct empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) 2 times more (75 ms vs. 34 ms) 3 times more (1 MB vs. 338 kB)
unrolled_in(nothing, itr) nothing in itr Tuple 2 distinct nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (33 ms vs. 33 ms) similar (192 kB vs. 313 kB)
unrolled_in(nothing, itr) nothing in itr Tuple 4 distinct nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (57 ms vs. 33 ms) similar (310 kB vs. 338 kB)
unrolled_in(nothing, itr) nothing in itr Tuple 8 distinct nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (65 ms vs. 34 ms) similar (418 kB vs. 338 kB)
unrolled_in(nothing, itr) nothing in itr Tuple 32 distinct nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (67 ms vs. 34 ms) similar (569 kB vs. 338 kB)
unrolled_in(nothing, itr) nothing in itr Tuple 128 distinct nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) 2 times more (75 ms vs. 35 ms) 3 times more (1 MB vs. 338 kB)
unrolled_in(nothing, itr) nothing in itr Tuple 2 distinct nonempty non-singleton Tuples better (optimized out vs. 64 B allocs) 2 times less (40 ns vs. 80 ns) similar (24 ms vs. 29 ms) similar (197 kB vs. 379 kB)
unrolled_in(nothing, itr) nothing in itr Tuple 4 distinct nonempty non-singleton Tuples better (optimized out vs. 400 B allocs) 3 times less (40 ns vs. 130 ns) similar (43 ms vs. 30 ms) similar (322 kB vs. 406 kB)
unrolled_in(nothing, itr) nothing in itr Tuple 8 distinct nonempty non-singleton Tuples better (optimized out vs. 2 kB allocs) 5 times less (49 ns vs. 250 ns) similar (43 ms vs. 32 ms) similar (444 kB vs. 407 kB)
unrolled_in(nothing, itr) nothing in itr Tuple 32 distinct nonempty non-singleton Tuples better (optimized out vs. 32 kB allocs) 52 times less (40 ns vs. 2 μs) similar (47 ms vs. 36 ms) similar (693 kB vs. 437 kB)
unrolled_in(nothing, itr) nothing in itr Tuple 128 distinct nonempty non-singleton Tuples better (optimized out vs. 521 kB allocs) 697 times less (49 ns vs. 34 μs) similar (55 ms vs. 31 ms) similar (2 MB vs. 927 kB)
unrolled_in(itr[1], itr) itr[1] in itr Tuple 1 empty singleton Tuple similar (optimized out) similar (49 ns vs. 49 ns) similar (31 ms vs. 24 ms) 4 times more (136 kB vs. 33 kB)
unrolled_in(itr[1], itr) itr[1] in itr Tuple 1 nonempty singleton Tuple similar (optimized out) similar (49 ns vs. 49 ns) similar (30 ms vs. 30 ms) similar (165 kB vs. 252 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 (29 ms vs. 28 ms) similar (287 kB vs. 259 kB)
unrolled_in(itr[1], itr) itr[1] in itr Tuple 2 identical nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (31 ms vs. 30 ms) similar (167 kB vs. 252 kB)
unrolled_in(itr[1], itr) itr[1] in itr Tuple 4 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (50 ms vs. 30 ms) similar (224 kB vs. 252 kB)
unrolled_in(itr[1], itr) itr[1] in itr Tuple 8 identical nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (54 ms vs. 30 ms) similar (239 kB vs. 252 kB)
unrolled_in(itr[1], itr) itr[1] in itr Tuple 32 identical nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (52 ms vs. 30 ms) similar (326 kB vs. 252 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 (59 ms vs. 31 ms) 2 times more (676 kB vs. 252 kB)
unrolled_in(itr[1], itr) itr[1] in itr Tuple 2 identical nonempty non-singleton Tuples similar (6 LLVM lines) similar (49 ns vs. 49 ns) similar (29 ms vs. 30 ms) similar (332 kB vs. 334 kB)
unrolled_in(itr[1], itr) itr[1] in itr Tuple 4 identical nonempty non-singleton Tuples similar (6 LLVM lines) similar (49 ns vs. 49 ns) similar (49 ms vs. 31 ms) similar (479 kB vs. 359 kB)
unrolled_in(itr[1], itr) itr[1] in itr Tuple 8 identical nonempty non-singleton Tuples similar (6 LLVM lines) similar (49 ns vs. 49 ns) similar (54 ms vs. 31 ms) similar (704 kB vs. 359 kB)
unrolled_in(itr[1], itr) itr[1] in itr Tuple 32 identical nonempty non-singleton Tuples similar (6 LLVM lines) similar (49 ns vs. 40 ns) similar (55 ms vs. 36 ms) 4 times more (2 MB vs. 359 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. 40 ns) 2 times more (82 ms vs. 40 ms) 15 times more (5 MB vs. 359 kB)
unrolled_in(itr[1], itr) itr[1] in itr Tuple 2 distinct empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (31 ms vs. 25 ms) similar (167 kB vs. 148 kB)
unrolled_in(itr[1], itr) itr[1] in itr Tuple 4 distinct empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (49 ms vs. 25 ms) similar (225 kB vs. 149 kB)
unrolled_in(itr[1], itr) itr[1] in itr Tuple 8 distinct empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (49 ms vs. 25 ms) similar (240 kB vs. 149 kB)
unrolled_in(itr[1], itr) itr[1] in itr Tuple 32 distinct empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) 2 times more (53 ms vs. 25 ms) 2 times more (327 kB vs. 149 kB)
unrolled_in(itr[1], itr) itr[1] in itr Tuple 128 distinct empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) 2 times more (60 ms vs. 25 ms) 4 times more (676 kB vs. 149 kB)
unrolled_in(itr[1], itr) itr[1] in itr Tuple 2 distinct nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (31 ms vs. 30 ms) similar (167 kB vs. 252 kB)
unrolled_in(itr[1], itr) itr[1] in itr Tuple 4 distinct nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (49 ms vs. 30 ms) similar (225 kB vs. 253 kB)
unrolled_in(itr[1], itr) itr[1] in itr Tuple 8 distinct nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (50 ms vs. 30 ms) similar (240 kB vs. 253 kB)
unrolled_in(itr[1], itr) itr[1] in itr Tuple 32 distinct nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (51 ms vs. 34 ms) similar (327 kB vs. 253 kB)
unrolled_in(itr[1], itr) itr[1] in itr Tuple 128 distinct nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (60 ms vs. 30 ms) 2 times more (676 kB vs. 253 kB)
unrolled_in(itr[1], itr) itr[1] in itr Tuple 2 distinct nonempty non-singleton Tuples similar (6 LLVM lines) similar (40 ns vs. 49 ns) similar (28 ms vs. 32 ms) similar (372 kB vs. 389 kB)
unrolled_in(itr[1], itr) itr[1] in itr Tuple 4 distinct nonempty non-singleton Tuples better (6 LLVM lines vs. 32 B allocs) similar (49 ns vs. 69 ns) similar (48 ms vs. 38 ms) similar (523 kB vs. 567 kB)
unrolled_in(itr[1], itr) itr[1] in itr Tuple 8 distinct nonempty non-singleton Tuples better (6 LLVM lines vs. 32 B allocs) similar (49 ns vs. 69 ns) similar (48 ms vs. 37 ms) similar (700 kB vs. 567 kB)
unrolled_in(itr[1], itr) itr[1] in itr Tuple 32 distinct nonempty non-singleton Tuples better (6 LLVM lines vs. 32 B allocs) similar (49 ns vs. 80 ns) similar (52 ms vs. 37 ms) similar (1 MB vs. 567 kB)
unrolled_in(itr[1], itr) itr[1] in itr Tuple 128 distinct nonempty non-singleton Tuples better (6 LLVM lines vs. 32 B allocs) 2 times less (40 ns vs. 80 ns) similar (65 ms vs. 37 ms) 5 times more (3 MB vs. 567 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 (31 ms vs. 25 ms) 4 times more (136 kB vs. 33 kB)
unrolled_in(itr[end], itr) itr[end] in itr Tuple 1 nonempty singleton Tuple similar (optimized out) similar (49 ns vs. 49 ns) similar (31 ms vs. 31 ms) similar (165 kB vs. 252 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 (29 ms vs. 29 ms) similar (287 kB vs. 259 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 (31 ms vs. 30 ms) similar (167 kB vs. 252 kB)
unrolled_in(itr[end], itr) itr[end] in itr Tuple 4 identical nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (50 ms vs. 31 ms) similar (224 kB vs. 252 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 (50 ms vs. 30 ms) similar (239 kB vs. 252 kB)
unrolled_in(itr[end], itr) itr[end] in itr Tuple 32 identical nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (53 ms vs. 31 ms) similar (326 kB vs. 252 kB)
unrolled_in(itr[end], itr) itr[end] in itr Tuple 128 identical nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) 2 times more (62 ms vs. 30 ms) 2 times more (676 kB vs. 252 kB)
unrolled_in(itr[end], itr) itr[end] in itr Tuple 2 identical nonempty non-singleton Tuples similar (6 LLVM lines) similar (40 ns vs. 49 ns) similar (29 ms vs. 30 ms) similar (332 kB vs. 334 kB)
unrolled_in(itr[end], itr) itr[end] in itr Tuple 4 identical nonempty non-singleton Tuples similar (6 LLVM lines) similar (40 ns vs. 49 ns) similar (50 ms vs. 32 ms) similar (479 kB vs. 359 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. 40 ns) similar (50 ms vs. 32 ms) similar (704 kB vs. 359 kB)
unrolled_in(itr[end], itr) itr[end] in itr Tuple 32 identical nonempty non-singleton Tuples similar (6 LLVM lines) similar (49 ns vs. 40 ns) similar (56 ms vs. 37 ms) 4 times more (2 MB vs. 359 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. 49 ns) 2 times more (83 ms vs. 41 ms) 15 times more (5 MB vs. 359 kB)
unrolled_in(itr[end], itr) itr[end] in itr Tuple 2 distinct empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (34 ms vs. 35 ms) 2 times less (197 kB vs. 413 kB)
unrolled_in(itr[end], itr) itr[end] in itr Tuple 4 distinct empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (58 ms vs. 44 ms) 3 times less (315 kB vs. 1 MB)
unrolled_in(itr[end], itr) itr[end] in itr Tuple 8 distinct empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (49 ms vs. 25 ms) similar (240 kB vs. 149 kB)
unrolled_in(itr[end], itr) itr[end] in itr Tuple 32 distinct empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (62 ms vs. 46 ms) 2 times less (417 kB vs. 1 MB)
unrolled_in(itr[end], itr) itr[end] in itr Tuple 128 distinct empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (64 ms vs. 39 ms) similar (706 kB vs. 697 kB)
unrolled_in(itr[end], itr) itr[end] in itr Tuple 2 distinct nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (35 ms vs. 38 ms) similar (261 kB vs. 503 kB)
unrolled_in(itr[end], itr) itr[end] in itr Tuple 4 distinct nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (57 ms vs. 47 ms) 4 times less (315 kB vs. 1 MB)
unrolled_in(itr[end], itr) itr[end] in itr Tuple 8 distinct nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (52 ms vs. 31 ms) similar (240 kB vs. 253 kB)
unrolled_in(itr[end], itr) itr[end] in itr Tuple 32 distinct nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (60 ms vs. 47 ms) 3 times less (417 kB vs. 1 MB)
unrolled_in(itr[end], itr) itr[end] in itr Tuple 128 distinct nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (63 ms vs. 42 ms) similar (770 kB vs. 892 kB)
unrolled_in(itr[end], itr) itr[end] in itr Tuple 2 distinct nonempty non-singleton Tuples better (6 LLVM lines vs. 64 B allocs) 2 times less (40 ns vs. 80 ns) similar (33 ms vs. 33 ms) similar (357 kB vs. 407 kB)
unrolled_in(itr[end], itr) itr[end] in itr Tuple 4 distinct nonempty non-singleton Tuples better (6 LLVM lines vs. 608 B allocs) 4 times less (49 ns vs. 220 ns) similar (49 ms vs. 42 ms) 2 times less (509 kB vs. 1 MB)
unrolled_in(itr[end], itr) itr[end] in itr Tuple 8 distinct nonempty non-singleton Tuples better (6 LLVM lines vs. 32 B allocs) similar (49 ns vs. 70 ns) similar (49 ms vs. 37 ms) similar (700 kB vs. 567 kB)
unrolled_in(itr[end], itr) itr[end] in itr Tuple 32 distinct nonempty non-singleton Tuples better (6 LLVM lines vs. 3 kB allocs) 5 times less (49 ns vs. 260 ns) similar (54 ms vs. 46 ms) similar (1 MB vs. 1 MB)
unrolled_in(itr[end], itr) itr[end] in itr Tuple 128 distinct nonempty non-singleton Tuples better (6 LLVM lines vs. 4 kB allocs) 5 times less (49 ns vs. 290 ns) similar (68 ms vs. 38 ms) 4 times more (3 MB vs. 670 kB)
unrolled_unique(length, itr) Tuple(unique(length, itr)) Tuple 1 empty singleton Tuple better (optimized out vs. 384 B allocs) 4 times less (49 ns vs. 230 ns) 2 times less (31 ms vs. 85 ms) 12 times less (382 kB vs. 5 MB)
unrolled_unique(length, itr) Tuple(unique(length, itr)) Tuple 1 nonempty singleton Tuple better (optimized out vs. 384 B allocs) 4 times less (49 ns vs. 230 ns) 2 times less (31 ms vs. 86 ms) 11 times less (415 kB 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) 5 times less (49 ns vs. 280 ns) 2 times less (32 ms vs. 83 ms) 7 times less (642 kB 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 (40 ns vs. 230 ns) 2 times less (41 ms vs. 88 ms) 4 times less (1 MB vs. 5 MB)
unrolled_unique(length, itr) Tuple(unique(length, itr)) Tuple 4 identical nonempty singleton Tuples better (optimized out vs. 384 B allocs) 4 times less (49 ns vs. 240 ns) similar (66 ms vs. 86 ms) similar (3 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) 5 times less (49 ns vs. 260 ns) similar (64 ms vs. 85 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) 7 times less (40 ns vs. 310 ns) similar (67 ms vs. 87 ms) similar (3 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) 13 times less (40 ns vs. 521 ns) similar (73 ms vs. 91 ms) similar (4 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) 4 times less (60 ns vs. 290 ns) 2 times less (37 ms vs. 84 ms) 3 times less (1 MB vs. 5 MB)
unrolled_unique(length, itr) Tuple(unique(length, itr)) Tuple 4 identical nonempty non-singleton Tuples better (8 LLVM lines vs. 480 B allocs) 5 times less (49 ns vs. 290 ns) similar (63 ms vs. 86 ms) similar (3 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) 5 times less (60 ns vs. 310 ns) similar (62 ms vs. 85 ms) similar (4 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. 350 ns) similar (64 ms vs. 84 ms) similar (5 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) similar (76 ms vs. 84 ms) similar (9 MB vs. 5 MB)
unrolled_unique(length, itr) Tuple(unique(length, itr)) Tuple 2 distinct empty & nonempty singleton Tuples better (optimized out vs. 448 B allocs) 5 times less (49 ns vs. 270 ns) 2 times less (44 ms vs. 102 ms) 3 times less (1 MB vs. 4 MB)
unrolled_unique(length, itr) Tuple(unique(length, itr)) Tuple 4 distinct empty & nonempty singleton Tuples better (optimized out vs. 448 B allocs) 8 times less (40 ns vs. 341 ns) similar (77 ms vs. 97 ms) similar (5 MB vs. 4 MB)
unrolled_unique(length, itr) Tuple(unique(length, itr)) Tuple 8 distinct empty & nonempty singleton Tuples better (optimized out vs. 448 B allocs) 11 times less (40 ns vs. 461 ns) similar (154 ms vs. 103 ms) 2 times more (9 MB vs. 4 MB)
unrolled_unique(length, itr) Tuple(unique(length, itr)) Tuple 32 distinct empty & nonempty singleton Tuples better (optimized out vs. 448 B allocs) 19 times less (40 ns vs. 791 ns) similar (186 ms vs. 96 ms) 2 times more (13 MB vs. 4 MB)
unrolled_unique(length, itr) Tuple(unique(length, itr)) Tuple 128 distinct empty & nonempty singleton Tuples better (optimized out vs. 448 B allocs) 51 times less (40 ns vs. 2 μs) similar (189 ms vs. 98 ms) 3 times more (14 MB vs. 4 MB)
unrolled_unique(length, itr) Tuple(unique(length, itr)) Tuple 2 distinct nonempty singleton Tuples better (optimized out vs. 448 B allocs) 6 times less (40 ns vs. 270 ns) 2 times less (41 ms vs. 97 ms) 3 times less (1 MB vs. 4 MB)
unrolled_unique(length, itr) Tuple(unique(length, itr)) Tuple 4 distinct nonempty singleton Tuples better (optimized out vs. 448 B allocs) 10 times less (40 ns vs. 410 ns) similar (79 ms vs. 112 ms) similar (5 MB vs. 6 MB)
unrolled_unique(length, itr) Tuple(unique(length, itr)) Tuple 8 distinct nonempty singleton Tuples better (optimized out vs. 448 B allocs) 27 times less (49 ns vs. 1 μs) similar (139 ms vs. 138 ms) similar (9 MB vs. 7 MB)
unrolled_unique(length, itr) Tuple(unique(length, itr)) Tuple 32 distinct nonempty singleton Tuples better (optimized out vs. 448 B allocs) 41 times less (40 ns vs. 2 μs) similar (187 ms vs. 131 ms) similar (13 MB vs. 7 MB)
unrolled_unique(length, itr) Tuple(unique(length, itr)) Tuple 128 distinct nonempty singleton Tuples better (optimized out vs. 448 B allocs) 74 times less (40 ns vs. 3 μs) similar (195 ms vs. 134 ms) 2 times more (14 MB vs. 7 MB)
unrolled_unique(length, itr) Tuple(unique(length, itr)) Tuple 2 distinct nonempty non-singleton Tuples better (11 LLVM lines vs. 592 B allocs) 6 times less (60 ns vs. 360 ns) 2 times less (37 ms vs. 98 ms) 2 times less (2 MB vs. 4 MB)
unrolled_unique(length, itr) Tuple(unique(length, itr)) Tuple 4 distinct nonempty non-singleton Tuples better (17 LLVM lines vs. 1 kB allocs) 10 times less (50 ns vs. 521 ns) similar (71 ms vs. 114 ms) similar (5 MB vs. 6 MB)
unrolled_unique(length, itr) Tuple(unique(length, itr)) Tuple 8 distinct nonempty non-singleton Tuples better (26 LLVM lines vs. 3 kB allocs) 25 times less (69 ns vs. 2 μs) similar (105 ms vs. 140 ms) similar (11 MB vs. 6 MB)
unrolled_unique(length, itr) Tuple(unique(length, itr)) Tuple 32 distinct nonempty non-singleton Tuples better (26 LLVM lines vs. 33 kB allocs) 59 times less (60 ns vs. 4 μs) similar (118 ms vs. 138 ms) 2 times more (18 MB vs. 7 MB)
unrolled_unique(length, itr) Tuple(unique(length, itr)) Tuple 128 distinct nonempty non-singleton Tuples better (26 LLVM lines vs. 522 kB allocs) 631 times less (60 ns vs. 38 μs) similar (143 ms vs. 143 ms) 4 times more (29 MB vs. 7 MB)
unrolled_unique(itr) Tuple(unique(itr)) Tuple 1 empty singleton Tuple better (optimized out vs. 256 B allocs) 4 times less (49 ns vs. 210 ns) 4 times less (27 ms vs. 111 ms) 35 times less (207 kB vs. 7 MB)
unrolled_unique(itr) Tuple(unique(itr)) Tuple 1 nonempty singleton Tuple better (optimized out vs. 256 B allocs) 4 times less (49 ns vs. 220 ns) 4 times less (27 ms vs. 116 ms) 32 times less (236 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 (50 ns vs. 270 ns) 4 times less (29 ms vs. 129 ms) 16 times less (474 kB 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) 3 times less (34 ms vs. 120 ms) 20 times less (388 kB vs. 8 MB)
unrolled_unique(itr) Tuple(unique(itr)) Tuple 4 identical nonempty singleton Tuples better (optimized out vs. 256 B allocs) 4 times less (49 ns vs. 231 ns) similar (59 ms vs. 119 ms) 3 times less (2 MB vs. 8 MB)
unrolled_unique(itr) Tuple(unique(itr)) Tuple 8 identical nonempty singleton Tuples better (optimized out vs. 256 B allocs) 6 times less (40 ns vs. 240 ns) 2 times less (58 ms vs. 119 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) 7 times less (40 ns vs. 310 ns) 2 times less (62 ms vs. 138 ms) 3 times less (2 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 (65 ms vs. 119 ms) 2 times less (3 MB vs. 8 MB)
unrolled_unique(itr) Tuple(unique(itr)) Tuple 2 identical nonempty non-singleton Tuples better (25 LLVM lines vs. 480 B allocs) 4 times less (60 ns vs. 271 ns) 4 times less (30 ms vs. 128 ms) 8 times less (929 kB vs. 8 MB)
unrolled_unique(itr) Tuple(unique(itr)) Tuple 4 identical nonempty non-singleton Tuples better (120 LLVM lines vs. 480 B allocs) 4 times less (60 ns vs. 290 ns) 2 times less (62 ms vs. 127 ms) similar (4 MB vs. 8 MB)
unrolled_unique(itr) Tuple(unique(itr)) Tuple 8 identical nonempty non-singleton Tuples fewer allocs (80 B allocs vs. 480 B allocs) similar (430 ns vs. 310 ns) similar (80 ms vs. 126 ms) similar (5 MB vs. 8 MB)
unrolled_unique(itr) Tuple(unique(itr)) Tuple 32 identical nonempty non-singleton Tuples fewer allocs (464 B allocs vs. 480 B allocs) 6 times more (3 μs vs. 430 ns) similar (157 ms vs. 130 ms) similar (6 MB vs. 8 MB)
unrolled_unique(itr) Tuple(unique(itr)) Tuple 128 identical nonempty non-singleton Tuples worse (2 kB allocs vs. 480 B allocs) 13 times more (13 μs vs. 942 ns) 3 times more (475 ms vs. 130 ms) similar (12 MB vs. 8 MB)
unrolled_unique(itr) Tuple(unique(itr)) Tuple 2 distinct empty & nonempty singleton Tuples better (optimized out vs. 448 B allocs) 6 times less (40 ns vs. 260 ns) 5 times less (35 ms vs. 181 ms) 25 times less (422 kB vs. 10 MB)
unrolled_unique(itr) Tuple(unique(itr)) Tuple 4 distinct empty & nonempty singleton Tuples better (optimized out vs. 512 B allocs) 11 times less (40 ns vs. 451 ns) 3 times less (79 ms vs. 259 ms) 6 times less (3 MB vs. 18 MB)
unrolled_unique(itr) Tuple(unique(itr)) Tuple 8 distinct empty & nonempty singleton Tuples better (optimized out vs. 576 B allocs) 27 times less (40 ns vs. 1 μs) 2 times less (154 ms vs. 380 ms) 7 times less (4 MB vs. 29 MB)
unrolled_unique(itr) Tuple(unique(itr)) Tuple 32 distinct empty & nonempty singleton Tuples better (optimized out vs. 960 B allocs) 66 times less (49 ns vs. 3 μs) 2 times less (180 ms vs. 379 ms) 6 times less (5 MB vs. 29 MB)
unrolled_unique(itr) Tuple(unique(itr)) Tuple 128 distinct empty & nonempty singleton Tuples better (optimized out vs. 2 kB allocs) 311 times less (40 ns vs. 12 μs) 2 times less (186 ms vs. 384 ms) 5 times less (5 MB vs. 29 MB)
unrolled_unique(itr) Tuple(unique(itr)) Tuple 2 distinct nonempty singleton Tuples better (optimized out vs. 448 B allocs) 7 times less (40 ns vs. 280 ns) 5 times less (34 ms vs. 184 ms) 23 times less (516 kB vs. 12 MB)
unrolled_unique(itr) Tuple(unique(itr)) Tuple 4 distinct nonempty singleton Tuples better (optimized out vs. 512 B allocs) 10 times less (49 ns vs. 510 ns) 3 times less (80 ms vs. 295 ms) 8 times less (3 MB vs. 22 MB)
unrolled_unique(itr) Tuple(unique(itr)) Tuple 8 distinct nonempty singleton Tuples better (optimized out vs. 576 B allocs) 53 times less (49 ns vs. 3 μs) 2 times less (160 ms vs. 466 ms) 8 times less (4 MB vs. 35 MB)
unrolled_unique(itr) Tuple(unique(itr)) Tuple 32 distinct nonempty singleton Tuples better (optimized out vs. 960 B allocs) 153 times less (40 ns vs. 6 μs) 2 times less (177 ms vs. 447 ms) 7 times less (5 MB vs. 35 MB)
unrolled_unique(itr) Tuple(unique(itr)) Tuple 128 distinct nonempty singleton Tuples better (optimized out vs. 2 kB allocs) 524 times less (40 ns vs. 21 μs) 2 times less (184 ms vs. 447 ms) 6 times less (5 MB vs. 35 MB)
unrolled_unique(itr) Tuple(unique(itr)) Tuple 2 distinct nonempty non-singleton Tuples better (11 LLVM lines vs. 640 B allocs) 6 times less (60 ns vs. 360 ns) 5 times less (31 ms vs. 183 ms) 12 times less (867 kB vs. 11 MB)
unrolled_unique(itr) Tuple(unique(itr)) Tuple 4 distinct nonempty non-singleton Tuples better (17 LLVM lines vs. 1 kB allocs) 14 times less (49 ns vs. 701 ns) 5 times less (56 ms vs. 316 ms) 5 times less (4 MB vs. 20 MB)
unrolled_unique(itr) Tuple(unique(itr)) Tuple 8 distinct nonempty non-singleton Tuples better (39 LLVM lines vs. 3 kB allocs) 52 times less (60 ns vs. 3 μs) 5 times less (94 ms vs. 502 ms) 5 times less (6 MB vs. 33 MB)
unrolled_unique(itr) Tuple(unique(itr)) Tuple 32 distinct nonempty non-singleton Tuples fewer allocs (1 kB allocs vs. 34 kB allocs) 3 times less (3 μs vs. 8 μs) 2 times less (204 ms vs. 493 ms) 2 times less (12 MB vs. 33 MB)
unrolled_unique(itr) Tuple(unique(itr)) Tuple 128 distinct nonempty non-singleton Tuples fewer allocs (5 kB allocs vs. 525 kB allocs) 4 times less (14 μs vs. 61 μs) similar (537 ms vs. 498 ms) similar (18 MB vs. 33 MB)
unrolled_allunique(length, itr) allunique(length, itr) Tuple 1 empty singleton Tuple similar (optimized out) similar (49 ns vs. 49 ns) similar (31 ms vs. 24 ms) 26 times more (392 kB vs. 15 kB)
unrolled_allunique(length, itr) allunique(length, itr) Tuple 1 nonempty singleton Tuple similar (optimized out) similar (49 ns vs. 40 ns) similar (31 ms vs. 24 ms) 22 times more (426 kB vs. 19 kB)
unrolled_allunique(length, itr) allunique(length, itr) Tuple 1 nonempty non-singleton Tuple similar (optimized out) similar (40 ns vs. 49 ns) similar (29 ms vs. 24 ms) 33 times more (653 kB 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 (40 ms vs. 29 ms) similar (1 MB vs. 999 kB)
unrolled_allunique(length, itr) allunique(length, itr) Tuple 4 identical nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (64 ms vs. 33 ms) similar (3 MB vs. 3 MB)
unrolled_allunique(length, itr) allunique(length, itr) Tuple 8 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (65 ms vs. 45 ms) 2 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) 3 times less (40 ns vs. 120 ns) similar (68 ms vs. 57 ms) similar (3 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) similar (73 ms vs. 57 ms) similar (4 MB vs. 2 MB)
unrolled_allunique(length, itr) allunique(length, itr) Tuple 2 identical nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (34 ms vs. 28 ms) similar (1 MB vs. 977 kB)
unrolled_allunique(length, itr) allunique(length, itr) Tuple 4 identical nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (58 ms vs. 33 ms) similar (3 MB vs. 3 MB)
unrolled_allunique(length, itr) allunique(length, itr) Tuple 8 identical nonempty non-singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (62 ms vs. 45 ms) 2 times less (4 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 (61 ms vs. 50 ms) 2 times more (5 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. 140 ns) similar (73 ms vs. 49 ms) 4 times more (9 MB vs. 2 MB)
unrolled_allunique(length, itr) allunique(length, itr) Tuple 2 distinct empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (42 ms vs. 28 ms) similar (1 MB vs. 999 kB)
unrolled_allunique(length, itr) allunique(length, itr) Tuple 4 distinct empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) 2 times more (80 ms vs. 33 ms) similar (5 MB vs. 3 MB)
unrolled_allunique(length, itr) allunique(length, itr) Tuple 8 distinct empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) 3 times more (134 ms vs. 44 ms) similar (9 MB vs. 9 MB)
unrolled_allunique(length, itr) allunique(length, itr) Tuple 32 distinct empty & nonempty singleton Tuples better (optimized out vs. 320 B allocs) 5 times less (49 ns vs. 251 ns) 3 times more (185 ms vs. 60 ms) 6 times more (13 MB vs. 2 MB)
unrolled_allunique(length, itr) allunique(length, itr) Tuple 128 distinct empty & nonempty singleton Tuples better (optimized out vs. 320 B allocs) 6 times less (40 ns vs. 240 ns) 3 times more (192 ms vs. 58 ms) 6 times more (14 MB vs. 2 MB)
unrolled_allunique(length, itr) allunique(length, itr) Tuple 2 distinct nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (47 ms vs. 29 ms) similar (1 MB vs. 1004 kB)
unrolled_allunique(length, itr) allunique(length, itr) Tuple 4 distinct nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) 2 times more (79 ms vs. 33 ms) similar (5 MB vs. 3 MB)
unrolled_allunique(length, itr) allunique(length, itr) Tuple 8 distinct nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) 3 times more (141 ms vs. 46 ms) similar (9 MB vs. 9 MB)
unrolled_allunique(length, itr) allunique(length, itr) Tuple 32 distinct nonempty singleton Tuples better (optimized out vs. 320 B allocs) 6 times less (40 ns vs. 250 ns) 3 times more (187 ms vs. 62 ms) 6 times more (13 MB vs. 2 MB)
unrolled_allunique(length, itr) allunique(length, itr) Tuple 128 distinct nonempty singleton Tuples better (optimized out vs. 320 B allocs) 5 times less (49 ns vs. 250 ns) 3 times more (192 ms vs. 59 ms) 6 times more (14 MB vs. 2 MB)
unrolled_allunique(length, itr) allunique(length, itr) Tuple 2 distinct nonempty non-singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (33 ms vs. 28 ms) similar (2 MB vs. 1003 kB)
unrolled_allunique(length, itr) allunique(length, itr) Tuple 4 distinct nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (63 ms vs. 34 ms) similar (5 MB vs. 3 MB)
unrolled_allunique(length, itr) allunique(length, itr) Tuple 8 distinct nonempty non-singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) 2 times more (95 ms vs. 45 ms) similar (11 MB vs. 9 MB)
unrolled_allunique(length, itr) allunique(length, itr) Tuple 32 distinct nonempty non-singleton Tuples better (optimized out vs. 8 kB allocs) 13 times less (40 ns vs. 541 ns) 2 times more (110 ms vs. 51 ms) 8 times more (18 MB vs. 2 MB)
unrolled_allunique(length, itr) allunique(length, itr) Tuple 128 distinct nonempty non-singleton Tuples better (optimized out vs. 29 kB allocs) 30 times less (49 ns vs. 2 μs) 2 times more (130 ms vs. 51 ms) 13 times more (29 MB vs. 2 MB)
unrolled_allequal(length, itr) allequal(length, itr) Tuple 1 empty singleton Tuple similar (optimized out) similar (40 ns vs. 40 ns) similar (40 ms vs. 24 ms) 15 times more (319 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 (40 ms vs. 24 ms) 13 times more (352 kB vs. 25 kB)
unrolled_allequal(length, itr) allequal(length, itr) Tuple 1 nonempty non-singleton Tuple similar (optimized out) similar (49 ns vs. 40 ns) similar (35 ms vs. 24 ms) 14 times more (366 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 (50 ms vs. 27 ms) 4 times more (852 kB vs. 193 kB)
unrolled_allequal(length, itr) allequal(length, itr) Tuple 4 identical nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (51 ms vs. 30 ms) 3 times more (932 kB vs. 294 kB)
unrolled_allequal(length, itr) allequal(length, itr) Tuple 8 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) 2 times more (82 ms vs. 31 ms) 4 times more (1 MB vs. 295 kB)
unrolled_allequal(length, itr) allequal(length, itr) Tuple 32 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) 3 times more (92 ms vs. 30 ms) 7 times more (2 MB vs. 297 kB)
unrolled_allequal(length, itr) allequal(length, itr) Tuple 128 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) 4 times more (141 ms vs. 31 ms) 20 times more (6 MB vs. 308 kB)
unrolled_allequal(length, itr) allequal(length, itr) Tuple 2 identical nonempty non-singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (36 ms vs. 27 ms) 5 times more (972 kB vs. 186 kB)
unrolled_allequal(length, itr) allequal(length, itr) Tuple 4 identical nonempty non-singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (36 ms vs. 32 ms) 2 times more (1 MB vs. 423 kB)
unrolled_allequal(length, itr) allequal(length, itr) Tuple 8 identical nonempty non-singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) 2 times more (68 ms vs. 32 ms) 3 times more (2 MB vs. 431 kB)
unrolled_allequal(length, itr) allequal(length, itr) Tuple 32 identical nonempty non-singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) 2 times more (70 ms vs. 32 ms) 6 times more (3 MB vs. 491 kB)
unrolled_allequal(length, itr) allequal(length, itr) Tuple 128 identical nonempty non-singleton Tuples better (optimized out vs. 4 kB allocs) 151 times less (40 ns vs. 6 μs) 2 times more (90 ms vs. 35 ms) 21 times more (9 MB vs. 435 kB)
unrolled_allequal(length, itr) allequal(length, itr) Tuple 2 distinct empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (50 ms vs. 27 ms) 4 times more (849 kB vs. 190 kB)
unrolled_allequal(length, itr) allequal(length, itr) Tuple 4 distinct empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (52 ms vs. 31 ms) 5 times more (1 MB vs. 192 kB)
unrolled_allequal(length, itr) allequal(length, itr) Tuple 8 distinct empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) 3 times more (84 ms vs. 28 ms) 8 times more (2 MB vs. 193 kB)
unrolled_allequal(length, itr) allequal(length, itr) Tuple 32 distinct empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) 3 times more (90 ms vs. 27 ms) 13 times more (3 MB vs. 196 kB)
unrolled_allequal(length, itr) allequal(length, itr) Tuple 128 distinct empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) 4 times more (131 ms vs. 27 ms) 33 times more (7 MB vs. 206 kB)
unrolled_allequal(length, itr) allequal(length, itr) Tuple 2 distinct nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (51 ms vs. 27 ms) 4 times more (854 kB vs. 195 kB)
unrolled_allequal(length, itr) allequal(length, itr) Tuple 4 distinct nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (52 ms vs. 27 ms) 5 times more (1 MB vs. 196 kB)
unrolled_allequal(length, itr) allequal(length, itr) Tuple 8 distinct nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) 2 times more (85 ms vs. 34 ms) 8 times more (2 MB vs. 197 kB)
unrolled_allequal(length, itr) allequal(length, itr) Tuple 32 distinct nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) 3 times more (90 ms vs. 28 ms) 13 times more (3 MB vs. 200 kB)
unrolled_allequal(length, itr) allequal(length, itr) Tuple 128 distinct nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) 4 times more (134 ms vs. 27 ms) 32 times more (7 MB vs. 211 kB)
unrolled_allequal(length, itr) allequal(length, itr) Tuple 2 distinct nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (35 ms vs. 27 ms) 3 times more (998 kB vs. 254 kB)
unrolled_allequal(length, itr) allequal(length, itr) Tuple 4 distinct nonempty non-singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (36 ms vs. 28 ms) 4 times more (1 MB vs. 285 kB)
unrolled_allequal(length, itr) allequal(length, itr) Tuple 8 distinct nonempty non-singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) 2 times more (66 ms vs. 27 ms) 6 times more (2 MB vs. 290 kB)
unrolled_allequal(length, itr) allequal(length, itr) Tuple 32 distinct nonempty non-singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) 2 times more (75 ms vs. 27 ms) 10 times more (4 MB vs. 329 kB)
unrolled_allequal(length, itr) allequal(length, itr) Tuple 128 distinct nonempty non-singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) 3 times more (88 ms vs. 27 ms) 35 times more (10 MB vs. 281 kB)
unrolled_sum(length, itr) sum(length, itr) Tuple 1 empty singleton Tuple similar (optimized out) similar (49 ns vs. 49 ns) similar (35 ms vs. 64 ms) 5 times less (361 kB vs. 2 MB)
unrolled_sum(length, itr) sum(length, itr) Tuple 1 nonempty singleton Tuple similar (optimized out) similar (40 ns vs. 40 ns) similar (35 ms vs. 63 ms) 5 times less (395 kB vs. 2 MB)
unrolled_sum(length, itr) sum(length, itr) Tuple 1 nonempty non-singleton Tuple similar (optimized out) similar (40 ns vs. 40 ns) similar (27 ms vs. 39 ms) 5 times less (427 kB vs. 2 MB)
unrolled_sum(length, itr) sum(length, itr) Tuple 2 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (36 ms vs. 66 ms) 5 times less (418 kB vs. 2 MB)
unrolled_sum(length, itr) sum(length, itr) Tuple 4 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (82 ms vs. 67 ms) similar (2 MB vs. 2 MB)
unrolled_sum(length, itr) sum(length, itr) Tuple 8 identical nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (78 ms vs. 66 ms) similar (2 MB vs. 2 MB)
unrolled_sum(length, itr) sum(length, itr) Tuple 32 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (82 ms vs. 67 ms) similar (3 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 (40 ns vs. 49 ns) similar (104 ms vs. 71 ms) 2 times more (6 MB vs. 2 MB)
unrolled_sum(length, itr) sum(length, itr) Tuple 2 identical nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (28 ms vs. 39 ms) 5 times less (454 kB vs. 2 MB)
unrolled_sum(length, itr) sum(length, itr) Tuple 4 identical nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (70 ms vs. 40 ms) similar (2 MB vs. 3 MB)
unrolled_sum(length, itr) sum(length, itr) Tuple 8 identical nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (71 ms vs. 40 ms) similar (3 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 (75 ms vs. 45 ms) similar (3 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. 40 ns) 2 times more (95 ms vs. 43 ms) 2 times more (7 MB vs. 3 MB)
unrolled_sum(length, itr) sum(length, itr) Tuple 2 distinct empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (36 ms vs. 68 ms) 6 times less (418 kB vs. 2 MB)
unrolled_sum(length, itr) sum(length, itr) Tuple 4 distinct empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (76 ms vs. 74 ms) similar (2 MB vs. 3 MB)
unrolled_sum(length, itr) sum(length, itr) Tuple 8 distinct empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (83 ms vs. 86 ms) similar (2 MB vs. 3 MB)
unrolled_sum(length, itr) sum(length, itr) Tuple 32 distinct empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (83 ms vs. 87 ms) similar (3 MB vs. 4 MB)
unrolled_sum(length, itr) sum(length, itr) Tuple 128 distinct empty & nonempty singleton Tuples better (optimized out vs. 26 LLVM lines) 34 times less (40 ns vs. 1 μs) similar (103 ms vs. 75 ms) similar (6 MB vs. 3 MB)
unrolled_sum(length, itr) sum(length, itr) Tuple 2 distinct nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (36 ms vs. 68 ms) 6 times less (422 kB vs. 3 MB)
unrolled_sum(length, itr) sum(length, itr) Tuple 4 distinct nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (76 ms vs. 73 ms) similar (2 MB vs. 3 MB)
unrolled_sum(length, itr) sum(length, itr) Tuple 8 distinct nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (79 ms vs. 85 ms) similar (2 MB vs. 3 MB)
unrolled_sum(length, itr) sum(length, itr) Tuple 32 distinct nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (83 ms vs. 87 ms) similar (3 MB vs. 4 MB)
unrolled_sum(length, itr) sum(length, itr) Tuple 128 distinct nonempty singleton Tuples better (optimized out vs. 26 LLVM lines) 34 times less (40 ns vs. 1 μs) similar (102 ms vs. 75 ms) similar (6 MB vs. 3 MB)
unrolled_sum(length, itr) sum(length, itr) Tuple 2 distinct nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (27 ms vs. 40 ms) 5 times less (479 kB vs. 3 MB)
unrolled_sum(length, itr) sum(length, itr) Tuple 4 distinct nonempty non-singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (71 ms vs. 42 ms) similar (2 MB vs. 3 MB)
unrolled_sum(length, itr) sum(length, itr) Tuple 8 distinct nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (71 ms vs. 42 ms) similar (3 MB vs. 4 MB)
unrolled_sum(length, itr) sum(length, itr) Tuple 32 distinct nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (76 ms vs. 44 ms) similar (3 MB vs. 4 MB)
unrolled_sum(length, itr) sum(length, itr) Tuple 128 distinct nonempty non-singleton Tuples better (optimized out vs. 521 kB allocs) 902 times less (40 ns vs. 36 μs) similar (98 ms vs. 50 ms) similar (7 MB vs. 4 MB)
unrolled_prod(length, itr) prod(length, itr) Tuple 1 empty singleton Tuple similar (optimized out) similar (40 ns vs. 40 ns) 2 times less (35 ms vs. 72 ms) 6 times less (361 kB vs. 2 MB)
unrolled_prod(length, itr) prod(length, itr) Tuple 1 nonempty singleton Tuple similar (optimized out) similar (40 ns vs. 49 ns) 2 times less (35 ms vs. 72 ms) 5 times less (395 kB vs. 2 MB)
unrolled_prod(length, itr) prod(length, itr) Tuple 1 nonempty non-singleton Tuple similar (optimized out) similar (40 ns vs. 49 ns) similar (27 ms vs. 47 ms) 6 times less (427 kB vs. 3 MB)
unrolled_prod(length, itr) prod(length, itr) Tuple 2 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) 2 times less (35 ms vs. 76 ms) 5 times less (418 kB vs. 2 MB)
unrolled_prod(length, itr) prod(length, itr) Tuple 4 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (78 ms vs. 83 ms) similar (2 MB vs. 2 MB)
unrolled_prod(length, itr) prod(length, itr) Tuple 8 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (77 ms vs. 75 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. 49 ns) similar (85 ms vs. 75 ms) similar (3 MB vs. 3 MB)
unrolled_prod(length, itr) prod(length, itr) Tuple 128 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (112 ms vs. 80 ms) 2 times more (6 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. 49 ns) similar (28 ms vs. 48 ms) 6 times less (454 kB vs. 3 MB)
unrolled_prod(length, itr) prod(length, itr) Tuple 4 identical nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (75 ms vs. 49 ms) similar (2 MB vs. 3 MB)
unrolled_prod(length, itr) prod(length, itr) Tuple 8 identical nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (72 ms vs. 48 ms) similar (3 MB vs. 3 MB)
unrolled_prod(length, itr) prod(length, itr) Tuple 32 identical nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (77 ms vs. 50 ms) similar (3 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 (102 ms vs. 52 ms) 2 times more (7 MB vs. 3 MB)
unrolled_prod(length, itr) prod(length, itr) Tuple 2 distinct empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) 2 times less (36 ms vs. 75 ms) 6 times less (418 kB vs. 3 MB)
unrolled_prod(length, itr) prod(length, itr) Tuple 4 distinct empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (76 ms vs. 87 ms) similar (2 MB vs. 3 MB)
unrolled_prod(length, itr) prod(length, itr) Tuple 8 distinct empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (81 ms vs. 95 ms) similar (2 MB vs. 4 MB)
unrolled_prod(length, itr) prod(length, itr) Tuple 32 distinct empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (85 ms vs. 100 ms) similar (3 MB vs. 4 MB)
unrolled_prod(length, itr) prod(length, itr) Tuple 128 distinct empty & nonempty singleton Tuples better (optimized out vs. 17 LLVM lines) 27 times less (49 ns vs. 1 μs) similar (109 ms vs. 84 ms) similar (6 MB vs. 3 MB)
unrolled_prod(length, itr) prod(length, itr) Tuple 2 distinct nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) 2 times less (36 ms vs. 75 ms) 6 times less (422 kB vs. 3 MB)
unrolled_prod(length, itr) prod(length, itr) Tuple 4 distinct nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (76 ms vs. 87 ms) similar (2 MB vs. 3 MB)
unrolled_prod(length, itr) prod(length, itr) Tuple 8 distinct nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (81 ms vs. 95 ms) similar (2 MB vs. 4 MB)
unrolled_prod(length, itr) prod(length, itr) Tuple 32 distinct nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (87 ms vs. 95 ms) similar (3 MB vs. 4 MB)
unrolled_prod(length, itr) prod(length, itr) Tuple 128 distinct nonempty singleton Tuples better (optimized out vs. 26 LLVM lines) 28 times less (49 ns vs. 1 μs) similar (110 ms vs. 86 ms) similar (6 MB vs. 3 MB)
unrolled_prod(length, itr) prod(length, itr) Tuple 2 distinct nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (28 ms vs. 48 ms) 6 times less (479 kB vs. 3 MB)
unrolled_prod(length, itr) prod(length, itr) Tuple 4 distinct nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (71 ms vs. 50 ms) similar (2 MB vs. 4 MB)
unrolled_prod(length, itr) prod(length, itr) Tuple 8 distinct nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (70 ms vs. 51 ms) similar (3 MB vs. 4 MB)
unrolled_prod(length, itr) prod(length, itr) Tuple 32 distinct nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (80 ms vs. 52 ms) similar (3 MB vs. 5 MB)
unrolled_prod(length, itr) prod(length, itr) Tuple 128 distinct nonempty non-singleton Tuples better (optimized out vs. 521 kB allocs) 740 times less (49 ns vs. 36 μs) similar (107 ms vs. 58 ms) similar (7 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) 4 times less (40 ns vs. 180 ns) similar (35 ms vs. 65 ms) 5 times less (512 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. 180 ns) similar (36 ms vs. 65 ms) 5 times less (546 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. 180 ns) similar (28 ms vs. 56 ms) 5 times less (577 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) 5 times less (40 ns vs. 210 ns) similar (36 ms vs. 67 ms) 6 times less (582 kB vs. 4 MB)
unrolled_cumsum(length, itr) Tuple(cumsum(Iterators.map(length, itr))) Tuple 4 identical nonempty singleton Tuples better (7 LLVM lines w/ Const vs. 144 B allocs) 6 times less (40 ns vs. 260 ns) similar (75 ms vs. 68 ms) 4 times less (792 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. 370 ns) similar (77 ms vs. 69 ms) 3 times less (977 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) 26 times less (40 ns vs. 1 μs) similar (84 ms vs. 71 ms) similar (2 MB 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) 47 times less (80 ns vs. 4 μs) 6 times more (430 ms vs. 70 ms) 2 times more (8 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 (29 ms vs. 59 ms) 6 times less (618 kB vs. 4 MB)
unrolled_cumsum(length, itr) Tuple(cumsum(Iterators.map(length, itr))) Tuple 4 identical nonempty non-singleton Tuples better (7 LLVM lines w/ Const vs. 144 B allocs) 5 times less (49 ns vs. 270 ns) similar (67 ms vs. 58 ms) 4 times less (862 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) 9 times less (40 ns vs. 370 ns) similar (69 ms vs. 60 ms) 3 times less (1 MB 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) 21 times less (49 ns vs. 1 μs) similar (78 ms vs. 62 ms) similar (2 MB 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) 46 times less (80 ns vs. 4 μs) 6 times more (424 ms vs. 62 ms) 2 times more (9 MB vs. 4 MB)
unrolled_cumsum(length, itr) Tuple(cumsum(Iterators.map(length, itr))) Tuple 2 distinct empty & nonempty singleton Tuples better (7 LLVM lines w/ Const vs. 112 B allocs) 4 times less (49 ns vs. 220 ns) similar (37 ms vs. 72 ms) 6 times less (582 kB vs. 4 MB)
unrolled_cumsum(length, itr) Tuple(cumsum(Iterators.map(length, itr))) Tuple 4 distinct empty & nonempty singleton Tuples better (7 LLVM lines w/ Const vs. 144 B allocs) 7 times less (40 ns vs. 300 ns) similar (74 ms vs. 69 ms) 4 times less (802 kB vs. 4 MB)
unrolled_cumsum(length, itr) Tuple(cumsum(Iterators.map(length, itr))) Tuple 8 distinct empty & nonempty singleton Tuples better (7 LLVM lines w/ Const vs. 208 B allocs) 9 times less (49 ns vs. 460 ns) similar (76 ms vs. 70 ms) 3 times less (998 kB vs. 4 MB)
unrolled_cumsum(length, itr) Tuple(cumsum(Iterators.map(length, itr))) Tuple 32 distinct empty & nonempty singleton Tuples better (7 LLVM lines w/ Const vs. 592 B allocs) 35 times less (40 ns vs. 1 μs) similar (86 ms vs. 71 ms) similar (2 MB vs. 4 MB)
unrolled_cumsum(length, itr) Tuple(cumsum(Iterators.map(length, itr))) Tuple 128 distinct empty & nonempty singleton Tuples better (69 LLVM lines w/ Const vs. 2 kB allocs) 63 times less (80 ns vs. 5 μs) 6 times more (423 ms vs. 70 ms) 2 times more (8 MB vs. 4 MB)
unrolled_cumsum(length, itr) Tuple(cumsum(Iterators.map(length, itr))) Tuple 2 distinct nonempty singleton Tuples better (7 LLVM lines w/ Const vs. 112 B allocs) 4 times less (49 ns vs. 220 ns) similar (36 ms vs. 72 ms) 6 times less (587 kB vs. 4 MB)
unrolled_cumsum(length, itr) Tuple(cumsum(Iterators.map(length, itr))) Tuple 4 distinct nonempty singleton Tuples better (7 LLVM lines w/ Const vs. 144 B allocs) 7 times less (40 ns vs. 300 ns) similar (74 ms vs. 74 ms) 4 times less (806 kB vs. 4 MB)
unrolled_cumsum(length, itr) Tuple(cumsum(Iterators.map(length, itr))) Tuple 8 distinct nonempty singleton Tuples better (7 LLVM lines w/ Const vs. 208 B allocs) 11 times less (40 ns vs. 460 ns) similar (84 ms vs. 75 ms) 3 times less (1003 kB vs. 4 MB)
unrolled_cumsum(length, itr) Tuple(cumsum(Iterators.map(length, itr))) Tuple 32 distinct nonempty singleton Tuples better (7 LLVM lines w/ Const vs. 592 B allocs) 28 times less (49 ns vs. 1 μs) similar (86 ms vs. 72 ms) similar (2 MB vs. 4 MB)
unrolled_cumsum(length, itr) Tuple(cumsum(Iterators.map(length, itr))) Tuple 128 distinct nonempty singleton Tuples better (69 LLVM lines w/ Const vs. 2 kB allocs) 63 times less (80 ns vs. 5 μs) 5 times more (430 ms vs. 77 ms) 2 times more (8 MB vs. 4 MB)
unrolled_cumsum(length, itr) Tuple(cumsum(Iterators.map(length, itr))) Tuple 2 distinct nonempty non-singleton Tuples better (7 LLVM lines w/ Const vs. 176 B allocs) 6 times less (40 ns vs. 240 ns) similar (38 ms vs. 61 ms) 6 times less (643 kB vs. 4 MB)
unrolled_cumsum(length, itr) Tuple(cumsum(Iterators.map(length, itr))) Tuple 4 distinct nonempty non-singleton Tuples better (7 LLVM lines w/ Const vs. 544 B allocs) 8 times less (40 ns vs. 350 ns) similar (67 ms vs. 62 ms) 4 times less (863 kB vs. 4 MB)
unrolled_cumsum(length, itr) Tuple(cumsum(Iterators.map(length, itr))) Tuple 8 distinct nonempty non-singleton Tuples better (7 LLVM lines w/ Const vs. 2 kB allocs) 12 times less (49 ns vs. 601 ns) similar (68 ms vs. 66 ms) 3 times less (1 MB vs. 4 MB)
unrolled_cumsum(length, itr) Tuple(cumsum(Iterators.map(length, itr))) Tuple 32 distinct nonempty non-singleton Tuples better (7 LLVM lines w/ Const vs. 32 kB allocs) 79 times less (40 ns vs. 3 μs) similar (78 ms vs. 62 ms) similar (2 MB vs. 4 MB)
unrolled_cumsum(length, itr) Tuple(cumsum(Iterators.map(length, itr))) Tuple 128 distinct nonempty non-singleton Tuples better (69 LLVM lines w/ Const vs. 523 kB allocs) 490 times less (80 ns vs. 39 μs) 6 times more (423 ms vs. 63 ms) similar (9 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. 180 ns) similar (39 ms vs. 69 ms) 5 times less (512 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. 180 ns) similar (36 ms vs. 70 ms) 5 times less (546 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 (29 ms vs. 60 ms) 5 times less (577 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) 4 times less (49 ns vs. 200 ns) similar (37 ms vs. 71 ms) 6 times less (582 kB vs. 4 MB)
unrolled_cumprod(length, itr) Tuple(cumprod(Iterators.map(length, itr))) Tuple 4 identical nonempty singleton Tuples better (7 LLVM lines w/ Const vs. 144 B allocs) 5 times less (49 ns vs. 260 ns) similar (74 ms vs. 72 ms) 4 times less (792 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. 370 ns) similar (78 ms vs. 73 ms) 3 times less (977 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 (86 ms vs. 74 ms) 2 times less (2 MB 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) 46 times less (80 ns vs. 4 μs) 5 times more (425 ms vs. 73 ms) 2 times more (8 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) 4 times less (49 ns vs. 200 ns) 2 times less (29 ms vs. 62 ms) 6 times less (618 kB vs. 4 MB)
unrolled_cumprod(length, itr) Tuple(cumprod(Iterators.map(length, itr))) Tuple 4 identical nonempty non-singleton Tuples better (7 LLVM lines w/ Const vs. 144 B allocs) 6 times less (40 ns vs. 271 ns) similar (70 ms vs. 64 ms) 4 times less (862 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) 7 times less (49 ns vs. 370 ns) similar (69 ms vs. 63 ms) 3 times less (1 MB 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) 26 times less (40 ns vs. 1 μs) similar (78 ms vs. 63 ms) similar (2 MB 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) 46 times less (80 ns vs. 4 μs) 6 times more (419 ms vs. 64 ms) 2 times more (9 MB vs. 4 MB)
unrolled_cumprod(length, itr) Tuple(cumprod(Iterators.map(length, itr))) Tuple 2 distinct empty & nonempty singleton Tuples better (7 LLVM lines w/ Const vs. 112 B allocs) 5 times less (40 ns vs. 220 ns) similar (36 ms vs. 72 ms) 6 times less (582 kB vs. 4 MB)
unrolled_cumprod(length, itr) Tuple(cumprod(Iterators.map(length, itr))) Tuple 4 distinct empty & nonempty singleton Tuples better (7 LLVM lines w/ Const vs. 144 B allocs) 7 times less (40 ns vs. 300 ns) similar (73 ms vs. 78 ms) 4 times less (802 kB vs. 4 MB)
unrolled_cumprod(length, itr) Tuple(cumprod(Iterators.map(length, itr))) Tuple 8 distinct empty & nonempty singleton Tuples better (7 LLVM lines w/ Const vs. 208 B allocs) 9 times less (49 ns vs. 461 ns) similar (77 ms vs. 73 ms) 3 times less (998 kB vs. 4 MB)
unrolled_cumprod(length, itr) Tuple(cumprod(Iterators.map(length, itr))) Tuple 32 distinct empty & nonempty singleton Tuples better (7 LLVM lines w/ Const vs. 592 B allocs) 35 times less (40 ns vs. 1 μs) similar (86 ms vs. 74 ms) 2 times less (2 MB vs. 4 MB)
unrolled_cumprod(length, itr) Tuple(cumprod(Iterators.map(length, itr))) Tuple 128 distinct empty & nonempty singleton Tuples better (7 LLVM lines w/ Const vs. 2 kB allocs) 72 times less (70 ns vs. 5 μs) 5 times more (422 ms vs. 74 ms) 2 times more (8 MB vs. 4 MB)
unrolled_cumprod(length, itr) Tuple(cumprod(Iterators.map(length, itr))) Tuple 2 distinct nonempty singleton Tuples better (7 LLVM lines w/ Const vs. 112 B allocs) 5 times less (40 ns vs. 220 ns) similar (38 ms vs. 75 ms) 6 times less (587 kB vs. 4 MB)
unrolled_cumprod(length, itr) Tuple(cumprod(Iterators.map(length, itr))) Tuple 4 distinct nonempty singleton Tuples better (7 LLVM lines w/ Const vs. 144 B allocs) 7 times less (40 ns vs. 300 ns) similar (77 ms vs. 75 ms) 4 times less (806 kB vs. 4 MB)
unrolled_cumprod(length, itr) Tuple(cumprod(Iterators.map(length, itr))) Tuple 8 distinct nonempty singleton Tuples better (7 LLVM lines w/ Const vs. 256 B allocs) 11 times less (40 ns vs. 450 ns) similar (83 ms vs. 74 ms) 3 times less (1003 kB vs. 4 MB)
unrolled_cumprod(length, itr) Tuple(cumprod(Iterators.map(length, itr))) Tuple 32 distinct nonempty singleton Tuples better (7 LLVM lines w/ Const vs. 1 kB allocs) 37 times less (40 ns vs. 2 μs) similar (85 ms vs. 74 ms) 2 times less (2 MB vs. 4 MB)
unrolled_cumprod(length, itr) Tuple(cumprod(Iterators.map(length, itr))) Tuple 128 distinct nonempty singleton Tuples better (65 LLVM lines w/ Const vs. 4 kB allocs) 68 times less (80 ns vs. 6 μs) 5 times more (426 ms vs. 75 ms) 2 times more (8 MB vs. 4 MB)
unrolled_cumprod(length, itr) Tuple(cumprod(Iterators.map(length, itr))) Tuple 2 distinct nonempty non-singleton Tuples better (7 LLVM lines w/ Const vs. 176 B allocs) 5 times less (40 ns vs. 230 ns) 2 times less (29 ms vs. 65 ms) 6 times less (643 kB vs. 4 MB)
unrolled_cumprod(length, itr) Tuple(cumprod(Iterators.map(length, itr))) Tuple 4 distinct nonempty non-singleton Tuples better (7 LLVM lines w/ Const vs. 544 B allocs) 7 times less (49 ns vs. 360 ns) similar (67 ms vs. 66 ms) 4 times less (863 kB vs. 4 MB)
unrolled_cumprod(length, itr) Tuple(cumprod(Iterators.map(length, itr))) Tuple 8 distinct nonempty non-singleton Tuples better (7 LLVM lines w/ Const vs. 2 kB allocs) 15 times less (40 ns vs. 612 ns) similar (69 ms vs. 69 ms) 3 times less (1 MB vs. 4 MB)
unrolled_cumprod(length, itr) Tuple(cumprod(Iterators.map(length, itr))) Tuple 32 distinct nonempty non-singleton Tuples better (7 LLVM lines w/ Const vs. 33 kB allocs) 68 times less (49 ns vs. 3 μs) similar (80 ms vs. 65 ms) similar (2 MB vs. 4 MB)
unrolled_cumprod(length, itr) Tuple(cumprod(Iterators.map(length, itr))) Tuple 128 distinct nonempty non-singleton Tuples better (65 LLVM lines w/ Const vs. 525 kB allocs) 439 times less (89 ns vs. 39 μs) 6 times more (423 ms vs. 65 ms) similar (9 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. 72 ms) 7 times less (498 kB vs. 3 MB)
unrolled_count(!isempty, itr) count(!isempty, itr) Tuple 1 nonempty singleton Tuple similar (optimized out) similar (40 ns vs. 49 ns) 2 times less (35 ms vs. 78 ms) 6 times less (529 kB vs. 4 MB)
unrolled_count(!isempty, itr) count(!isempty, itr) Tuple 1 nonempty non-singleton Tuple similar (optimized out) similar (49 ns vs. 40 ns) similar (28 ms vs. 48 ms) 6 times less (564 kB vs. 4 MB)
unrolled_count(!isempty, itr) count(!isempty, itr) Tuple 2 identical nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) 2 times less (36 ms vs. 73 ms) 5 times less (677 kB vs. 4 MB)
unrolled_count(!isempty, itr) count(!isempty, itr) Tuple 4 identical nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (79 ms vs. 73 ms) similar (3 MB vs. 4 MB)
unrolled_count(!isempty, itr) count(!isempty, itr) Tuple 8 identical nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (79 ms vs. 73 ms) similar (3 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 (86 ms vs. 76 ms) similar (5 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 (40 ns vs. 49 ns) similar (122 ms vs. 75 ms) 4 times more (15 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 (29 ms vs. 55 ms) 5 times less (713 kB vs. 4 MB)
unrolled_count(!isempty, itr) count(!isempty, itr) Tuple 4 identical nonempty non-singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (74 ms vs. 49 ms) similar (3 MB vs. 4 MB)
unrolled_count(!isempty, itr) count(!isempty, itr) Tuple 8 identical nonempty non-singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (75 ms vs. 49 ms) similar (3 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. 40 ns) similar (80 ms vs. 56 ms) similar (6 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 (49 ns vs. 40 ns) 2 times more (116 ms vs. 50 ms) 4 times more (15 MB vs. 4 MB)
unrolled_count(!isempty, itr) count(!isempty, itr) Tuple 2 distinct empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (37 ms vs. 74 ms) 5 times less (728 kB vs. 4 MB)
unrolled_count(!isempty, itr) count(!isempty, itr) Tuple 4 distinct empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (79 ms vs. 75 ms) similar (3 MB vs. 5 MB)
unrolled_count(!isempty, itr) count(!isempty, itr) Tuple 8 distinct empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (80 ms vs. 77 ms) similar (3 MB vs. 5 MB)
unrolled_count(!isempty, itr) count(!isempty, itr) Tuple 32 distinct empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (117 ms vs. 80 ms) similar (6 MB vs. 6 MB)
unrolled_count(!isempty, itr) count(!isempty, itr) Tuple 128 distinct empty & nonempty singleton Tuples better (optimized out vs. 25 LLVM lines) 28 times less (49 ns vs. 1 μs) similar (122 ms vs. 80 ms) 3 times more (15 MB vs. 5 MB)
unrolled_count(!isempty, itr) count(!isempty, itr) Tuple 2 distinct nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) 2 times less (38 ms vs. 80 ms) 5 times less (733 kB vs. 4 MB)
unrolled_count(!isempty, itr) count(!isempty, itr) Tuple 4 distinct nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (77 ms vs. 75 ms) similar (3 MB vs. 5 MB)
unrolled_count(!isempty, itr) count(!isempty, itr) Tuple 8 distinct nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (81 ms vs. 77 ms) similar (3 MB vs. 5 MB)
unrolled_count(!isempty, itr) count(!isempty, itr) Tuple 32 distinct nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (87 ms vs. 79 ms) similar (6 MB vs. 6 MB)
unrolled_count(!isempty, itr) count(!isempty, itr) Tuple 128 distinct nonempty singleton Tuples better (optimized out vs. 25 LLVM lines) 27 times less (49 ns vs. 1 μs) similar (121 ms vs. 79 ms) 3 times more (15 MB vs. 5 MB)
unrolled_count(!isempty, itr) count(!isempty, itr) Tuple 2 distinct nonempty non-singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (29 ms vs. 49 ms) 5 times less (796 kB vs. 4 MB)
unrolled_count(!isempty, itr) count(!isempty, itr) Tuple 4 distinct nonempty non-singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (71 ms vs. 50 ms) similar (3 MB vs. 5 MB)
unrolled_count(!isempty, itr) count(!isempty, itr) Tuple 8 distinct nonempty non-singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (75 ms vs. 52 ms) similar (3 MB vs. 6 MB)
unrolled_count(!isempty, itr) count(!isempty, itr) Tuple 32 distinct nonempty non-singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (82 ms vs. 56 ms) similar (6 MB vs. 7 MB)
unrolled_count(!isempty, itr) count(!isempty, itr) Tuple 128 distinct nonempty non-singleton Tuples better (optimized out vs. 521 kB allocs) 710 times less (49 ns vs. 35 μs) 2 times more (113 ms vs. 54 ms) 2 times more (16 MB vs. 6 MB)
unrolled_maximum(length, itr) maximum(length, itr) Tuple 1 empty singleton Tuple similar (optimized out) similar (40 ns vs. 49 ns) 2 times less (35 ms vs. 72 ms) 6 times less (348 kB vs. 2 MB)
unrolled_maximum(length, itr) maximum(length, itr) Tuple 1 nonempty singleton Tuple similar (optimized out) similar (40 ns vs. 49 ns) similar (35 ms vs. 68 ms) 5 times less (382 kB vs. 2 MB)
unrolled_maximum(length, itr) maximum(length, itr) Tuple 1 nonempty non-singleton Tuple similar (optimized out) similar (49 ns vs. 40 ns) similar (27 ms vs. 44 ms) 6 times less (413 kB vs. 2 MB)
unrolled_maximum(length, itr) maximum(length, itr) Tuple 2 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) 2 times less (35 ms vs. 71 ms) 5 times less (407 kB vs. 2 MB)
unrolled_maximum(length, itr) maximum(length, itr) Tuple 4 identical nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (79 ms vs. 71 ms) similar (2 MB vs. 2 MB)
unrolled_maximum(length, itr) maximum(length, itr) Tuple 8 identical nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (79 ms vs. 72 ms) similar (2 MB vs. 2 MB)
unrolled_maximum(length, itr) maximum(length, itr) Tuple 32 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (85 ms vs. 72 ms) similar (3 MB vs. 3 MB)
unrolled_maximum(length, itr) maximum(length, itr) Tuple 128 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (104 ms vs. 75 ms) 2 times more (6 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 (28 ms vs. 44 ms) 5 times less (443 kB vs. 3 MB)
unrolled_maximum(length, itr) maximum(length, itr) Tuple 4 identical nonempty non-singleton Tuples similar (optimized out) similar (41 ns vs. 40 ns) similar (71 ms vs. 45 ms) similar (2 MB vs. 3 MB)
unrolled_maximum(length, itr) maximum(length, itr) Tuple 8 identical nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (71 ms vs. 45 ms) similar (3 MB vs. 3 MB)
unrolled_maximum(length, itr) maximum(length, itr) Tuple 32 identical nonempty non-singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (76 ms vs. 46 ms) similar (3 MB vs. 3 MB)
unrolled_maximum(length, itr) maximum(length, itr) Tuple 128 identical nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (99 ms vs. 50 ms) 2 times more (7 MB vs. 3 MB)
unrolled_maximum(length, itr) maximum(length, itr) Tuple 2 distinct empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) 2 times less (36 ms vs. 72 ms) 6 times less (407 kB vs. 3 MB)
unrolled_maximum(length, itr) maximum(length, itr) Tuple 4 distinct empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (76 ms vs. 79 ms) similar (2 MB vs. 3 MB)
unrolled_maximum(length, itr) maximum(length, itr) Tuple 8 distinct empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (81 ms vs. 93 ms) similar (2 MB vs. 3 MB)
unrolled_maximum(length, itr) maximum(length, itr) Tuple 32 distinct empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (82 ms vs. 91 ms) similar (3 MB vs. 4 MB)
unrolled_maximum(length, itr) maximum(length, itr) Tuple 128 distinct empty & nonempty singleton Tuples better (optimized out vs. 26 LLVM lines) 34 times less (40 ns vs. 1 μs) similar (104 ms vs. 79 ms) similar (6 MB vs. 3 MB)
unrolled_maximum(length, itr) maximum(length, itr) Tuple 2 distinct nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) 2 times less (35 ms vs. 72 ms) 6 times less (411 kB vs. 3 MB)
unrolled_maximum(length, itr) maximum(length, itr) Tuple 4 distinct nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (76 ms vs. 78 ms) similar (2 MB vs. 3 MB)
unrolled_maximum(length, itr) maximum(length, itr) Tuple 8 distinct nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (81 ms vs. 92 ms) similar (2 MB vs. 3 MB)
unrolled_maximum(length, itr) maximum(length, itr) Tuple 32 distinct nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (83 ms vs. 92 ms) similar (3 MB vs. 4 MB)
unrolled_maximum(length, itr) maximum(length, itr) Tuple 128 distinct nonempty singleton Tuples better (optimized out vs. 26 LLVM lines) 28 times less (49 ns vs. 1 μs) similar (103 ms vs. 79 ms) similar (6 MB vs. 3 MB)
unrolled_maximum(length, itr) maximum(length, itr) Tuple 2 distinct nonempty non-singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (28 ms vs. 46 ms) 6 times less (468 kB vs. 3 MB)
unrolled_maximum(length, itr) maximum(length, itr) Tuple 4 distinct nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (73 ms vs. 47 ms) similar (2 MB vs. 3 MB)
unrolled_maximum(length, itr) maximum(length, itr) Tuple 8 distinct nonempty non-singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (70 ms vs. 49 ms) similar (3 MB vs. 4 MB)
unrolled_maximum(length, itr) maximum(length, itr) Tuple 32 distinct nonempty non-singleton Tuples similar (optimized out) similar (70 ns vs. 49 ns) similar (76 ms vs. 48 ms) similar (3 MB vs. 5 MB)
unrolled_maximum(length, itr) maximum(length, itr) Tuple 128 distinct nonempty non-singleton Tuples better (optimized out vs. 521 kB allocs) 688 times less (49 ns vs. 34 μs) similar (99 ms vs. 54 ms) similar (7 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 (35 ms vs. 70 ms) 6 times less (348 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 (35 ms vs. 70 ms) 6 times less (382 kB vs. 2 MB)
unrolled_minimum(length, itr) minimum(length, itr) Tuple 1 nonempty non-singleton Tuple similar (optimized out) similar (49 ns vs. 40 ns) similar (28 ms vs. 45 ms) 6 times less (413 kB vs. 3 MB)
unrolled_minimum(length, itr) minimum(length, itr) Tuple 2 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (38 ms vs. 72 ms) 5 times less (407 kB vs. 2 MB)
unrolled_minimum(length, itr) minimum(length, itr) Tuple 4 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (78 ms vs. 71 ms) similar (2 MB 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 (78 ms vs. 71 ms) similar (2 MB vs. 2 MB)
unrolled_minimum(length, itr) minimum(length, itr) Tuple 32 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (83 ms vs. 74 ms) similar (3 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 (105 ms vs. 76 ms) 2 times more (6 MB vs. 2 MB)
unrolled_minimum(length, itr) minimum(length, itr) Tuple 2 identical nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (28 ms vs. 44 ms) 6 times less (443 kB vs. 3 MB)
unrolled_minimum(length, itr) minimum(length, itr) Tuple 4 identical nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (69 ms vs. 47 ms) similar (2 MB vs. 3 MB)
unrolled_minimum(length, itr) minimum(length, itr) Tuple 8 identical nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (71 ms vs. 46 ms) similar (3 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 (76 ms vs. 47 ms) similar (3 MB vs. 4 MB)
unrolled_minimum(length, itr) minimum(length, itr) Tuple 128 identical nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) 2 times more (98 ms vs. 48 ms) 2 times more (7 MB vs. 3 MB)
unrolled_minimum(length, itr) minimum(length, itr) Tuple 2 distinct empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) 2 times less (36 ms vs. 73 ms) 6 times less (407 kB vs. 3 MB)
unrolled_minimum(length, itr) minimum(length, itr) Tuple 4 distinct empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (78 ms vs. 79 ms) similar (2 MB vs. 3 MB)
unrolled_minimum(length, itr) minimum(length, itr) Tuple 8 distinct empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (80 ms vs. 93 ms) similar (2 MB vs. 3 MB)
unrolled_minimum(length, itr) minimum(length, itr) Tuple 32 distinct empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (83 ms vs. 91 ms) similar (3 MB vs. 4 MB)
unrolled_minimum(length, itr) minimum(length, itr) Tuple 128 distinct empty & nonempty singleton Tuples better (optimized out vs. 26 LLVM lines) 27 times less (49 ns vs. 1 μs) similar (104 ms vs. 83 ms) similar (6 MB vs. 3 MB)
unrolled_minimum(length, itr) minimum(length, itr) Tuple 2 distinct nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) 2 times less (36 ms vs. 72 ms) 6 times less (411 kB vs. 3 MB)
unrolled_minimum(length, itr) minimum(length, itr) Tuple 4 distinct nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (78 ms vs. 79 ms) similar (2 MB vs. 3 MB)
unrolled_minimum(length, itr) minimum(length, itr) Tuple 8 distinct nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (78 ms vs. 93 ms) similar (2 MB vs. 3 MB)
unrolled_minimum(length, itr) minimum(length, itr) Tuple 32 distinct nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (83 ms vs. 93 ms) similar (3 MB vs. 4 MB)
unrolled_minimum(length, itr) minimum(length, itr) Tuple 128 distinct nonempty singleton Tuples better (optimized out vs. 26 LLVM lines) 34 times less (40 ns vs. 1 μs) similar (105 ms vs. 79 ms) similar (6 MB vs. 3 MB)
unrolled_minimum(length, itr) minimum(length, itr) Tuple 2 distinct nonempty non-singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (28 ms vs. 46 ms) 6 times less (468 kB vs. 3 MB)
unrolled_minimum(length, itr) minimum(length, itr) Tuple 4 distinct nonempty non-singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (71 ms vs. 47 ms) similar (2 MB vs. 4 MB)
unrolled_minimum(length, itr) minimum(length, itr) Tuple 8 distinct nonempty non-singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (73 ms vs. 47 ms) similar (3 MB vs. 4 MB)
unrolled_minimum(length, itr) minimum(length, itr) Tuple 32 distinct nonempty non-singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (76 ms vs. 49 ms) similar (3 MB vs. 5 MB)
unrolled_minimum(length, itr) minimum(length, itr) Tuple 128 distinct nonempty non-singleton Tuples better (optimized out vs. 521 kB allocs) 729 times less (49 ns vs. 36 μs) similar (98 ms vs. 55 ms) similar (7 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 (35 ms vs. 82 ms) 9 times less (363 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. 49 ns) 2 times less (36 ms vs. 77 ms) 8 times less (397 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. 49 ns) similar (29 ms vs. 53 ms) 8 times less (429 kB vs. 4 MB)
unrolled_extrema(length, itr) extrema(length, itr) Tuple 2 identical nonempty singleton Tuples similar (7 LLVM lines w/ Const) similar (40 ns vs. 49 ns) 2 times less (38 ms vs. 82 ms) 6 times less (550 kB vs. 4 MB)
unrolled_extrema(length, itr) extrema(length, itr) Tuple 4 identical nonempty singleton Tuples similar (7 LLVM lines w/ Const) similar (40 ns vs. 49 ns) similar (83 ms vs. 82 ms) similar (2 MB 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 (80 ms vs. 87 ms) similar (3 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. 40 ns) similar (91 ms vs. 84 ms) similar (4 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. 49 ns) similar (145 ms vs. 91 ms) 2 times more (9 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 (29 ms vs. 54 ms) 6 times less (586 kB vs. 4 MB)
unrolled_extrema(length, itr) extrema(length, itr) Tuple 4 identical nonempty non-singleton Tuples similar (7 LLVM lines w/ Const) similar (40 ns vs. 49 ns) similar (72 ms vs. 54 ms) similar (3 MB vs. 4 MB)
unrolled_extrema(length, itr) extrema(length, itr) Tuple 8 identical nonempty non-singleton Tuples similar (7 LLVM lines w/ Const) similar (40 ns vs. 40 ns) similar (74 ms vs. 54 ms) similar (3 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. 40 ns) similar (84 ms vs. 55 ms) similar (4 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. 49 ns) 2 times more (136 ms vs. 58 ms) 2 times more (9 MB vs. 4 MB)
unrolled_extrema(length, itr) extrema(length, itr) Tuple 2 distinct empty & nonempty singleton Tuples similar (7 LLVM lines w/ Const) similar (40 ns vs. 40 ns) 2 times less (37 ms vs. 82 ms) 7 times less (557 kB vs. 4 MB)
unrolled_extrema(length, itr) extrema(length, itr) Tuple 4 distinct empty & nonempty singleton Tuples similar (7 LLVM lines w/ Const) similar (40 ns vs. 49 ns) similar (79 ms vs. 90 ms) similar (3 MB vs. 5 MB)
unrolled_extrema(length, itr) extrema(length, itr) Tuple 8 distinct empty & nonempty singleton Tuples similar (7 LLVM lines w/ Const) similar (49 ns vs. 49 ns) similar (85 ms vs. 107 ms) similar (3 MB vs. 5 MB)
unrolled_extrema(length, itr) extrema(length, itr) Tuple 32 distinct empty & nonempty singleton Tuples similar (7 LLVM lines w/ Const) similar (49 ns vs. 49 ns) similar (91 ms vs. 108 ms) similar (4 MB vs. 5 MB)
unrolled_extrema(length, itr) extrema(length, itr) Tuple 128 distinct empty & nonempty singleton Tuples better (7 LLVM lines w/ Const vs. 31 LLVM lines) 34 times less (40 ns vs. 1 μs) similar (146 ms vs. 91 ms) similar (9 MB vs. 5 MB)
unrolled_extrema(length, itr) extrema(length, itr) Tuple 2 distinct nonempty singleton Tuples similar (7 LLVM lines w/ Const) similar (49 ns vs. 40 ns) 2 times less (37 ms vs. 82 ms) 7 times less (564 kB vs. 4 MB)
unrolled_extrema(length, itr) extrema(length, itr) Tuple 4 distinct nonempty singleton Tuples similar (7 LLVM lines w/ Const) similar (40 ns vs. 49 ns) similar (84 ms vs. 91 ms) similar (3 MB vs. 5 MB)
unrolled_extrema(length, itr) extrema(length, itr) Tuple 8 distinct nonempty singleton Tuples similar (7 LLVM lines w/ Const) similar (40 ns vs. 40 ns) similar (81 ms vs. 108 ms) similar (3 MB vs. 5 MB)
unrolled_extrema(length, itr) extrema(length, itr) Tuple 32 distinct nonempty singleton Tuples similar (7 LLVM lines w/ Const) similar (49 ns vs. 49 ns) similar (92 ms vs. 107 ms) similar (4 MB vs. 5 MB)
unrolled_extrema(length, itr) extrema(length, itr) Tuple 128 distinct nonempty singleton Tuples better (7 LLVM lines w/ Const vs. 31 LLVM lines) 27 times less (49 ns vs. 1 μs) similar (146 ms vs. 97 ms) similar (9 MB vs. 5 MB)
unrolled_extrema(length, itr) extrema(length, itr) Tuple 2 distinct nonempty non-singleton Tuples similar (7 LLVM lines w/ Const) similar (49 ns vs. 40 ns) similar (29 ms vs. 54 ms) 7 times less (618 kB vs. 4 MB)
unrolled_extrema(length, itr) extrema(length, itr) Tuple 4 distinct nonempty non-singleton Tuples similar (7 LLVM lines w/ Const) similar (49 ns vs. 40 ns) similar (71 ms vs. 56 ms) similar (3 MB vs. 5 MB)
unrolled_extrema(length, itr) extrema(length, itr) Tuple 8 distinct nonempty non-singleton Tuples similar (7 LLVM lines w/ Const) similar (40 ns vs. 49 ns) similar (74 ms vs. 58 ms) similar (3 MB vs. 5 MB)
unrolled_extrema(length, itr) extrema(length, itr) Tuple 32 distinct nonempty non-singleton Tuples similar (7 LLVM lines w/ Const) similar (40 ns vs. 49 ns) similar (86 ms vs. 58 ms) similar (4 MB vs. 6 MB)
unrolled_extrema(length, itr) extrema(length, itr) Tuple 128 distinct nonempty non-singleton Tuples better (7 LLVM lines w/ Const vs. 521 kB allocs) 862 times less (40 ns vs. 34 μs) 2 times more (135 ms vs. 64 ms) similar (9 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 (43 ms vs. 62 ms) 9 times less (511 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. 40 ns) similar (43 ms vs. 62 ms) 7 times less (618 kB vs. 5 MB)
unrolled_findmax(length, itr) findmax(length, itr) Tuple 1 nonempty non-singleton Tuple similar (7 LLVM lines w/ Const) similar (40 ns vs. 49 ns) 2 times less (29 ms vs. 60 ms) 6 times less (716 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. 49 ns) similar (45 ms vs. 63 ms) 6 times less (783 kB vs. 5 MB)
unrolled_findmax(length, itr) findmax(length, itr) Tuple 4 identical nonempty singleton Tuples similar (7 LLVM lines w/ Const) similar (40 ns vs. 60 ns) similar (90 ms vs. 64 ms) similar (3 MB 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. 49 ns) similar (89 ms vs. 64 ms) similar (3 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. 49 ns) similar (103 ms vs. 66 ms) similar (5 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. 50 ns) 2 times more (190 ms vs. 66 ms) 2 times more (11 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 (49 ns vs. 49 ns) similar (30 ms vs. 59 ms) 5 times less (891 kB vs. 5 MB)
unrolled_findmax(length, itr) findmax(length, itr) Tuple 4 identical nonempty non-singleton Tuples similar (7 LLVM lines w/ Const) similar (49 ns vs. 50 ns) similar (74 ms vs. 61 ms) similar (3 MB 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 (76 ms vs. 63 ms) similar (3 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 (49 ns vs. 49 ns) similar (90 ms vs. 69 ms) similar (5 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 (49 ns vs. 49 ns) 2 times more (179 ms vs. 65 ms) 2 times more (12 MB vs. 5 MB)
unrolled_findmax(length, itr) findmax(length, itr) Tuple 2 distinct empty & nonempty singleton Tuples better (7 LLVM lines w/ Const vs. 26 LLVM lines) similar (40 ns vs. 60 ns) similar (54 ms vs. 65 ms) 6 times less (845 kB vs. 5 MB)
unrolled_findmax(length, itr) findmax(length, itr) Tuple 4 distinct empty & nonempty singleton Tuples better (7 LLVM lines w/ Const vs. 42 LLVM lines) 2 times less (40 ns vs. 89 ns) similar (97 ms vs. 66 ms) similar (3 MB vs. 6 MB)
unrolled_findmax(length, itr) findmax(length, itr) Tuple 8 distinct empty & nonempty singleton Tuples better (7 LLVM lines w/ Const vs. 86 LLVM lines) 3 times less (40 ns vs. 130 ns) similar (111 ms vs. 66 ms) similar (4 MB vs. 6 MB)
unrolled_findmax(length, itr) findmax(length, itr) Tuple 32 distinct empty & nonempty singleton Tuples better (7 LLVM lines w/ Const vs. 32 LLVM lines) 9 times less (40 ns vs. 390 ns) similar (126 ms vs. 66 ms) similar (5 MB vs. 6 MB)
unrolled_findmax(length, itr) findmax(length, itr) Tuple 128 distinct empty & nonempty singleton Tuples better (7 LLVM lines w/ Const vs. 32 LLVM lines) 34 times less (40 ns vs. 1 μs) 3 times more (210 ms vs. 67 ms) 2 times more (11 MB vs. 6 MB)
unrolled_findmax(length, itr) findmax(length, itr) Tuple 2 distinct nonempty singleton Tuples better (7 LLVM lines w/ Const vs. 26 LLVM lines) similar (40 ns vs. 60 ns) similar (48 ms vs. 68 ms) 5 times less (925 kB vs. 5 MB)
unrolled_findmax(length, itr) findmax(length, itr) Tuple 4 distinct nonempty singleton Tuples better (7 LLVM lines w/ Const vs. 78 LLVM lines) 43 times less (40 ns vs. 2 μs) similar (97 ms vs. 67 ms) similar (3 MB vs. 6 MB)
unrolled_findmax(length, itr) findmax(length, itr) Tuple 8 distinct nonempty singleton Tuples better (7 LLVM lines w/ Const vs. 146 LLVM lines) 137 times less (40 ns vs. 5 μs) similar (111 ms vs. 69 ms) similar (4 MB vs. 6 MB)
unrolled_findmax(length, itr) findmax(length, itr) Tuple 32 distinct nonempty singleton Tuples better (7 LLVM lines w/ Const vs. 55 LLVM lines) 470 times less (49 ns vs. 23 μs) similar (129 ms vs. 68 ms) similar (5 MB vs. 6 MB)
unrolled_findmax(length, itr) findmax(length, itr) Tuple 128 distinct nonempty singleton Tuples better (7 LLVM lines w/ Const vs. 55 LLVM lines) 1960 times less (49 ns vs. 96 μs) 3 times more (215 ms vs. 68 ms) similar (11 MB vs. 6 MB)
unrolled_findmax(length, itr) findmax(length, itr) Tuple 2 distinct nonempty non-singleton Tuples better (7 LLVM lines w/ Const vs. 64 B allocs) similar (49 ns vs. 90 ns) 2 times less (30 ms vs. 65 ms) 5 times less (1 MB vs. 5 MB)
unrolled_findmax(length, itr) findmax(length, itr) Tuple 4 distinct nonempty non-singleton Tuples better (7 LLVM lines w/ Const vs. 400 B allocs) 12 times less (40 ns vs. 491 ns) similar (83 ms vs. 66 ms) similar (3 MB vs. 6 MB)
unrolled_findmax(length, itr) findmax(length, itr) Tuple 8 distinct nonempty non-singleton Tuples better (7 LLVM lines w/ Const vs. 2 kB allocs) 27 times less (40 ns vs. 1 μs) similar (78 ms vs. 67 ms) similar (4 MB vs. 6 MB)
unrolled_findmax(length, itr) findmax(length, itr) Tuple 32 distinct nonempty non-singleton Tuples better (7 LLVM lines w/ Const vs. 32 kB allocs) 105 times less (49 ns vs. 5 μs) similar (91 ms vs. 67 ms) similar (6 MB vs. 6 MB)
unrolled_findmax(length, itr) findmax(length, itr) Tuple 128 distinct nonempty non-singleton Tuples better (7 LLVM lines w/ Const vs. 521 kB allocs) 1384 times less (40 ns vs. 55 μs) 2 times more (180 ms vs. 67 ms) 2 times more (13 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. 40 ns) similar (43 ms vs. 57 ms) 9 times less (511 kB vs. 4 MB)
unrolled_findmin(length, itr) findmin(length, itr) Tuple 1 nonempty singleton Tuple similar (7 LLVM lines w/ Const) similar (40 ns vs. 49 ns) similar (43 ms vs. 58 ms) 7 times less (618 kB vs. 5 MB)
unrolled_findmin(length, itr) findmin(length, itr) Tuple 1 nonempty non-singleton Tuple similar (7 LLVM lines w/ Const) similar (40 ns vs. 40 ns) similar (29 ms vs. 56 ms) 6 times less (718 kB vs. 5 MB)
unrolled_findmin(length, itr) findmin(length, itr) Tuple 2 identical nonempty singleton Tuples similar (7 LLVM lines w/ Const) similar (49 ns vs. 49 ns) similar (44 ms vs. 58 ms) 5 times less (783 kB vs. 5 MB)
unrolled_findmin(length, itr) findmin(length, itr) Tuple 4 identical nonempty singleton Tuples similar (7 LLVM lines w/ Const) similar (40 ns vs. 49 ns) similar (88 ms vs. 61 ms) similar (3 MB 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 (89 ms vs. 63 ms) similar (3 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 (104 ms vs. 65 ms) similar (5 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) 3 times more (195 ms vs. 62 ms) 2 times more (11 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 (40 ns vs. 49 ns) similar (30 ms vs. 57 ms) 5 times less (891 kB vs. 5 MB)
unrolled_findmin(length, itr) findmin(length, itr) Tuple 4 identical nonempty non-singleton Tuples similar (7 LLVM lines w/ Const) similar (40 ns vs. 49 ns) similar (74 ms vs. 59 ms) similar (3 MB 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 (75 ms vs. 60 ms) similar (3 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 (49 ns vs. 49 ns) similar (91 ms vs. 61 ms) similar (5 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 (40 ns vs. 49 ns) 3 times more (191 ms vs. 61 ms) 2 times more (12 MB vs. 5 MB)
unrolled_findmin(length, itr) findmin(length, itr) Tuple 2 distinct empty & nonempty singleton Tuples better (7 LLVM lines w/ Const vs. 26 LLVM lines) similar (40 ns vs. 69 ns) similar (47 ms vs. 62 ms) 5 times less (847 kB vs. 5 MB)
unrolled_findmin(length, itr) findmin(length, itr) Tuple 4 distinct empty & nonempty singleton Tuples better (7 LLVM lines w/ Const vs. 42 LLVM lines) 2 times less (40 ns vs. 89 ns) similar (96 ms vs. 62 ms) similar (3 MB vs. 5 MB)
unrolled_findmin(length, itr) findmin(length, itr) Tuple 8 distinct empty & nonempty singleton Tuples better (7 LLVM lines w/ Const vs. 86 LLVM lines) 3 times less (40 ns vs. 130 ns) similar (111 ms vs. 63 ms) similar (4 MB vs. 5 MB)
unrolled_findmin(length, itr) findmin(length, itr) Tuple 32 distinct empty & nonempty singleton Tuples better (7 LLVM lines w/ Const vs. 32 LLVM lines) 9 times less (40 ns vs. 380 ns) 2 times more (125 ms vs. 62 ms) similar (5 MB vs. 5 MB)
unrolled_findmin(length, itr) findmin(length, itr) Tuple 128 distinct empty & nonempty singleton Tuples better (7 LLVM lines w/ Const vs. 32 LLVM lines) 30 times less (49 ns vs. 2 μs) 3 times more (216 ms vs. 62 ms) 2 times more (11 MB vs. 5 MB)
unrolled_findmin(length, itr) findmin(length, itr) Tuple 2 distinct nonempty singleton Tuples better (7 LLVM lines w/ Const vs. 26 LLVM lines) similar (40 ns vs. 69 ns) similar (48 ms vs. 62 ms) 5 times less (925 kB vs. 5 MB)
unrolled_findmin(length, itr) findmin(length, itr) Tuple 4 distinct nonempty singleton Tuples better (7 LLVM lines w/ Const vs. 78 LLVM lines) 44 times less (40 ns vs. 2 μs) similar (99 ms vs. 64 ms) similar (3 MB vs. 5 MB)
unrolled_findmin(length, itr) findmin(length, itr) Tuple 8 distinct nonempty singleton Tuples better (7 LLVM lines w/ Const vs. 146 LLVM lines) 112 times less (49 ns vs. 5 μs) similar (110 ms vs. 63 ms) similar (4 MB vs. 5 MB)
unrolled_findmin(length, itr) findmin(length, itr) Tuple 32 distinct nonempty singleton Tuples better (7 LLVM lines w/ Const vs. 55 LLVM lines) 472 times less (49 ns vs. 23 μs) similar (126 ms vs. 63 ms) similar (5 MB vs. 5 MB)
unrolled_findmin(length, itr) findmin(length, itr) Tuple 128 distinct nonempty singleton Tuples better (7 LLVM lines w/ Const vs. 55 LLVM lines) 2406 times less (40 ns vs. 96 μs) 3 times more (217 ms vs. 64 ms) 2 times more (11 MB vs. 5 MB)
unrolled_findmin(length, itr) findmin(length, itr) Tuple 2 distinct nonempty non-singleton Tuples better (7 LLVM lines w/ Const vs. 64 B allocs) 2 times less (40 ns vs. 89 ns) 2 times less (30 ms vs. 61 ms) 4 times less (1 MB vs. 5 MB)
unrolled_findmin(length, itr) findmin(length, itr) Tuple 4 distinct nonempty non-singleton Tuples better (7 LLVM lines w/ Const vs. 400 B allocs) 12 times less (40 ns vs. 510 ns) similar (74 ms vs. 64 ms) similar (3 MB vs. 5 MB)
unrolled_findmin(length, itr) findmin(length, itr) Tuple 8 distinct nonempty non-singleton Tuples better (7 LLVM lines w/ Const vs. 2 kB allocs) 29 times less (40 ns vs. 1 μs) similar (78 ms vs. 63 ms) similar (4 MB vs. 5 MB)
unrolled_findmin(length, itr) findmin(length, itr) Tuple 32 distinct nonempty non-singleton Tuples better (7 LLVM lines w/ Const vs. 32 kB allocs) 105 times less (49 ns vs. 5 μs) similar (92 ms vs. 63 ms) similar (6 MB vs. 5 MB)
unrolled_findmin(length, itr) findmin(length, itr) Tuple 128 distinct nonempty non-singleton Tuples better (7 LLVM lines w/ Const vs. 521 kB allocs) 1109 times less (49 ns vs. 54 μs) 3 times more (187 ms vs. 62 ms) 2 times more (13 MB vs. 6 MB)
unrolled_argmax(length, itr) argmax(length, itr) Tuple 1 empty singleton Tuple similar (optimized out) similar (49 ns vs. 49 ns) similar (35 ms vs. 64 ms) 2 times less (415 kB vs. 1 MB)
unrolled_argmax(length, itr) argmax(length, itr) Tuple 1 nonempty singleton Tuple similar (optimized out) similar (49 ns vs. 40 ns) similar (36 ms vs. 64 ms) 2 times less (451 kB vs. 1 MB)
unrolled_argmax(length, itr) argmax(length, itr) Tuple 1 nonempty non-singleton Tuple similar (8 LLVM lines) similar (50 ns vs. 49 ns) similar (30 ms vs. 39 ms) 2 times less (765 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) similar (37 ms vs. 67 ms) 2 times less (674 kB vs. 1 MB)
unrolled_argmax(length, itr) argmax(length, itr) Tuple 4 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (79 ms vs. 68 ms) similar (3 MB vs. 1 MB)
unrolled_argmax(length, itr) argmax(length, itr) Tuple 8 identical nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (81 ms vs. 69 ms) similar (3 MB vs. 1 MB)
unrolled_argmax(length, itr) argmax(length, itr) Tuple 32 identical nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (90 ms vs. 68 ms) 2 times more (4 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 (131 ms vs. 73 ms) 4 times more (9 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. 49 ns) similar (29 ms vs. 40 ms) 2 times less (1 MB vs. 2 MB)
unrolled_argmax(length, itr) argmax(length, itr) Tuple 4 identical nonempty non-singleton Tuples similar (8 LLVM lines) similar (49 ns vs. 49 ns) similar (72 ms vs. 39 ms) similar (3 MB 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 (74 ms vs. 40 ms) similar (4 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. 49 ns) similar (78 ms vs. 43 ms) similar (6 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. 49 ns) 2 times more (103 ms vs. 41 ms) 6 times more (16 MB vs. 2 MB)
unrolled_argmax(length, itr) argmax(length, itr) Tuple 2 distinct empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (41 ms vs. 69 ms) 2 times less (681 kB vs. 1 MB)
unrolled_argmax(length, itr) argmax(length, itr) Tuple 4 distinct empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (82 ms vs. 78 ms) similar (3 MB vs. 2 MB)
unrolled_argmax(length, itr) argmax(length, itr) Tuple 8 distinct empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (85 ms vs. 97 ms) similar (4 MB vs. 3 MB)
unrolled_argmax(length, itr) argmax(length, itr) Tuple 32 distinct empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (100 ms vs. 126 ms) similar (6 MB vs. 4 MB)
unrolled_argmax(length, itr) argmax(length, itr) Tuple 128 distinct empty & nonempty singleton Tuples better (optimized out vs. 44 LLVM lines) 28 times less (49 ns vs. 1 μs) 2 times more (164 ms vs. 78 ms) 4 times more (12 MB vs. 3 MB)
unrolled_argmax(length, itr) argmax(length, itr) Tuple 2 distinct nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (38 ms vs. 68 ms) 2 times less (763 kB vs. 2 MB)
unrolled_argmax(length, itr) argmax(length, itr) Tuple 4 distinct nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (82 ms vs. 80 ms) similar (3 MB vs. 2 MB)
unrolled_argmax(length, itr) argmax(length, itr) Tuple 8 distinct nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (85 ms vs. 103 ms) similar (4 MB vs. 3 MB)
unrolled_argmax(length, itr) argmax(length, itr) Tuple 32 distinct nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (100 ms vs. 126 ms) similar (6 MB vs. 4 MB)
unrolled_argmax(length, itr) argmax(length, itr) Tuple 128 distinct nonempty singleton Tuples better (optimized out vs. 43 LLVM lines) 27 times less (49 ns vs. 1 μs) 2 times more (160 ms vs. 77 ms) 3 times more (12 MB vs. 3 MB)
unrolled_argmax(length, itr) argmax(length, itr) Tuple 2 distinct nonempty non-singleton Tuples similar (8 LLVM lines) similar (49 ns vs. 60 ns) similar (30 ms vs. 39 ms) similar (1 MB vs. 2 MB)
unrolled_argmax(length, itr) argmax(length, itr) Tuple 4 distinct nonempty non-singleton Tuples similar (8 LLVM lines) similar (49 ns vs. 60 ns) similar (74 ms vs. 43 ms) similar (4 MB vs. 4 MB)
unrolled_argmax(length, itr) argmax(length, itr) Tuple 8 distinct nonempty non-singleton Tuples similar (8 LLVM lines) similar (60 ns vs. 50 ns) similar (76 ms vs. 47 ms) similar (5 MB vs. 6 MB)
unrolled_argmax(length, itr) argmax(length, itr) Tuple 32 distinct nonempty non-singleton Tuples similar (8 LLVM lines) similar (49 ns vs. 49 ns) similar (87 ms vs. 55 ms) similar (8 MB vs. 11 MB)
unrolled_argmax(length, itr) argmax(length, itr) Tuple 128 distinct nonempty non-singleton Tuples better (8 LLVM lines vs. 521 kB allocs) 590 times less (60 ns vs. 35 μs) 2 times more (110 ms vs. 46 ms) 4 times more (19 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) similar (36 ms vs. 61 ms) 2 times less (415 kB vs. 1 MB)
unrolled_argmin(length, itr) argmin(length, itr) Tuple 1 nonempty singleton Tuple similar (optimized out) similar (40 ns vs. 40 ns) similar (36 ms vs. 60 ms) 2 times less (449 kB vs. 1 MB)
unrolled_argmin(length, itr) argmin(length, itr) Tuple 1 nonempty non-singleton Tuple similar (8 LLVM lines) similar (49 ns vs. 49 ns) similar (29 ms vs. 35 ms) 2 times less (765 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 (37 ms vs. 65 ms) 2 times less (675 kB vs. 1 MB)
unrolled_argmin(length, itr) argmin(length, itr) Tuple 4 identical nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (78 ms vs. 65 ms) similar (3 MB vs. 1 MB)
unrolled_argmin(length, itr) argmin(length, itr) Tuple 8 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (81 ms vs. 65 ms) similar (3 MB vs. 1 MB)
unrolled_argmin(length, itr) argmin(length, itr) Tuple 32 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (88 ms vs. 65 ms) 2 times more (4 MB vs. 2 MB)
unrolled_argmin(length, itr) argmin(length, itr) Tuple 128 identical nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (128 ms vs. 69 ms) 4 times more (9 MB vs. 2 MB)
unrolled_argmin(length, itr) argmin(length, itr) Tuple 2 identical nonempty non-singleton Tuples similar (8 LLVM lines) similar (49 ns vs. 49 ns) similar (30 ms vs. 37 ms) 2 times less (1 MB vs. 2 MB)
unrolled_argmin(length, itr) argmin(length, itr) Tuple 4 identical nonempty non-singleton Tuples similar (8 LLVM lines) similar (51 ns vs. 49 ns) similar (71 ms vs. 37 ms) similar (3 MB 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 (73 ms vs. 37 ms) similar (4 MB vs. 3 MB)
unrolled_argmin(length, itr) argmin(length, itr) Tuple 32 identical nonempty non-singleton Tuples similar (8 LLVM lines) similar (49 ns vs. 49 ns) similar (79 ms vs. 40 ms) similar (6 MB vs. 5 MB)
unrolled_argmin(length, itr) argmin(length, itr) Tuple 128 identical nonempty non-singleton Tuples similar (8 LLVM lines) similar (49 ns vs. 49 ns) 2 times more (112 ms vs. 40 ms) 6 times more (17 MB vs. 2 MB)
unrolled_argmin(length, itr) argmin(length, itr) Tuple 2 distinct empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (40 ms vs. 66 ms) 2 times less (682 kB vs. 1 MB)
unrolled_argmin(length, itr) argmin(length, itr) Tuple 4 distinct empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (82 ms vs. 75 ms) similar (3 MB vs. 2 MB)
unrolled_argmin(length, itr) argmin(length, itr) Tuple 8 distinct empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (85 ms vs. 96 ms) similar (4 MB vs. 3 MB)
unrolled_argmin(length, itr) argmin(length, itr) Tuple 32 distinct empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (99 ms vs. 96 ms) similar (6 MB vs. 3 MB)
unrolled_argmin(length, itr) argmin(length, itr) Tuple 128 distinct empty & nonempty singleton Tuples better (optimized out vs. 44 LLVM lines) 28 times less (49 ns vs. 1 μs) 2 times more (166 ms vs. 73 ms) 4 times more (12 MB vs. 3 MB)
unrolled_argmin(length, itr) argmin(length, itr) Tuple 2 distinct nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (38 ms vs. 65 ms) 2 times less (762 kB vs. 2 MB)
unrolled_argmin(length, itr) argmin(length, itr) Tuple 4 distinct nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (83 ms vs. 76 ms) similar (3 MB vs. 2 MB)
unrolled_argmin(length, itr) argmin(length, itr) Tuple 8 distinct nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (85 ms vs. 97 ms) similar (4 MB vs. 3 MB)
unrolled_argmin(length, itr) argmin(length, itr) Tuple 32 distinct nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (100 ms vs. 96 ms) similar (6 MB vs. 3 MB)
unrolled_argmin(length, itr) argmin(length, itr) Tuple 128 distinct nonempty singleton Tuples better (optimized out vs. 43 LLVM lines) 33 times less (40 ns vs. 1 μs) 2 times more (166 ms vs. 74 ms) 4 times more (12 MB vs. 3 MB)
unrolled_argmin(length, itr) argmin(length, itr) Tuple 2 distinct nonempty non-singleton Tuples similar (8 LLVM lines) similar (49 ns vs. 49 ns) similar (30 ms vs. 36 ms) similar (1 MB vs. 2 MB)
unrolled_argmin(length, itr) argmin(length, itr) Tuple 4 distinct nonempty non-singleton Tuples similar (8 LLVM lines) similar (49 ns vs. 49 ns) similar (72 ms vs. 38 ms) similar (4 MB vs. 3 MB)
unrolled_argmin(length, itr) argmin(length, itr) Tuple 8 distinct nonempty non-singleton Tuples similar (8 LLVM lines) similar (49 ns vs. 49 ns) similar (76 ms vs. 41 ms) similar (5 MB vs. 5 MB)
unrolled_argmin(length, itr) argmin(length, itr) Tuple 32 distinct nonempty non-singleton Tuples similar (8 LLVM lines) similar (60 ns vs. 49 ns) similar (82 ms vs. 44 ms) similar (8 MB vs. 7 MB)
unrolled_argmin(length, itr) argmin(length, itr) Tuple 128 distinct nonempty non-singleton Tuples better (8 LLVM lines vs. 521 kB allocs) 736 times less (49 ns vs. 36 μs) 2 times more (111 ms vs. 44 ms) 5 times more (19 MB vs. 4 MB)
unrolled_argmax(unrolled_map(length, itr)) argmax(Iterators.map(length, itr)) Tuple 1 empty singleton Tuple similar (optimized out) similar (49 ns vs. 49 ns) 3 times less (34 ms vs. 130 ms) 20 times less (1 MB vs. 23 MB)
unrolled_argmax(unrolled_map(length, itr)) argmax(Iterators.map(length, itr)) Tuple 1 nonempty singleton Tuple similar (optimized out) similar (40 ns vs. 49 ns) 3 times less (34 ms vs. 133 ms) 20 times less (1 MB 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) 3 times less (27 ms vs. 100 ms) 19 times less (1 MB 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 (40 ns vs. 49 ns) 3 times less (38 ms vs. 140 ms) 16 times less (1 MB vs. 24 MB)
unrolled_argmax(unrolled_map(length, itr)) argmax(Iterators.map(length, itr)) Tuple 4 identical nonempty singleton Tuples better (optimized out vs. 6 LLVM lines) similar (49 ns vs. 49 ns) similar (80 ms vs. 139 ms) 6 times less (4 MB vs. 24 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 (84 ms vs. 143 ms) 5 times less (4 MB vs. 24 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. 49 ns) similar (99 ms vs. 140 ms) 2 times less (9 MB vs. 24 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 (40 ns vs. 49 ns) similar (183 ms vs. 140 ms) similar (26 MB vs. 24 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 (40 ns vs. 49 ns) 3 times less (31 ms vs. 113 ms) 16 times less (2 MB vs. 25 MB)
unrolled_argmax(unrolled_map(length, itr)) argmax(Iterators.map(length, itr)) Tuple 4 identical nonempty non-singleton Tuples better (optimized out vs. 6 LLVM lines) similar (49 ns vs. 49 ns) similar (74 ms vs. 111 ms) 6 times less (4 MB 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 (77 ms vs. 113 ms) 5 times less (5 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. 49 ns) similar (92 ms vs. 109 ms) 2 times less (9 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 (175 ms vs. 111 ms) similar (27 MB vs. 25 MB)
unrolled_argmax(unrolled_map(length, itr)) argmax(Iterators.map(length, itr)) Tuple 2 distinct empty & nonempty singleton Tuples better (optimized out vs. 15 LLVM lines) similar (49 ns vs. 60 ns) 3 times less (38 ms vs. 141 ms) 16 times less (1 MB vs. 25 MB)
unrolled_argmax(unrolled_map(length, itr)) argmax(Iterators.map(length, itr)) Tuple 4 distinct empty & nonempty singleton Tuples better (optimized out vs. 38 LLVM lines) 2 times less (40 ns vs. 80 ns) similar (80 ms vs. 149 ms) 6 times less (4 MB vs. 25 MB)
unrolled_argmax(unrolled_map(length, itr)) argmax(Iterators.map(length, itr)) Tuple 8 distinct empty & nonempty singleton Tuples better (optimized out vs. 82 LLVM lines) 3 times less (40 ns vs. 120 ns) similar (84 ms vs. 144 ms) 5 times less (4 MB vs. 25 MB)
unrolled_argmax(unrolled_map(length, itr)) argmax(Iterators.map(length, itr)) Tuple 32 distinct empty & nonempty singleton Tuples better (optimized out vs. 29 LLVM lines) 7 times less (49 ns vs. 380 ns) similar (100 ms vs. 144 ms) 2 times less (9 MB vs. 25 MB)
unrolled_argmax(unrolled_map(length, itr)) argmax(Iterators.map(length, itr)) Tuple 128 distinct empty & nonempty singleton Tuples better (optimized out vs. 29 LLVM lines) 34 times less (40 ns vs. 1 μs) similar (184 ms vs. 142 ms) similar (26 MB vs. 25 MB)
unrolled_argmax(unrolled_map(length, itr)) argmax(Iterators.map(length, itr)) Tuple 2 distinct nonempty singleton Tuples better (optimized out vs. 15 LLVM lines) similar (40 ns vs. 60 ns) 3 times less (39 ms vs. 146 ms) 16 times less (1 MB vs. 25 MB)
unrolled_argmax(unrolled_map(length, itr)) argmax(Iterators.map(length, itr)) Tuple 4 distinct nonempty singleton Tuples better (optimized out vs. 38 LLVM lines) similar (49 ns vs. 80 ns) similar (82 ms vs. 143 ms) 6 times less (4 MB vs. 25 MB)
unrolled_argmax(unrolled_map(length, itr)) argmax(Iterators.map(length, itr)) Tuple 8 distinct nonempty singleton Tuples better (optimized out vs. 82 LLVM lines) 2 times less (49 ns vs. 130 ns) similar (90 ms vs. 146 ms) 5 times less (4 MB vs. 25 MB)
unrolled_argmax(unrolled_map(length, itr)) argmax(Iterators.map(length, itr)) Tuple 32 distinct nonempty singleton Tuples better (optimized out vs. 29 LLVM lines) 9 times less (40 ns vs. 380 ns) similar (102 ms vs. 143 ms) 2 times less (9 MB vs. 25 MB)
unrolled_argmax(unrolled_map(length, itr)) argmax(Iterators.map(length, itr)) Tuple 128 distinct nonempty singleton Tuples better (optimized out vs. 29 LLVM lines) 34 times less (40 ns vs. 1 μs) similar (186 ms vs. 144 ms) similar (26 MB vs. 25 MB)
unrolled_argmax(unrolled_map(length, itr)) argmax(Iterators.map(length, itr)) Tuple 2 distinct nonempty non-singleton Tuples better (optimized out vs. 64 B allocs) similar (49 ns vs. 80 ns) 3 times less (30 ms vs. 113 ms) 16 times less (2 MB vs. 25 MB)
unrolled_argmax(unrolled_map(length, itr)) argmax(Iterators.map(length, itr)) Tuple 4 distinct nonempty non-singleton Tuples better (optimized out vs. 400 B allocs) 3 times less (49 ns vs. 150 ns) similar (74 ms vs. 114 ms) 6 times less (4 MB vs. 25 MB)
unrolled_argmax(unrolled_map(length, itr)) argmax(Iterators.map(length, itr)) Tuple 8 distinct nonempty non-singleton Tuples better (optimized out vs. 2 kB allocs) 5 times less (49 ns vs. 261 ns) similar (77 ms vs. 120 ms) 5 times less (4 MB vs. 25 MB)
unrolled_argmax(unrolled_map(length, itr)) argmax(Iterators.map(length, itr)) Tuple 32 distinct nonempty non-singleton Tuples better (optimized out vs. 32 kB allocs) 52 times less (40 ns vs. 2 μs) similar (91 ms vs. 114 ms) 2 times less (9 MB vs. 25 MB)
unrolled_argmax(unrolled_map(length, itr)) argmax(Iterators.map(length, itr)) Tuple 128 distinct nonempty non-singleton Tuples better (optimized out vs. 521 kB allocs) 869 times less (40 ns vs. 35 μs) similar (177 ms vs. 115 ms) similar (27 MB vs. 25 MB)
unrolled_argmin(unrolled_map(length, itr)) argmin(Iterators.map(length, itr)) Tuple 1 empty singleton Tuple similar (optimized out) similar (49 ns vs. 49 ns) 3 times less (34 ms vs. 123 ms) 19 times less (1 MB vs. 22 MB)
unrolled_argmin(unrolled_map(length, itr)) argmin(Iterators.map(length, itr)) Tuple 1 nonempty singleton Tuple similar (optimized out) similar (49 ns vs. 49 ns) 3 times less (35 ms vs. 120 ms) 19 times less (1 MB vs. 22 MB)
unrolled_argmin(unrolled_map(length, itr)) argmin(Iterators.map(length, itr)) Tuple 1 nonempty non-singleton Tuple similar (optimized out) similar (49 ns vs. 40 ns) 3 times less (27 ms vs. 93 ms) 19 times less (1 MB 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 (49 ns vs. 49 ns) 3 times less (38 ms vs. 131 ms) 16 times less (1 MB vs. 24 MB)
unrolled_argmin(unrolled_map(length, itr)) argmin(Iterators.map(length, itr)) Tuple 4 identical nonempty singleton Tuples better (optimized out vs. 6 LLVM lines) similar (49 ns vs. 49 ns) similar (83 ms vs. 133 ms) 6 times less (4 MB 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 (49 ns vs. 49 ns) similar (83 ms vs. 132 ms) 5 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 (49 ns vs. 49 ns) similar (104 ms vs. 133 ms) 2 times less (9 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 (182 ms vs. 132 ms) similar (26 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 (30 ms vs. 106 ms) 16 times less (2 MB vs. 24 MB)
unrolled_argmin(unrolled_map(length, itr)) argmin(Iterators.map(length, itr)) Tuple 4 identical nonempty non-singleton Tuples better (optimized out vs. 6 LLVM lines) similar (49 ns vs. 49 ns) similar (75 ms vs. 101 ms) 6 times less (4 MB vs. 24 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 (49 ns vs. 49 ns) similar (76 ms vs. 101 ms) 5 times less (5 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 (49 ns vs. 49 ns) similar (93 ms vs. 105 ms) 2 times less (9 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 (176 ms vs. 102 ms) similar (27 MB vs. 24 MB)
unrolled_argmin(unrolled_map(length, itr)) argmin(Iterators.map(length, itr)) Tuple 2 distinct empty & nonempty singleton Tuples better (optimized out vs. 7 LLVM lines) similar (49 ns vs. 60 ns) 3 times less (39 ms vs. 133 ms) 16 times less (1 MB vs. 24 MB)
unrolled_argmin(unrolled_map(length, itr)) argmin(Iterators.map(length, itr)) Tuple 4 distinct empty & nonempty singleton Tuples better (optimized out vs. 38 LLVM lines) similar (49 ns vs. 80 ns) similar (80 ms vs. 136 ms) 6 times less (4 MB vs. 24 MB)
unrolled_argmin(unrolled_map(length, itr)) argmin(Iterators.map(length, itr)) Tuple 8 distinct empty & nonempty singleton Tuples better (optimized out vs. 82 LLVM lines) 3 times less (40 ns vs. 120 ns) similar (87 ms vs. 145 ms) 5 times less (4 MB vs. 24 MB)
unrolled_argmin(unrolled_map(length, itr)) argmin(Iterators.map(length, itr)) Tuple 32 distinct empty & nonempty singleton Tuples better (optimized out vs. 29 LLVM lines) 7 times less (49 ns vs. 380 ns) similar (103 ms vs. 137 ms) 2 times less (9 MB vs. 24 MB)
unrolled_argmin(unrolled_map(length, itr)) argmin(Iterators.map(length, itr)) Tuple 128 distinct empty & nonempty singleton Tuples better (optimized out vs. 29 LLVM lines) 34 times less (40 ns vs. 1 μs) similar (186 ms vs. 133 ms) similar (26 MB vs. 24 MB)
unrolled_argmin(unrolled_map(length, itr)) argmin(Iterators.map(length, itr)) Tuple 2 distinct nonempty singleton Tuples better (optimized out vs. 7 LLVM lines) similar (49 ns vs. 60 ns) 3 times less (39 ms vs. 133 ms) 16 times less (1 MB vs. 24 MB)
unrolled_argmin(unrolled_map(length, itr)) argmin(Iterators.map(length, itr)) Tuple 4 distinct nonempty singleton Tuples better (optimized out vs. 38 LLVM lines) 2 times less (40 ns vs. 80 ns) similar (82 ms vs. 134 ms) 6 times less (4 MB vs. 24 MB)
unrolled_argmin(unrolled_map(length, itr)) argmin(Iterators.map(length, itr)) Tuple 8 distinct nonempty singleton Tuples better (optimized out vs. 82 LLVM lines) 3 times less (40 ns vs. 120 ns) similar (86 ms vs. 135 ms) 5 times less (4 MB vs. 24 MB)
unrolled_argmin(unrolled_map(length, itr)) argmin(Iterators.map(length, itr)) Tuple 32 distinct nonempty singleton Tuples better (optimized out vs. 29 LLVM lines) 9 times less (40 ns vs. 390 ns) similar (102 ms vs. 136 ms) 2 times less (9 MB vs. 24 MB)
unrolled_argmin(unrolled_map(length, itr)) argmin(Iterators.map(length, itr)) Tuple 128 distinct nonempty singleton Tuples better (optimized out vs. 29 LLVM lines) 28 times less (49 ns vs. 1 μs) similar (183 ms vs. 135 ms) similar (26 MB vs. 24 MB)
unrolled_argmin(unrolled_map(length, itr)) argmin(Iterators.map(length, itr)) Tuple 2 distinct nonempty non-singleton Tuples better (optimized out vs. 64 B allocs) similar (49 ns vs. 80 ns) 3 times less (31 ms vs. 104 ms) 15 times less (2 MB vs. 25 MB)
unrolled_argmin(unrolled_map(length, itr)) argmin(Iterators.map(length, itr)) Tuple 4 distinct nonempty non-singleton Tuples better (optimized out vs. 400 B allocs) 2 times less (49 ns vs. 140 ns) similar (77 ms vs. 108 ms) 6 times less (4 MB vs. 24 MB)
unrolled_argmin(unrolled_map(length, itr)) argmin(Iterators.map(length, itr)) Tuple 8 distinct nonempty non-singleton Tuples better (optimized out vs. 2 kB allocs) 5 times less (49 ns vs. 260 ns) similar (77 ms vs. 109 ms) 5 times less (4 MB vs. 24 MB)
unrolled_argmin(unrolled_map(length, itr)) argmin(Iterators.map(length, itr)) Tuple 32 distinct nonempty non-singleton Tuples better (optimized out vs. 32 kB allocs) 51 times less (40 ns vs. 2 μs) similar (95 ms vs. 108 ms) 2 times less (9 MB vs. 24 MB)
unrolled_argmin(unrolled_map(length, itr)) argmin(Iterators.map(length, itr)) Tuple 128 distinct nonempty non-singleton Tuples better (optimized out vs. 521 kB allocs) 889 times less (40 ns vs. 36 μs) similar (177 ms vs. 105 ms) similar (27 MB vs. 25 MB)
unrolled_findfirst(!isempty, itr) findfirst(!isempty, itr) Tuple 1 empty singleton Tuple similar (optimized out) similar (49 ns vs. 40 ns) similar (32 ms vs. 29 ms) similar (197 kB vs. 180 kB)
unrolled_findfirst(!isempty, itr) findfirst(!isempty, itr) Tuple 1 nonempty singleton Tuple similar (optimized out) similar (40 ns vs. 40 ns) similar (33 ms vs. 32 ms) similar (237 kB vs. 244 kB)
unrolled_findfirst(!isempty, itr) findfirst(!isempty, itr) Tuple 1 nonempty non-singleton Tuple similar (optimized out) similar (49 ns vs. 49 ns) similar (30 ms vs. 30 ms) similar (211 kB vs. 233 kB)
unrolled_findfirst(!isempty, itr) findfirst(!isempty, itr) Tuple 2 identical nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (34 ms vs. 34 ms) similar (240 kB vs. 403 kB)
unrolled_findfirst(!isempty, itr) findfirst(!isempty, itr) Tuple 4 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (51 ms vs. 34 ms) 2 times less (305 kB vs. 702 kB)
unrolled_findfirst(!isempty, itr) findfirst(!isempty, itr) Tuple 8 identical nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (52 ms vs. 35 ms) 3 times less (326 kB vs. 1 MB)
unrolled_findfirst(!isempty, itr) findfirst(!isempty, itr) Tuple 32 identical nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (55 ms vs. 28 ms) similar (453 kB vs. 267 kB)
unrolled_findfirst(!isempty, itr) findfirst(!isempty, itr) Tuple 128 identical nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) 2 times more (65 ms vs. 29 ms) 3 times more (960 kB vs. 267 kB)
unrolled_findfirst(!isempty, itr) findfirst(!isempty, itr) Tuple 2 identical nonempty non-singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (31 ms vs. 33 ms) similar (214 kB vs. 417 kB)
unrolled_findfirst(!isempty, itr) findfirst(!isempty, itr) Tuple 4 identical nonempty non-singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (48 ms vs. 34 ms) 3 times less (303 kB vs. 930 kB)
unrolled_findfirst(!isempty, itr) findfirst(!isempty, itr) Tuple 8 identical nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (48 ms vs. 36 ms) 5 times less (389 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. 30 ms) similar (452 kB vs. 272 kB)
unrolled_findfirst(!isempty, itr) findfirst(!isempty, itr) Tuple 128 identical nonempty non-singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) 2 times more (60 ms vs. 30 ms) 3 times more (959 kB vs. 272 kB)
unrolled_findfirst(!isempty, itr) findfirst(!isempty, itr) Tuple 2 distinct empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (36 ms vs. 33 ms) similar (285 kB vs. 451 kB)
unrolled_findfirst(!isempty, itr) findfirst(!isempty, itr) Tuple 4 distinct empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (51 ms vs. 37 ms) 2 times less (351 kB vs. 780 kB)
unrolled_findfirst(!isempty, itr) findfirst(!isempty, itr) Tuple 8 distinct empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (51 ms vs. 35 ms) 3 times less (372 kB vs. 1 MB)
unrolled_findfirst(!isempty, itr) findfirst(!isempty, itr) Tuple 32 distinct empty & nonempty singleton Tuples better (optimized out vs. 31 LLVM lines) similar (49 ns vs. 80 ns) similar (54 ms vs. 34 ms) similar (500 kB vs. 605 kB)
unrolled_findfirst(!isempty, itr) findfirst(!isempty, itr) Tuple 128 distinct empty & nonempty singleton Tuples better (optimized out vs. 31 LLVM lines) similar (49 ns vs. 80 ns) similar (64 ms vs. 35 ms) similar (1006 kB vs. 605 kB)
unrolled_findfirst(!isempty, itr) findfirst(!isempty, itr) Tuple 2 distinct nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (35 ms vs. 39 ms) similar (240 kB vs. 403 kB)
unrolled_findfirst(!isempty, itr) findfirst(!isempty, itr) Tuple 4 distinct nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (52 ms vs. 34 ms) 2 times less (306 kB vs. 703 kB)
unrolled_findfirst(!isempty, itr) findfirst(!isempty, itr) Tuple 8 distinct nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (55 ms vs. 35 ms) 4 times less (327 kB vs. 1 MB)
unrolled_findfirst(!isempty, itr) findfirst(!isempty, itr) Tuple 32 distinct nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (54 ms vs. 29 ms) similar (454 kB vs. 268 kB)
unrolled_findfirst(!isempty, itr) findfirst(!isempty, itr) Tuple 128 distinct nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) 2 times more (65 ms vs. 30 ms) 3 times more (961 kB vs. 268 kB)
unrolled_findfirst(!isempty, itr) findfirst(!isempty, itr) Tuple 2 distinct nonempty non-singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (31 ms vs. 39 ms) 2 times less (239 kB vs. 498 kB)
unrolled_findfirst(!isempty, itr) findfirst(!isempty, itr) Tuple 4 distinct nonempty non-singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (50 ms vs. 35 ms) 3 times less (304 kB vs. 1 MB)
unrolled_findfirst(!isempty, itr) findfirst(!isempty, itr) Tuple 8 distinct nonempty non-singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (49 ms vs. 37 ms) 6 times less (326 kB vs. 2 MB)
unrolled_findfirst(!isempty, itr) findfirst(!isempty, itr) Tuple 32 distinct nonempty non-singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (51 ms vs. 29 ms) similar (453 kB vs. 273 kB)
unrolled_findfirst(!isempty, itr) findfirst(!isempty, itr) Tuple 128 distinct nonempty non-singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) 2 times more (63 ms vs. 29 ms) 3 times more (960 kB vs. 276 kB)
unrolled_findlast(isempty, itr) findlast(isempty, itr) Tuple 1 empty singleton Tuple similar (optimized out) similar (40 ns vs. 49 ns) similar (40 ms vs. 38 ms) similar (356 kB vs. 343 kB)
unrolled_findlast(isempty, itr) findlast(isempty, itr) Tuple 1 nonempty singleton Tuple similar (optimized out) similar (40 ns vs. 40 ns) similar (35 ms vs. 40 ms) similar (300 kB vs. 397 kB)
unrolled_findlast(isempty, itr) findlast(isempty, itr) Tuple 1 nonempty non-singleton Tuple similar (optimized out) similar (40 ns vs. 49 ns) similar (28 ms vs. 35 ms) similar (338 kB vs. 469 kB)
unrolled_findlast(isempty, itr) findlast(isempty, itr) Tuple 2 identical nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (35 ms vs. 41 ms) similar (305 kB vs. 559 kB)
unrolled_findlast(isempty, itr) findlast(isempty, itr) Tuple 4 identical nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (54 ms vs. 54 ms) 2 times less (374 kB vs. 930 kB)
unrolled_findlast(isempty, itr) findlast(isempty, itr) Tuple 8 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (53 ms vs. 54 ms) 3 times less (405 kB vs. 2 MB)
unrolled_findlast(isempty, itr) findlast(isempty, itr) Tuple 32 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (56 ms vs. 39 ms) similar (590 kB vs. 689 kB)
unrolled_findlast(isempty, itr) findlast(isempty, itr) Tuple 128 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (66 ms vs. 38 ms) similar (1 MB vs. 689 kB)
unrolled_findlast(isempty, itr) findlast(isempty, itr) Tuple 2 identical nonempty non-singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (29 ms vs. 38 ms) similar (350 kB vs. 667 kB)
unrolled_findlast(isempty, itr) findlast(isempty, itr) Tuple 4 identical nonempty non-singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (46 ms vs. 57 ms) 2 times less (457 kB vs. 1 MB)
unrolled_findlast(isempty, itr) findlast(isempty, itr) Tuple 8 identical nonempty non-singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (46 ms vs. 52 ms) 4 times less (513 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 (50 ms vs. 41 ms) similar (847 kB vs. 694 kB)
unrolled_findlast(isempty, itr) findlast(isempty, itr) Tuple 128 identical nonempty non-singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (61 ms vs. 40 ms) 3 times more (2 MB vs. 695 kB)
unrolled_findlast(isempty, itr) findlast(isempty, itr) Tuple 2 distinct empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (41 ms vs. 36 ms) similar (394 kB vs. 465 kB)
unrolled_findlast(isempty, itr) findlast(isempty, itr) Tuple 4 distinct empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (59 ms vs. 40 ms) similar (473 kB vs. 924 kB)
unrolled_findlast(isempty, itr) findlast(isempty, itr) Tuple 8 distinct empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (58 ms vs. 38 ms) 3 times less (474 kB vs. 1 MB)
unrolled_findlast(isempty, itr) findlast(isempty, itr) Tuple 32 distinct empty & nonempty singleton Tuples better (optimized out vs. 30 LLVM lines) similar (49 ns vs. 89 ns) similar (61 ms vs. 42 ms) similar (621 kB vs. 708 kB)
unrolled_findlast(isempty, itr) findlast(isempty, itr) Tuple 128 distinct empty & nonempty singleton Tuples better (optimized out vs. 30 LLVM lines) similar (49 ns vs. 69 ns) similar (73 ms vs. 41 ms) similar (1 MB vs. 708 kB)
unrolled_findlast(isempty, itr) findlast(isempty, itr) Tuple 2 distinct nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (35 ms vs. 38 ms) similar (309 kB vs. 520 kB)
unrolled_findlast(isempty, itr) findlast(isempty, itr) Tuple 4 distinct nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (52 ms vs. 39 ms) 2 times less (387 kB vs. 895 kB)
unrolled_findlast(isempty, itr) findlast(isempty, itr) Tuple 8 distinct nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (54 ms vs. 40 ms) 3 times less (430 kB vs. 2 MB)
unrolled_findlast(isempty, itr) findlast(isempty, itr) Tuple 32 distinct nonempty singleton Tuples better (optimized out vs. 30 LLVM lines) 9 times less (40 ns vs. 380 ns) similar (57 ms vs. 41 ms) similar (615 kB vs. 708 kB)
unrolled_findlast(isempty, itr) findlast(isempty, itr) Tuple 128 distinct nonempty singleton Tuples better (optimized out vs. 30 LLVM lines) 34 times less (40 ns vs. 1 μs) similar (66 ms vs. 40 ms) similar (1 MB vs. 708 kB)
unrolled_findlast(isempty, itr) findlast(isempty, itr) Tuple 2 distinct nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (29 ms vs. 37 ms) similar (379 kB vs. 719 kB)
unrolled_findlast(isempty, itr) findlast(isempty, itr) Tuple 4 distinct nonempty non-singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (46 ms vs. 40 ms) 2 times less (470 kB vs. 1 MB)
unrolled_findlast(isempty, itr) findlast(isempty, itr) Tuple 8 distinct nonempty non-singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (47 ms vs. 46 ms) 5 times less (538 kB vs. 3 MB)
unrolled_findlast(isempty, itr) findlast(isempty, itr) Tuple 32 distinct nonempty non-singleton Tuples better (optimized out vs. 33 kB allocs) 53 times less (40 ns vs. 2 μs) similar (49 ms vs. 42 ms) similar (872 kB vs. 750 kB)
unrolled_findlast(isempty, itr) findlast(isempty, itr) Tuple 128 distinct nonempty non-singleton Tuples better (optimized out vs. 525 kB allocs) 851 times less (40 ns vs. 34 μs) similar (61 ms vs. 43 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 (47 ms vs. 43 ms) similar (271 kB vs. 200 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 (49 ns vs. 40 ns) similar (49 ms vs. 46 ms) similar (304 kB vs. 265 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 (45 ms vs. 44 ms) similar (313 kB vs. 254 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 (48 ms vs. 47 ms) similar (325 kB vs. 424 kB)
unrolled_argfirst((x->length(x) >= length(itr[end])), itr) itr[findfirst((x->length(x) >= length(itr[end])), itr)] Tuple 4 identical nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (67 ms vs. 47 ms) similar (431 kB vs. 723 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 (49 ns vs. 49 ns) similar (70 ms vs. 49 ms) 2 times less (536 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 (40 ns vs. 49 ns) similar (86 ms vs. 50 ms) 2 times more (1 MB vs. 395 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 (162 ms vs. 49 ms) 9 times more (4 MB vs. 395 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 (49 ms vs. 46 ms) similar (354 kB vs. 437 kB)
unrolled_argfirst((x->length(x) >= length(itr[end])), itr) itr[findfirst((x->length(x) >= length(itr[end])), itr)] Tuple 4 identical nonempty non-singleton Tuples similar (8 LLVM lines) similar (49 ns vs. 49 ns) similar (66 ms vs. 48 ms) similar (514 kB vs. 951 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 (50 ns vs. 49 ns) similar (69 ms vs. 49 ms) 2 times less (755 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 (95 ms vs. 50 ms) 4 times more (2 MB vs. 399 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 (49 ns vs. 49 ns) 3 times more (181 ms vs. 50 ms) 14 times more (6 MB vs. 400 kB)
unrolled_argfirst((x->length(x) >= length(itr[end])), itr) itr[findfirst((x->length(x) >= length(itr[end])), itr)] Tuple 2 distinct empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (54 ms vs. 52 ms) similar (369 kB vs. 465 kB)
unrolled_argfirst((x->length(x) >= length(itr[end])), itr) itr[findfirst((x->length(x) >= length(itr[end])), itr)] Tuple 4 distinct empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (79 ms vs. 67 ms) similar (570 kB vs. 1014 kB)
unrolled_argfirst((x->length(x) >= length(itr[end])), itr) itr[findfirst((x->length(x) >= length(itr[end])), itr)] Tuple 8 distinct empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) 2 times more (95 ms vs. 46 ms) similar (813 kB vs. 1 MB)
unrolled_argfirst((x->length(x) >= length(itr[end])), itr) itr[findfirst((x->length(x) >= length(itr[end])), itr)] Tuple 32 distinct empty & nonempty singleton Tuples better (optimized out vs. type-unstable) 2 times less (49 ns vs. 100 ns) similar (116 ms vs. 67 ms) 2 times more (1 MB vs. 580 kB)
unrolled_argfirst((x->length(x) >= length(itr[end])), itr) itr[findfirst((x->length(x) >= length(itr[end])), itr)] Tuple 128 distinct empty & nonempty singleton Tuples better (optimized out vs. type-unstable) 2 times less (40 ns vs. 80 ns) 3 times more (206 ms vs. 54 ms) 8 times more (4 MB vs. 498 kB)
unrolled_argfirst((x->length(x) >= length(itr[end])), itr) itr[findfirst((x->length(x) >= length(itr[end])), itr)] Tuple 2 distinct nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (53 ms vs. 53 ms) similar (374 kB vs. 465 kB)
unrolled_argfirst((x->length(x) >= length(itr[end])), itr) itr[findfirst((x->length(x) >= length(itr[end])), itr)] Tuple 4 distinct nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (80 ms vs. 68 ms) similar (574 kB vs. 1019 kB)
unrolled_argfirst((x->length(x) >= length(itr[end])), itr) itr[findfirst((x->length(x) >= length(itr[end])), itr)] Tuple 8 distinct nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (97 ms vs. 49 ms) similar (817 kB vs. 1 MB)
unrolled_argfirst((x->length(x) >= length(itr[end])), itr) itr[findfirst((x->length(x) >= length(itr[end])), itr)] Tuple 32 distinct nonempty singleton Tuples better (optimized out vs. type-unstable) 2 times less (40 ns vs. 100 ns) similar (116 ms vs. 63 ms) 2 times more (1 MB vs. 584 kB)
unrolled_argfirst((x->length(x) >= length(itr[end])), itr) itr[findfirst((x->length(x) >= length(itr[end])), itr)] Tuple 128 distinct nonempty singleton Tuples better (optimized out vs. type-unstable) similar (49 ns vs. 80 ns) 3 times more (196 ms vs. 56 ms) 7 times more (4 MB vs. 502 kB)
unrolled_argfirst((x->length(x) >= length(itr[end])), itr) itr[findfirst((x->length(x) >= length(itr[end])), itr)] Tuple 2 distinct nonempty non-singleton Tuples similar (8 LLVM lines) similar (49 ns vs. 49 ns) similar (52 ms vs. 50 ms) similar (436 kB vs. 555 kB)
unrolled_argfirst((x->length(x) >= length(itr[end])), itr) itr[findfirst((x->length(x) >= length(itr[end])), itr)] Tuple 4 distinct nonempty non-singleton Tuples similar (8 LLVM lines) similar (49 ns vs. 49 ns) similar (79 ms vs. 68 ms) 2 times less (691 kB vs. 1 MB)
unrolled_argfirst((x->length(x) >= length(itr[end])), itr) itr[findfirst((x->length(x) >= length(itr[end])), itr)] Tuple 8 distinct nonempty non-singleton Tuples similar (8 LLVM lines) similar (49 ns vs. 49 ns) 2 times more (104 ms vs. 51 ms) 2 times less (1 MB vs. 2 MB)
unrolled_argfirst((x->length(x) >= length(itr[end])), itr) itr[findfirst((x->length(x) >= length(itr[end])), itr)] Tuple 32 distinct nonempty non-singleton Tuples better (8 LLVM lines vs. 5 kB allocs) 4 times less (60 ns vs. 280 ns) similar (126 ms vs. 65 ms) 3 times more (2 MB vs. 558 kB)
unrolled_argfirst((x->length(x) >= length(itr[end])), itr) itr[findfirst((x->length(x) >= length(itr[end])), itr)] Tuple 128 distinct nonempty non-singleton Tuples better (8 LLVM lines vs. 12 kB allocs) 13 times less (49 ns vs. 661 ns) 4 times more (248 ms vs. 55 ms) 12 times more (6 MB vs. 492 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. 40 ns) similar (51 ms vs. 51 ms) similar (408 kB vs. 404 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 (40 ns vs. 49 ns) similar (56 ms vs. 54 ms) similar (441 kB vs. 463 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 (49 ns vs. 49 ns) similar (45 ms vs. 58 ms) similar (527 kB vs. 530 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 (40 ns vs. 40 ns) similar (51 ms vs. 54 ms) similar (465 kB vs. 625 kB)
unrolled_arglast((x->length(x) >= length(itr[1])), itr) itr[findlast((x->length(x) >= length(itr[1])), itr)] Tuple 4 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (72 ms vs. 67 ms) similar (581 kB vs. 950 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. 40 ns) similar (73 ms vs. 67 ms) 2 times less (702 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 (49 ns vs. 49 ns) similar (89 ms vs. 60 ms) similar (1 MB vs. 758 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 (40 ns vs. 40 ns) 2 times more (161 ms vs. 59 ms) 5 times more (4 MB vs. 758 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 (47 ms vs. 51 ms) similar (583 kB vs. 728 kB)
unrolled_arglast((x->length(x) >= length(itr[1])), itr) itr[findlast((x->length(x) >= length(itr[1])), itr)] Tuple 4 identical nonempty non-singleton Tuples similar (9 LLVM lines) similar (49 ns vs. 49 ns) similar (67 ms vs. 69 ms) similar (778 kB vs. 1 MB)
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 (49 ns vs. 49 ns) similar (70 ms vs. 66 ms) 2 times less (1005 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 (49 ns vs. 49 ns) similar (90 ms vs. 56 ms) 3 times more (2 MB vs. 762 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 (49 ns vs. 49 ns) 3 times more (188 ms vs. 57 ms) 10 times more (8 MB vs. 763 kB)
unrolled_arglast((x->length(x) >= length(itr[1])), itr) itr[findlast((x->length(x) >= length(itr[1])), itr)] Tuple 2 distinct empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (56 ms vs. 49 ms) similar (508 kB vs. 531 kB)
unrolled_arglast((x->length(x) >= length(itr[1])), itr) itr[findlast((x->length(x) >= length(itr[1])), itr)] Tuple 4 distinct empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (82 ms vs. 49 ms) similar (714 kB vs. 852 kB)
unrolled_arglast((x->length(x) >= length(itr[1])), itr) itr[findlast((x->length(x) >= length(itr[1])), itr)] Tuple 8 distinct empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (98 ms vs. 52 ms) similar (965 kB vs. 1 MB)
unrolled_arglast((x->length(x) >= length(itr[1])), itr) itr[findlast((x->length(x) >= length(itr[1])), itr)] Tuple 32 distinct empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) 2 times more (117 ms vs. 56 ms) 2 times more (2 MB vs. 822 kB)
unrolled_arglast((x->length(x) >= length(itr[1])), itr) itr[findlast((x->length(x) >= length(itr[1])), itr)] Tuple 128 distinct empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) 3 times more (200 ms vs. 57 ms) 5 times more (5 MB vs. 822 kB)
unrolled_arglast((x->length(x) >= length(itr[1])), itr) itr[findlast((x->length(x) >= length(itr[1])), itr)] Tuple 2 distinct nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (57 ms vs. 52 ms) similar (513 kB vs. 586 kB)
unrolled_arglast((x->length(x) >= length(itr[1])), itr) itr[findlast((x->length(x) >= length(itr[1])), itr)] Tuple 4 distinct nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (82 ms vs. 53 ms) similar (718 kB vs. 907 kB)
unrolled_arglast((x->length(x) >= length(itr[1])), itr) itr[findlast((x->length(x) >= length(itr[1])), itr)] Tuple 8 distinct nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (97 ms vs. 55 ms) similar (969 kB vs. 2 MB)
unrolled_arglast((x->length(x) >= length(itr[1])), itr) itr[findlast((x->length(x) >= length(itr[1])), itr)] Tuple 32 distinct nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) 2 times more (117 ms vs. 56 ms) 2 times more (2 MB vs. 822 kB)
unrolled_arglast((x->length(x) >= length(itr[1])), itr) itr[findlast((x->length(x) >= length(itr[1])), itr)] Tuple 128 distinct nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) 3 times more (200 ms vs. 56 ms) 5 times more (5 MB vs. 822 kB)
unrolled_arglast((x->length(x) >= length(itr[1])), itr) itr[findlast((x->length(x) >= length(itr[1])), itr)] Tuple 2 distinct nonempty non-singleton Tuples similar (8 LLVM lines) similar (49 ns vs. 49 ns) similar (53 ms vs. 51 ms) similar (663 kB vs. 781 kB)
unrolled_arglast((x->length(x) >= length(itr[1])), itr) itr[findlast((x->length(x) >= length(itr[1])), itr)] Tuple 4 distinct nonempty non-singleton Tuples similar (8 LLVM lines) similar (60 ns vs. 49 ns) similar (79 ms vs. 53 ms) similar (947 kB vs. 1 MB)
unrolled_arglast((x->length(x) >= length(itr[1])), itr) itr[findlast((x->length(x) >= length(itr[1])), itr)] Tuple 8 distinct nonempty non-singleton Tuples similar (9 LLVM lines) similar (49 ns vs. 49 ns) similar (100 ms vs. 58 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 distinct nonempty non-singleton Tuples similar (8 LLVM lines) similar (60 ns vs. 50 ns) 2 times more (128 ms vs. 58 ms) 3 times more (3 MB vs. 806 kB)
unrolled_arglast((x->length(x) >= length(itr[1])), itr) itr[findlast((x->length(x) >= length(itr[1])), itr)] Tuple 128 distinct nonempty non-singleton Tuples similar (8 LLVM lines) similar (49 ns vs. 49 ns) 4 times more (251 ms vs. 57 ms) 10 times more (8 MB vs. 812 kB)
unrolled_filter(!isempty, itr) filter(!isempty, itr) Tuple 1 empty singleton Tuple similar (optimized out) similar (40 ns vs. 49 ns) similar (28 ms vs. 29 ms) 3 times less (166 kB vs. 602 kB)
unrolled_filter(!isempty, itr) filter(!isempty, itr) Tuple 1 nonempty singleton Tuple similar (optimized out) similar (40 ns vs. 49 ns) similar (28 ms vs. 29 ms) 2 times less (243 kB vs. 639 kB)
unrolled_filter(!isempty, itr) filter(!isempty, itr) Tuple 1 nonempty non-singleton Tuple similar (8 LLVM lines) similar (49 ns vs. 49 ns) similar (29 ms vs. 34 ms) similar (444 kB vs. 826 kB)
unrolled_filter(!isempty, itr) filter(!isempty, itr) Tuple 2 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (28 ms vs. 29 ms) 2 times less (296 kB vs. 702 kB)
unrolled_filter(!isempty, itr) filter(!isempty, itr) Tuple 4 identical nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (52 ms vs. 28 ms) 2 times more (2 MB vs. 828 kB)
unrolled_filter(!isempty, itr) filter(!isempty, itr) Tuple 8 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (55 ms vs. 29 ms) 2 times more (2 MB vs. 933 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. 611 ns) similar (58 ms vs. 113 ms) similar (4 MB vs. 7 MB)
unrolled_filter(!isempty, itr) filter(!isempty, itr) Tuple 128 identical nonempty singleton Tuples better (optimized out vs. 128 B allocs) 47 times less (40 ns vs. 2 μs) similar (74 ms vs. 111 ms) similar (10 MB vs. 7 MB)
unrolled_filter(!isempty, itr) filter(!isempty, itr) Tuple 2 identical nonempty non-singleton Tuples similar (8 LLVM lines) similar (49 ns vs. 60 ns) similar (29 ms vs. 34 ms) similar (630 kB vs. 956 kB)
unrolled_filter(!isempty, itr) filter(!isempty, itr) Tuple 4 identical nonempty non-singleton Tuples similar (8 LLVM lines) similar (60 ns vs. 49 ns) similar (55 ms vs. 34 ms) 2 times more (3 MB vs. 1 MB)
unrolled_filter(!isempty, itr) filter(!isempty, itr) Tuple 8 identical nonempty non-singleton Tuples similar (12 LLVM lines) similar (50 ns vs. 60 ns) similar (57 ms vs. 34 ms) 2 times more (4 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 (70 ms vs. 134 ms) similar (10 MB vs. 7 MB)
unrolled_filter(!isempty, itr) filter(!isempty, itr) Tuple 128 identical nonempty non-singleton Tuples better (1394 LLVM lines vs. 5 kB allocs) 60 times more (290 μs vs. 5 μs) similar (172 ms vs. 147 ms) 4 times more (29 MB vs. 7 MB)
unrolled_filter(!isempty, itr) filter(!isempty, itr) Tuple 2 distinct empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (28 ms vs. 28 ms) 2 times less (296 kB vs. 779 kB)
unrolled_filter(!isempty, itr) filter(!isempty, itr) Tuple 4 distinct empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (53 ms vs. 28 ms) 2 times more (2 MB vs. 998 kB)
unrolled_filter(!isempty, itr) filter(!isempty, itr) Tuple 8 distinct empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (53 ms vs. 29 ms) similar (3 MB vs. 1 MB)
unrolled_filter(!isempty, itr) filter(!isempty, itr) Tuple 32 distinct empty & nonempty singleton Tuples better (optimized out vs. 880 B allocs) 23 times less (40 ns vs. 931 ns) 2 times less (57 ms vs. 140 ms) 2 times less (4 MB vs. 8 MB)
unrolled_filter(!isempty, itr) filter(!isempty, itr) Tuple 128 distinct empty & nonempty singleton Tuples better (optimized out vs. 3 kB allocs) 62 times less (49 ns vs. 3 μs) similar (73 ms vs. 145 ms) similar (9 MB vs. 8 MB)
unrolled_filter(!isempty, itr) filter(!isempty, itr) Tuple 2 distinct nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (28 ms vs. 28 ms) 2 times less (343 kB vs. 786 kB)
unrolled_filter(!isempty, itr) filter(!isempty, itr) Tuple 4 distinct nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (53 ms vs. 28 ms) 2 times more (2 MB vs. 1006 kB)
unrolled_filter(!isempty, itr) filter(!isempty, itr) Tuple 8 distinct nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (53 ms vs. 29 ms) similar (3 MB vs. 1 MB)
unrolled_filter(!isempty, itr) filter(!isempty, itr) Tuple 32 distinct nonempty singleton Tuples better (optimized out vs. 640 B allocs) 93 times less (40 ns vs. 4 μs) 2 times less (57 ms vs. 169 ms) 2 times less (4 MB vs. 9 MB)
unrolled_filter(!isempty, itr) filter(!isempty, itr) Tuple 128 distinct nonempty singleton Tuples better (optimized out vs. 2 kB allocs) 312 times less (49 ns vs. 15 μs) 2 times less (75 ms vs. 169 ms) similar (10 MB vs. 9 MB)
unrolled_filter(!isempty, itr) filter(!isempty, itr) Tuple 2 distinct nonempty non-singleton Tuples similar (11 LLVM lines) similar (49 ns vs. 50 ns) similar (29 ms vs. 33 ms) similar (702 kB vs. 1 MB)
unrolled_filter(!isempty, itr) filter(!isempty, itr) Tuple 4 distinct nonempty non-singleton Tuples similar (17 LLVM lines) similar (49 ns vs. 60 ns) similar (55 ms vs. 34 ms) 2 times more (3 MB vs. 1 MB)
unrolled_filter(!isempty, itr) filter(!isempty, itr) Tuple 8 distinct nonempty non-singleton Tuples similar (30 LLVM lines) similar (60 ns vs. 60 ns) similar (60 ms vs. 38 ms) similar (4 MB vs. 2 MB)
unrolled_filter(!isempty, itr) filter(!isempty, itr) Tuple 32 distinct nonempty non-singleton Tuples better (105 LLVM lines vs. 35 kB allocs) 68 times less (89 ns vs. 6 μs) 2 times less (76 ms vs. 186 ms) similar (10 MB vs. 9 MB)
unrolled_filter(!isempty, itr) filter(!isempty, itr) Tuple 128 distinct nonempty non-singleton Tuples better (1381 LLVM lines vs. 533 kB allocs) 5 times more (347 μs vs. 60 μs) similar (184 ms vs. 188 ms) 3 times more (29 MB vs. 9 MB)
unrolled_split(isempty, itr) (filter(isempty, itr), filter(!isempty, itr)) Tuple 1 empty singleton Tuple similar (optimized out) similar (40 ns vs. 40 ns) similar (28 ms vs. 30 ms) 4 times less (176 kB vs. 778 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 (29 ms vs. 30 ms) 3 times less (209 kB vs. 813 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 (28 ms vs. 35 ms) 2 times less (422 kB vs. 1003 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 (35 ms vs. 30 ms) 2 times less (348 kB vs. 879 kB)
unrolled_split(isempty, itr) (filter(isempty, itr), filter(!isempty, itr)) Tuple 4 identical nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) 2 times more (76 ms vs. 29 ms) 2 times more (2 MB vs. 1013 kB)
unrolled_split(isempty, itr) (filter(isempty, itr), filter(!isempty, itr)) Tuple 8 identical nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) 3 times more (106 ms vs. 29 ms) 2 times more (3 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) 14 times less (49 ns vs. 731 ns) 2 times more (288 ms vs. 119 ms) similar (6 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) 51 times less (40 ns vs. 2 μs) 8 times more (1 s vs. 122 ms) 2 times more (20 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. 49 ns) similar (29 ms vs. 36 ms) similar (719 kB vs. 1 MB)
unrolled_split(isempty, itr) (filter(isempty, itr), filter(!isempty, itr)) Tuple 4 identical nonempty non-singleton Tuples similar (8 LLVM lines) similar (49 ns vs. 49 ns) similar (55 ms vs. 34 ms) 2 times more (3 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 (49 ns vs. 49 ns) similar (58 ms vs. 35 ms) 2 times more (4 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 (83 ms vs. 145 ms) similar (14 MB vs. 7 MB)
unrolled_split(isempty, itr) (filter(isempty, itr), filter(!isempty, itr)) Tuple 128 identical nonempty non-singleton Tuples better (1394 LLVM lines vs. 7 kB allocs) 57 times more (295 μs vs. 5 μs) similar (204 ms vs. 156 ms) 5 times more (42 MB vs. 7 MB)
unrolled_split(isempty, itr) (filter(isempty, itr), filter(!isempty, itr)) Tuple 2 distinct empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (36 ms vs. 29 ms) 2 times less (330 kB vs. 967 kB)
unrolled_split(isempty, itr) (filter(isempty, itr), filter(!isempty, itr)) Tuple 4 distinct empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) 2 times more (75 ms vs. 29 ms) 2 times more (2 MB vs. 1 MB)
unrolled_split(isempty, itr) (filter(isempty, itr), filter(!isempty, itr)) Tuple 8 distinct empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) 3 times more (107 ms vs. 31 ms) similar (3 MB vs. 2 MB)
unrolled_split(isempty, itr) (filter(isempty, itr), filter(!isempty, itr)) Tuple 32 distinct empty & nonempty singleton Tuples better (optimized out vs. 2 kB allocs) 39 times less (40 ns vs. 2 μs) similar (290 ms vs. 155 ms) similar (6 MB vs. 8 MB)
unrolled_split(isempty, itr) (filter(isempty, itr), filter(!isempty, itr)) Tuple 128 distinct empty & nonempty singleton Tuples better (optimized out vs. 5 kB allocs) 105 times less (49 ns vs. 5 μs) 6 times more (1 s vs. 156 ms) 2 times more (20 MB vs. 8 MB)
unrolled_split(isempty, itr) (filter(isempty, itr), filter(!isempty, itr)) Tuple 2 distinct nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (36 ms vs. 29 ms) 2 times less (352 kB vs. 972 kB)
unrolled_split(isempty, itr) (filter(isempty, itr), filter(!isempty, itr)) Tuple 4 distinct nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) 2 times more (78 ms vs. 30 ms) 2 times more (2 MB vs. 1 MB)
unrolled_split(isempty, itr) (filter(isempty, itr), filter(!isempty, itr)) Tuple 8 distinct nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) 3 times more (106 ms vs. 31 ms) similar (3 MB vs. 2 MB)
unrolled_split(isempty, itr) (filter(isempty, itr), filter(!isempty, itr)) Tuple 32 distinct nonempty singleton Tuples better (optimized out vs. 1 kB allocs) 144 times less (49 ns vs. 7 μs) similar (293 ms vs. 179 ms) similar (6 MB vs. 9 MB)
unrolled_split(isempty, itr) (filter(isempty, itr), filter(!isempty, itr)) Tuple 128 distinct nonempty singleton Tuples better (optimized out vs. 4 kB allocs) 600 times less (49 ns vs. 29 μs) 5 times more (1 s vs. 182 ms) 2 times more (20 MB vs. 9 MB)
unrolled_split(isempty, itr) (filter(isempty, itr), filter(!isempty, itr)) Tuple 2 distinct nonempty non-singleton Tuples similar (11 LLVM lines) similar (50 ns vs. 49 ns) similar (30 ms vs. 35 ms) similar (749 kB vs. 1 MB)
unrolled_split(isempty, itr) (filter(isempty, itr), filter(!isempty, itr)) Tuple 4 distinct nonempty non-singleton Tuples similar (17 LLVM lines) similar (60 ns vs. 49 ns) similar (56 ms vs. 35 ms) similar (3 MB vs. 2 MB)
unrolled_split(isempty, itr) (filter(isempty, itr), filter(!isempty, itr)) Tuple 8 distinct nonempty non-singleton Tuples similar (30 LLVM lines) similar (60 ns vs. 60 ns) similar (60 ms vs. 38 ms) similar (4 MB vs. 2 MB)
unrolled_split(isempty, itr) (filter(isempty, itr), filter(!isempty, itr)) Tuple 32 distinct nonempty non-singleton Tuples better (105 LLVM lines vs. 69 kB allocs) 151 times less (80 ns vs. 12 μs) 2 times less (84 ms vs. 199 ms) similar (14 MB vs. 9 MB)
unrolled_split(isempty, itr) (filter(isempty, itr), filter(!isempty, itr)) Tuple 128 distinct nonempty non-singleton Tuples better (1381 LLVM lines vs. 1 MB allocs) 2 times more (344 μs vs. 120 μs) similar (248 ms vs. 199 ms) 4 times more (43 MB vs. 10 MB)
unrolled_flatten(itr) Tuple(Iterators.flatten(itr)) Tuple 1 empty singleton Tuple similar (optimized out) similar (40 ns vs. 40 ns) similar (46 ms vs. 30 ms) 2 times more (3 MB 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 (49 ns vs. 150 ns) similar (51 ms vs. 47 ms) similar (3 MB 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. 190 ns) similar (41 ms vs. 38 ms) similar (3 MB 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. 160 ns) similar (61 ms vs. 49 ms) similar (3 MB vs. 3 MB)
unrolled_flatten(itr) Tuple(Iterators.flatten(itr)) Tuple 4 identical nonempty singleton Tuples better (optimized out vs. 64 B allocs) 4 times less (40 ns vs. 190 ns) 2 times more (112 ms vs. 49 ms) similar (6 MB 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. 241 ns) 3 times more (165 ms vs. 49 ms) 2 times more (7 MB vs. 3 MB)
unrolled_flatten(itr) Tuple(Iterators.flatten(itr)) Tuple 32 identical nonempty singleton Tuples better (optimized out vs. 64 B allocs) 11 times less (49 ns vs. 571 ns) 8 times more (494 ms vs. 57 ms) 5 times more (18 MB vs. 3 MB)
unrolled_flatten(itr) Tuple(Iterators.flatten(itr)) Tuple 128 identical nonempty singleton Tuples better (optimized out vs. 64 B allocs) 46 times less (40 ns vs. 2 μs) 39 times more (2 s vs. 49 ms) 22 times more (73 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 (48 ms vs. 42 ms) similar (4 MB vs. 3 MB)
unrolled_flatten(itr) Tuple(Iterators.flatten(itr)) Tuple 4 identical nonempty non-singleton Tuples better (8 LLVM lines vs. 144 B allocs) 5 times less (49 ns vs. 261 ns) similar (79 ms vs. 42 ms) 2 times more (7 MB 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 (50 ns vs. 370 ns) 2 times more (88 ms vs. 43 ms) 3 times more (11 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) 21 times less (50 ns vs. 1 μs) 4 times more (205 ms vs. 48 ms) 14 times more (48 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) 47 times less (80 ns vs. 4 μs) 21 times more (1 s vs. 53 ms) 143 times more (479 MB vs. 3 MB)
unrolled_flatten(itr) Tuple(Iterators.flatten(itr)) Tuple 2 distinct empty & nonempty singleton Tuples better (optimized out vs. 96 B allocs) 11 times less (40 ns vs. 440 ns) similar (55 ms vs. 78 ms) similar (3 MB vs. 5 MB)
unrolled_flatten(itr) Tuple(Iterators.flatten(itr)) Tuple 4 distinct empty & nonempty singleton Tuples better (optimized out vs. 128 B allocs) 8 times less (40 ns vs. 340 ns) similar (114 ms vs. 81 ms) similar (6 MB vs. 6 MB)
unrolled_flatten(itr) Tuple(Iterators.flatten(itr)) Tuple 8 distinct empty & nonempty singleton Tuples better (optimized out vs. 496 B allocs) 19 times less (40 ns vs. 791 ns) similar (167 ms vs. 84 ms) similar (8 MB vs. 6 MB)
unrolled_flatten(itr) Tuple(Iterators.flatten(itr)) Tuple 32 distinct empty & nonempty singleton Tuples better (optimized out vs. 2 kB allocs) 68 times less (40 ns vs. 3 μs) 6 times more (501 ms vs. 80 ms) 3 times more (20 MB vs. 6 MB)
unrolled_flatten(itr) Tuple(Iterators.flatten(itr)) Tuple 128 distinct empty & nonempty singleton Tuples better (optimized out vs. 8 kB allocs) 279 times less (40 ns vs. 11 μs) 26 times more (2 s vs. 81 ms) 18 times more (104 MB vs. 6 MB)
unrolled_flatten(itr) Tuple(Iterators.flatten(itr)) Tuple 2 distinct nonempty singleton Tuples better (optimized out vs. 192 B allocs) 7 times less (40 ns vs. 310 ns) similar (55 ms vs. 84 ms) similar (3 MB vs. 5 MB)
unrolled_flatten(itr) Tuple(Iterators.flatten(itr)) Tuple 4 distinct nonempty singleton Tuples better (optimized out vs. 496 B allocs) 9 times less (49 ns vs. 451 ns) similar (113 ms vs. 83 ms) similar (6 MB vs. 7 MB)
unrolled_flatten(itr) Tuple(Iterators.flatten(itr)) Tuple 8 distinct nonempty singleton Tuples better (optimized out vs. 496 B allocs) 24 times less (40 ns vs. 991 ns) 2 times more (167 ms vs. 82 ms) similar (8 MB vs. 7 MB)
unrolled_flatten(itr) Tuple(Iterators.flatten(itr)) Tuple 32 distinct nonempty singleton Tuples better (optimized out vs. 2 kB allocs) 72 times less (49 ns vs. 4 μs) 6 times more (516 ms vs. 84 ms) 3 times more (22 MB vs. 7 MB)
unrolled_flatten(itr) Tuple(Iterators.flatten(itr)) Tuple 128 distinct nonempty singleton Tuples better (optimized out vs. 8 kB allocs) 376 times less (40 ns vs. 15 μs) 27 times more (2 s vs. 83 ms) 18 times more (121 MB vs. 7 MB)
unrolled_flatten(itr) Tuple(Iterators.flatten(itr)) Tuple 2 distinct nonempty non-singleton Tuples better (12 LLVM lines vs. 352 B allocs) 6 times less (60 ns vs. 411 ns) similar (47 ms vs. 61 ms) similar (4 MB vs. 5 MB)
unrolled_flatten(itr) Tuple(Iterators.flatten(itr)) Tuple 4 distinct nonempty non-singleton Tuples better (16 LLVM lines vs. 1 kB allocs) 10 times less (60 ns vs. 602 ns) similar (82 ms vs. 56 ms) similar (8 MB vs. 4 MB)
unrolled_flatten(itr) Tuple(Iterators.flatten(itr)) Tuple 8 distinct nonempty non-singleton Tuples better (36 LLVM lines vs. 3 kB allocs) 22 times less (60 ns vs. 1 μs) similar (97 ms vs. 62 ms) 3 times more (15 MB vs. 4 MB)
unrolled_flatten(itr) Tuple(Iterators.flatten(itr)) Tuple 32 distinct nonempty non-singleton Tuples better (128 LLVM lines vs. 35 kB allocs) 69 times less (80 ns vs. 6 μs) 6 times more (348 ms vs. 56 ms) 27 times more (118 MB vs. 4 MB)
unrolled_flatten(itr) Tuple(Iterators.flatten(itr)) Tuple 128 distinct nonempty non-singleton Tuples better (516 LLVM lines vs. 533 kB allocs) 125 times less (310 ns vs. 39 μs) 62 times more (4 s vs. 59 ms) 340 times more (2 GB 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 (58 ms vs. 52 ms) 2 times more (3 MB 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) 3 times less (49 ns vs. 160 ns) similar (62 ms vs. 83 ms) similar (4 MB 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 (50 ns vs. 200 ns) similar (42 ms vs. 53 ms) similar (4 MB 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) 3 times less (49 ns vs. 190 ns) similar (66 ms vs. 99 ms) similar (4 MB vs. 5 MB)
unrolled_flatmap(Iterators.reverse, itr) Tuple(Iterators.flatmap(Iterators.reverse, itr)) Tuple 4 identical nonempty singleton Tuples better (optimized out vs. 96 B allocs) 4 times less (49 ns vs. 220 ns) similar (134 ms vs. 103 ms) similar (6 MB 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) 5 times less (49 ns vs. 280 ns) similar (181 ms vs. 99 ms) similar (8 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) 16 times less (40 ns vs. 661 ns) 5 times more (512 ms vs. 100 ms) 3 times more (19 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) 51 times less (40 ns vs. 2 μs) 19 times more (2 s vs. 101 ms) 14 times more (74 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. 230 ns) similar (50 ms vs. 65 ms) similar (4 MB vs. 4 MB)
unrolled_flatmap(Iterators.reverse, itr) Tuple(Iterators.flatmap(Iterators.reverse, itr)) Tuple 4 identical nonempty non-singleton Tuples better (8 LLVM lines vs. 208 B allocs) 5 times less (49 ns vs. 290 ns) similar (87 ms vs. 70 ms) similar (8 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) 6 times less (60 ns vs. 410 ns) similar (99 ms vs. 64 ms) 2 times more (12 MB vs. 4 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) 16 times less (69 ns vs. 1 μs) 3 times more (236 ms vs. 67 ms) 12 times more (54 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) 49 times less (80 ns vs. 4 μs) 20 times more (1 s vs. 65 ms) 127 times more (550 MB vs. 4 MB)
unrolled_flatmap(Iterators.reverse, itr) Tuple(Iterators.flatmap(Iterators.reverse, itr)) Tuple 2 distinct empty & nonempty singleton Tuples better (optimized out vs. 144 B allocs) 8 times less (40 ns vs. 340 ns) similar (69 ms vs. 117 ms) 2 times less (4 MB vs. 7 MB)
unrolled_flatmap(Iterators.reverse, itr) Tuple(Iterators.flatmap(Iterators.reverse, itr)) Tuple 4 distinct empty & nonempty singleton Tuples better (optimized out vs. 1 kB allocs) 75 times less (49 ns vs. 4 μs) 2 times less (153 ms vs. 329 ms) 4 times less (7 MB vs. 30 MB)
unrolled_flatmap(Iterators.reverse, itr) Tuple(Iterators.flatmap(Iterators.reverse, itr)) Tuple 8 distinct empty & nonempty singleton Tuples better (optimized out vs. 3 kB allocs) 165 times less (49 ns vs. 8 μs) similar (206 ms vs. 397 ms) 3 times less (9 MB vs. 32 MB)
unrolled_flatmap(Iterators.reverse, itr) Tuple(Iterators.flatmap(Iterators.reverse, itr)) Tuple 32 distinct empty & nonempty singleton Tuples better (optimized out vs. 11 kB allocs) 481 times less (49 ns vs. 24 μs) similar (548 ms vs. 410 ms) similar (21 MB vs. 32 MB)
unrolled_flatmap(Iterators.reverse, itr) Tuple(Iterators.flatmap(Iterators.reverse, itr)) Tuple 128 distinct empty & nonempty singleton Tuples better (optimized out vs. 43 kB allocs) 1843 times less (49 ns vs. 90 μs) 5 times more (2 s vs. 401 ms) 3 times more (106 MB vs. 32 MB)
unrolled_flatmap(Iterators.reverse, itr) Tuple(Iterators.flatmap(Iterators.reverse, itr)) Tuple 2 distinct nonempty singleton Tuples better (optimized out vs. 240 B allocs) 8 times less (49 ns vs. 431 ns) 3 times less (75 ms vs. 249 ms) 4 times less (4 MB vs. 17 MB)
unrolled_flatmap(Iterators.reverse, itr) Tuple(Iterators.flatmap(Iterators.reverse, itr)) Tuple 4 distinct nonempty singleton Tuples better (optimized out vs. 1 kB allocs) 39 times less (49 ns vs. 2 μs) 2 times less (140 ms vs. 308 ms) 2 times less (7 MB vs. 20 MB)
unrolled_flatmap(Iterators.reverse, itr) Tuple(Iterators.flatmap(Iterators.reverse, itr)) Tuple 8 distinct nonempty singleton Tuples better (optimized out vs. 3 kB allocs) 162 times less (40 ns vs. 7 μs) similar (208 ms vs. 397 ms) 2 times less (9 MB vs. 21 MB)
unrolled_flatmap(Iterators.reverse, itr) Tuple(Iterators.flatmap(Iterators.reverse, itr)) Tuple 32 distinct nonempty singleton Tuples better (optimized out vs. 13 kB allocs) 698 times less (40 ns vs. 28 μs) similar (559 ms vs. 374 ms) similar (23 MB vs. 21 MB)
unrolled_flatmap(Iterators.reverse, itr) Tuple(Iterators.flatmap(Iterators.reverse, itr)) Tuple 128 distinct nonempty singleton Tuples better (optimized out vs. 55 kB allocs) 2857 times less (40 ns vs. 114 μs) 6 times more (2 s vs. 378 ms) 5 times more (123 MB vs. 22 MB)
unrolled_flatmap(Iterators.reverse, itr) Tuple(Iterators.flatmap(Iterators.reverse, itr)) Tuple 2 distinct nonempty non-singleton Tuples better (13 LLVM lines vs. 352 B allocs) 8 times less (49 ns vs. 440 ns) similar (50 ms vs. 83 ms) similar (5 MB vs. 6 MB)
unrolled_flatmap(Iterators.reverse, itr) Tuple(Iterators.flatmap(Iterators.reverse, itr)) Tuple 4 distinct nonempty non-singleton Tuples better (32 LLVM lines vs. 3 kB allocs) 29 times less (60 ns vs. 2 μs) similar (90 ms vs. 143 ms) similar (9 MB vs. 7 MB)
unrolled_flatmap(Iterators.reverse, itr) Tuple(Iterators.flatmap(Iterators.reverse, itr)) Tuple 8 distinct nonempty non-singleton Tuples better (69 LLVM lines vs. 14 kB allocs) 99 times less (60 ns vs. 6 μs) similar (121 ms vs. 226 ms) similar (18 MB vs. 9 MB)
unrolled_flatmap(Iterators.reverse, itr) Tuple(Iterators.flatmap(Iterators.reverse, itr)) Tuple 32 distinct nonempty non-singleton Tuples better (276 LLVM lines vs. 175 kB allocs) 305 times less (100 ns vs. 31 μs) similar (396 ms vs. 221 ms) 14 times more (137 MB vs. 9 MB)
unrolled_flatmap(Iterators.reverse, itr) Tuple(Iterators.flatmap(Iterators.reverse, itr)) Tuple 128 distinct nonempty non-singleton Tuples better (1111 LLVM lines vs. 3 MB allocs) 1250 times less (391 ns vs. 489 μs) 19 times more (4 s vs. 221 ms) 161 times more (2 GB 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 (49 ns vs. 150 ns) similar (96 ms vs. 107 ms) similar (13 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 (96 ms vs. 106 ms) similar (14 MB vs. 15 MB)
unrolled_product(itr, itr) Tuple(Iterators.product(itr, itr)) Tuple 1 nonempty non-singleton Tuple better (49 LLVM lines vs. 160 B allocs) 2 times more (490 ns vs. 180 ns) similar (76 ms vs. 99 ms) similar (14 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) 5 times less (40 ns vs. 200 ns) similar (115 ms vs. 113 ms) similar (14 MB vs. 16 MB)
unrolled_product(itr, itr) Tuple(Iterators.product(itr, itr)) Tuple 4 identical nonempty singleton Tuples better (optimized out vs. 80 B allocs) 9 times less (40 ns vs. 380 ns) similar (108 ms vs. 113 ms) similar (14 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) 26 times less (40 ns vs. 1 μs) similar (109 ms vs. 112 ms) similar (14 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) 382 times less (40 ns vs. 15 μs) similar (127 ms vs. 113 ms) similar (16 MB vs. 16 MB)
unrolled_product(itr, itr) Tuple(Iterators.product(itr, itr)) Tuple 2 identical nonempty non-singleton Tuples better (122 LLVM lines vs. 352 B allocs) 5 times more (2 μs vs. 310 ns) similar (97 ms vs. 113 ms) similar (15 MB vs. 16 MB)
unrolled_product(itr, itr) Tuple(Iterators.product(itr, itr)) Tuple 4 identical nonempty non-singleton Tuples better (422 LLVM lines vs. 1 kB allocs) 9 times more (8 μs vs. 771 ns) similar (119 ms vs. 109 ms) similar (17 MB vs. 16 MB)
unrolled_product(itr, itr) Tuple(Iterators.product(itr, itr)) Tuple 8 identical nonempty non-singleton Tuples better (1622 LLVM lines vs. 4 kB allocs) 12 times more (32 μs vs. 3 μs) 4 times more (438 ms vs. 107 ms) similar (26 MB vs. 16 MB)
unrolled_product(itr, itr) Tuple(Iterators.product(itr, itr)) Tuple 32 identical nonempty non-singleton Tuples better (25622 LLVM lines vs. 72 kB allocs) 23 times more (866 μs vs. 37 μs) 1518 times more (178 s vs. 117 ms) 11 times more (189 MB vs. 16 MB)
unrolled_product(itr, itr) Tuple(Iterators.product(itr, itr)) Tuple 2 distinct empty & nonempty singleton Tuples better (optimized out vs. 112 B allocs) 6 times less (49 ns vs. 310 ns) similar (111 ms vs. 141 ms) similar (14 MB vs. 21 MB)
unrolled_product(itr, itr) Tuple(Iterators.product(itr, itr)) Tuple 4 distinct empty & nonempty singleton Tuples better (optimized out vs. 208 B allocs) 20 times less (49 ns vs. 1 μs) similar (116 ms vs. 142 ms) similar (16 MB vs. 21 MB)
unrolled_product(itr, itr) Tuple(Iterators.product(itr, itr)) Tuple 8 distinct empty & nonempty singleton Tuples better (optimized out vs. 592 B allocs) 78 times less (49 ns vs. 4 μs) similar (116 ms vs. 139 ms) similar (18 MB vs. 21 MB)
unrolled_product(itr, itr) Tuple(Iterators.product(itr, itr)) Tuple 32 distinct empty & nonempty singleton Tuples better (optimized out vs. 16 kB allocs) 1116 times less (49 ns vs. 55 μs) similar (139 ms vs. 144 ms) similar (20 MB vs. 21 MB)
unrolled_product(itr, itr) Tuple(Iterators.product(itr, itr)) Tuple 2 distinct nonempty singleton Tuples better (optimized out vs. 112 B allocs) 7 times less (40 ns vs. 300 ns) similar (132 ms vs. 148 ms) similar (15 MB vs. 21 MB)
unrolled_product(itr, itr) Tuple(Iterators.product(itr, itr)) Tuple 4 distinct nonempty singleton Tuples better (optimized out vs. 208 B allocs) 71 times less (40 ns vs. 3 μs) similar (115 ms vs. 204 ms) similar (16 MB vs. 23 MB)
unrolled_product(itr, itr) Tuple(Iterators.product(itr, itr)) Tuple 8 distinct nonempty singleton Tuples better (optimized out vs. 592 B allocs) 312 times less (40 ns vs. 12 μs) 2 times less (120 ms vs. 342 ms) similar (19 MB vs. 27 MB)
unrolled_product(itr, itr) Tuple(Iterators.product(itr, itr)) Tuple 32 distinct nonempty singleton Tuples better (optimized out vs. 24 kB allocs) 3810 times less (49 ns vs. 187 μs) 2 times less (138 ms vs. 333 ms) similar (21 MB vs. 27 MB)
unrolled_product(itr, itr) Tuple(Iterators.product(itr, itr)) Tuple 2 distinct nonempty non-singleton Tuples better (124 LLVM lines vs. 592 B allocs) 3 times more (2 μs vs. 520 ns) similar (95 ms vs. 150 ms) similar (16 MB vs. 21 MB)
unrolled_product(itr, itr) Tuple(Iterators.product(itr, itr)) Tuple 4 distinct nonempty non-singleton Tuples better (428 LLVM lines vs. 4 kB allocs) similar (7 μs vs. 4 μs) similar (131 ms vs. 232 ms) similar (19 MB vs. 24 MB)
unrolled_product(itr, itr) Tuple(Iterators.product(itr, itr)) Tuple 8 distinct nonempty non-singleton Tuples better (1646 LLVM lines vs. 31 kB allocs) similar (35 μs vs. 32 μs) similar (298 ms vs. 437 ms) similar (30 MB vs. 28 MB)
unrolled_product(itr, itr) Tuple(Iterators.product(itr, itr)) Tuple 32 distinct nonempty non-singleton Tuples better (27890 LLVM lines vs. 1 MB allocs) 2 times more (999 μs vs. 488 μs) 20 times more (9 s vs. 438 ms) 6 times more (195 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) 3 times less (49 ns vs. 150 ns) similar (110 ms vs. 140 ms) similar (15 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 (109 ms vs. 125 ms) similar (16 MB vs. 17 MB)
unrolled_product(itr, itr, itr) Tuple(Iterators.product(itr, itr, itr)) Tuple 1 nonempty non-singleton Tuple better (64 LLVM lines vs. 160 B allocs) 3 times more (691 ns vs. 180 ns) similar (85 ms vs. 118 ms) similar (17 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) 4 times less (49 ns vs. 240 ns) similar (121 ms vs. 132 ms) similar (16 MB vs. 18 MB)
unrolled_product(itr, itr, itr) Tuple(Iterators.product(itr, itr, itr)) Tuple 4 identical nonempty singleton Tuples better (optimized out vs. 80 B allocs) 27 times less (40 ns vs. 1 μs) similar (122 ms vs. 131 ms) similar (16 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) 190 times less (40 ns vs. 8 μs) similar (133 ms vs. 131 ms) similar (17 MB vs. 18 MB)
unrolled_product(itr, itr, itr) Tuple(Iterators.product(itr, itr, itr)) Tuple 2 identical nonempty non-singleton Tuples better (327 LLVM lines vs. 736 B allocs) 11 times more (5 μs vs. 450 ns) similar (121 ms vs. 138 ms) similar (19 MB vs. 18 MB)
unrolled_product(itr, itr, itr) Tuple(Iterators.product(itr, itr, itr)) Tuple 4 identical nonempty non-singleton Tuples better (2455 LLVM lines vs. 5 kB allocs) 18 times more (47 μs vs. 3 μs) 6 times more (893 ms vs. 130 ms) similar (34 MB vs. 18 MB)
unrolled_product(itr, itr, itr) Tuple(Iterators.product(itr, itr, itr)) Tuple 8 identical nonempty non-singleton Tuples better (19479 LLVM lines vs. 44 kB allocs) 21 times more (414 μs vs. 19 μs) 736 times more (96 s vs. 130 ms) 8 times more (159 MB vs. 18 MB)
unrolled_product(itr, itr, itr) Tuple(Iterators.product(itr, itr, itr)) Tuple 2 distinct empty & nonempty singleton Tuples better (optimized out vs. 144 B allocs) 15 times less (40 ns vs. 601 ns) similar (122 ms vs. 155 ms) similar (16 MB vs. 23 MB)
unrolled_product(itr, itr, itr) Tuple(Iterators.product(itr, itr, itr)) Tuple 4 distinct empty & nonempty singleton Tuples better (optimized out vs. 592 B allocs) 92 times less (49 ns vs. 5 μs) similar (125 ms vs. 155 ms) similar (18 MB vs. 24 MB)
unrolled_product(itr, itr, itr) Tuple(Iterators.product(itr, itr, itr)) Tuple 8 distinct empty & nonempty singleton Tuples better (optimized out vs. 8 kB allocs) 1011 times less (40 ns vs. 40 μs) similar (139 ms vs. 156 ms) similar (21 MB vs. 24 MB)
unrolled_product(itr, itr, itr) Tuple(Iterators.product(itr, itr, itr)) Tuple 2 distinct nonempty singleton Tuples better (optimized out vs. 144 B allocs) 11 times less (49 ns vs. 581 ns) similar (123 ms vs. 156 ms) similar (17 MB vs. 23 MB)
unrolled_product(itr, itr, itr) Tuple(Iterators.product(itr, itr, itr)) Tuple 4 distinct nonempty singleton Tuples better (optimized out vs. 592 B allocs) 334 times less (40 ns vs. 13 μs) 3 times less (128 ms vs. 404 ms) similar (18 MB vs. 32 MB)
unrolled_product(itr, itr, itr) Tuple(Iterators.product(itr, itr, itr)) Tuple 8 distinct nonempty singleton Tuples better (optimized out vs. 8 kB allocs) 4839 times less (40 ns vs. 194 μs) 10 times less (153 ms vs. 2 s) 3 times less (21 MB vs. 71 MB)
unrolled_product(itr, itr, itr) Tuple(Iterators.product(itr, itr, itr)) Tuple 2 distinct nonempty non-singleton Tuples better (333 LLVM lines vs. 1 kB allocs) 4 times more (6 μs vs. 1 μs) similar (122 ms vs. 186 ms) similar (20 MB vs. 23 MB)
unrolled_product(itr, itr, itr) Tuple(Iterators.product(itr, itr, itr)) Tuple 4 distinct nonempty non-singleton Tuples better (2473 LLVM lines vs. 22 kB allocs) similar (46 μs vs. 42 μs) similar (375 ms vs. 551 ms) similar (36 MB vs. 33 MB)
unrolled_product(itr, itr, itr) Tuple(Iterators.product(itr, itr, itr)) Tuple 8 distinct nonempty non-singleton Tuples better (20919 LLVM lines vs. 293 kB allocs) similar (479 μs vs. 448 μs) 2 times more (6 s vs. 2 s) 2 times more (164 MB vs. 73 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 (40 ns vs. 180 ns) similar (64 ms vs. 55 ms) similar (4 MB 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. 170 ns) similar (64 ms vs. 55 ms) similar (4 MB 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) 4 times less (60 ns vs. 260 ns) similar (43 ms vs. 55 ms) similar (5 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) 4 times less (49 ns vs. 210 ns) similar (75 ms vs. 54 ms) similar (4 MB vs. 5 MB)
unrolled_cycle(itr, Val(3)) Tuple(Iterators.cycle(itr, 3)) Tuple 4 identical nonempty singleton Tuples better (optimized out vs. 64 B allocs) 7 times less (40 ns vs. 290 ns) similar (74 ms vs. 54 ms) similar (4 MB 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) 11 times less (40 ns vs. 450 ns) similar (75 ms vs. 59 ms) similar (4 MB 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) 37 times less (40 ns vs. 1 μs) similar (78 ms vs. 65 ms) similar (4 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) 137 times less (40 ns vs. 5 μs) similar (101 ms vs. 62 ms) similar (5 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. 370 ns) similar (57 ms vs. 58 ms) similar (5 MB vs. 5 MB)
unrolled_cycle(itr, Val(3)) Tuple(Iterators.cycle(itr, 3)) Tuple 4 identical nonempty non-singleton Tuples better (36 LLVM lines vs. 464 B allocs) 10 times less (60 ns vs. 611 ns) similar (58 ms vs. 59 ms) similar (6 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) 18 times less (60 ns vs. 1 μs) similar (60 ms vs. 66 ms) similar (7 MB vs. 5 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) 56 times less (89 ns vs. 5 μs) similar (91 ms vs. 85 ms) 2 times more (14 MB vs. 5 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) 200 times less (230 ns vs. 46 μs) 4 times more (355 ms vs. 76 ms) 7 times more (42 MB vs. 5 MB)
unrolled_cycle(itr, Val(3)) Tuple(Iterators.cycle(itr, 3)) Tuple 2 distinct empty & nonempty singleton Tuples better (optimized out vs. 112 B allocs) 5 times less (49 ns vs. 260 ns) similar (76 ms vs. 59 ms) similar (4 MB vs. 6 MB)
unrolled_cycle(itr, Val(3)) Tuple(Iterators.cycle(itr, 3)) Tuple 4 distinct empty & nonempty singleton Tuples better (optimized out vs. 160 B allocs) 10 times less (40 ns vs. 400 ns) similar (74 ms vs. 59 ms) similar (4 MB vs. 6 MB)
unrolled_cycle(itr, Val(3)) Tuple(Iterators.cycle(itr, 3)) Tuple 8 distinct empty & nonempty singleton Tuples better (optimized out vs. 256 B allocs) 16 times less (40 ns vs. 661 ns) similar (74 ms vs. 61 ms) similar (4 MB vs. 6 MB)
unrolled_cycle(itr, Val(3)) Tuple(Iterators.cycle(itr, 3)) Tuple 32 distinct empty & nonempty singleton Tuples better (optimized out vs. 848 B allocs) 57 times less (40 ns vs. 2 μs) similar (77 ms vs. 63 ms) similar (4 MB vs. 6 MB)
unrolled_cycle(itr, Val(3)) Tuple(Iterators.cycle(itr, 3)) Tuple 128 distinct empty & nonempty singleton Tuples better (optimized out vs. 3 kB allocs) 215 times less (40 ns vs. 9 μs) similar (86 ms vs. 67 ms) similar (5 MB vs. 6 MB)
unrolled_cycle(itr, Val(3)) Tuple(Iterators.cycle(itr, 3)) Tuple 2 distinct nonempty singleton Tuples better (optimized out vs. 112 B allocs) 6 times less (40 ns vs. 250 ns) similar (80 ms vs. 59 ms) similar (4 MB vs. 6 MB)
unrolled_cycle(itr, Val(3)) Tuple(Iterators.cycle(itr, 3)) Tuple 4 distinct nonempty singleton Tuples better (optimized out vs. 160 B allocs) 13 times less (49 ns vs. 651 ns) similar (75 ms vs. 77 ms) similar (4 MB vs. 6 MB)
unrolled_cycle(itr, Val(3)) Tuple(Iterators.cycle(itr, 3)) Tuple 8 distinct nonempty singleton Tuples better (optimized out vs. 256 B allocs) 70 times less (40 ns vs. 3 μs) similar (75 ms vs. 87 ms) similar (4 MB vs. 6 MB)
unrolled_cycle(itr, Val(3)) Tuple(Iterators.cycle(itr, 3)) Tuple 32 distinct nonempty singleton Tuples better (optimized out vs. 848 B allocs) 265 times less (40 ns vs. 11 μs) similar (78 ms vs. 87 ms) similar (4 MB vs. 6 MB)
unrolled_cycle(itr, Val(3)) Tuple(Iterators.cycle(itr, 3)) Tuple 128 distinct nonempty singleton Tuples better (optimized out vs. 3 kB allocs) 1116 times less (40 ns vs. 45 μs) similar (86 ms vs. 90 ms) similar (5 MB vs. 6 MB)
unrolled_cycle(itr, Val(3)) Tuple(Iterators.cycle(itr, 3)) Tuple 2 distinct nonempty non-singleton Tuples better (19 LLVM lines vs. 528 B allocs) 8 times less (50 ns vs. 400 ns) similar (55 ms vs. 69 ms) similar (5 MB vs. 6 MB)
unrolled_cycle(itr, Val(3)) Tuple(Iterators.cycle(itr, 3)) Tuple 4 distinct nonempty non-singleton Tuples better (33 LLVM lines vs. 2 kB allocs) 18 times less (60 ns vs. 1 μs) similar (59 ms vs. 86 ms) similar (6 MB vs. 6 MB)
unrolled_cycle(itr, Val(3)) Tuple(Iterators.cycle(itr, 3)) Tuple 8 distinct nonempty non-singleton Tuples better (62 LLVM lines vs. 8 kB allocs) 62 times less (69 ns vs. 4 μs) similar (65 ms vs. 109 ms) similar (7 MB vs. 6 MB)
unrolled_cycle(itr, Val(3)) Tuple(Iterators.cycle(itr, 3)) Tuple 32 distinct nonempty non-singleton Tuples better (233 LLVM lines vs. 103 kB allocs) 118 times less (230 ns vs. 27 μs) similar (111 ms vs. 106 ms) 2 times more (14 MB vs. 6 MB)
unrolled_cycle(itr, Val(3)) Tuple(Iterators.cycle(itr, 3)) Tuple 128 distinct nonempty non-singleton Tuples better (1611 LLVM lines vs. 2 MB allocs) 342 times less (911 ns vs. 312 μs) 7 times more (808 ms vs. 106 ms) 5 times more (42 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) 21 times less (49 ns vs. 1 μs) similar (75 ms vs. 114 ms) similar (11 MB 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) 31 times less (40 ns vs. 1 μs) similar (76 ms vs. 114 ms) similar (11 MB vs. 11 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) 23 times less (49 ns vs. 1 μs) similar (70 ms vs. 124 ms) similar (12 MB vs. 11 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) similar (77 ms vs. 118 ms) similar (11 MB vs. 11 MB)
unrolled_partition(itr, Val(3)) Tuple(Iterators.map(Tuple, Iterators.partition(itr, 3))) Tuple 4 identical nonempty singleton Tuples better (optimized out vs. 528 B allocs) 28 times less (49 ns vs. 1 μs) 2 times less (97 ms vs. 199 ms) similar (12 MB vs. 19 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) 39 times less (40 ns vs. 2 μs) similar (104 ms vs. 196 ms) similar (12 MB vs. 19 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) 63 times less (40 ns vs. 3 μs) similar (178 ms vs. 206 ms) similar (16 MB vs. 19 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) 167 times less (40 ns vs. 7 μs) 2 times more (486 ms vs. 201 ms) similar (34 MB vs. 19 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) 25 times less (49 ns vs. 1 μs) similar (72 ms vs. 126 ms) similar (12 MB vs. 11 MB)
unrolled_partition(itr, Val(3)) Tuple(Iterators.map(Tuple, Iterators.partition(itr, 3))) Tuple 4 identical nonempty non-singleton Tuples better (8 LLVM lines vs. 912 B allocs) 25 times less (60 ns vs. 2 μs) 2 times less (87 ms vs. 215 ms) similar (13 MB vs. 20 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) 37 times less (49 ns vs. 2 μs) 2 times less (87 ms vs. 216 ms) similar (14 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) 59 times less (60 ns vs. 4 μs) 2 times less (112 ms vs. 230 ms) similar (23 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) 119 times less (89 ns vs. 11 μs) similar (358 ms vs. 273 ms) 5 times more (99 MB vs. 20 MB)
unrolled_partition(itr, Val(3)) Tuple(Iterators.map(Tuple, Iterators.partition(itr, 3))) Tuple 2 distinct empty & nonempty singleton Tuples better (optimized out vs. 368 B allocs) 31 times less (40 ns vs. 1 μs) similar (77 ms vs. 130 ms) similar (11 MB vs. 10 MB)
unrolled_partition(itr, Val(3)) Tuple(Iterators.map(Tuple, Iterators.partition(itr, 3))) Tuple 4 distinct empty & nonempty singleton Tuples better (optimized out vs. 560 B allocs) 30 times less (49 ns vs. 1 μs) 2 times less (93 ms vs. 207 ms) similar (12 MB vs. 21 MB)
unrolled_partition(itr, Val(3)) Tuple(Iterators.map(Tuple, Iterators.partition(itr, 3))) Tuple 8 distinct empty & nonempty singleton Tuples better (optimized out vs. 752 B allocs) 45 times less (40 ns vs. 2 μs) 2 times less (102 ms vs. 274 ms) 2 times less (12 MB vs. 28 MB)
unrolled_partition(itr, Val(3)) Tuple(Iterators.map(Tuple, Iterators.partition(itr, 3))) Tuple 32 distinct empty & nonempty singleton Tuples better (optimized out vs. 2 kB allocs) 517 times less (40 ns vs. 21 μs) 2 times less (175 ms vs. 457 ms) 2 times less (16 MB vs. 43 MB)
unrolled_partition(itr, Val(3)) Tuple(Iterators.map(Tuple, Iterators.partition(itr, 3))) Tuple 128 distinct empty & nonempty singleton Tuples better (optimized out vs. 5 kB allocs) 2437 times less (49 ns vs. 119 μs) similar (495 ms vs. 455 ms) similar (34 MB vs. 43 MB)
unrolled_partition(itr, Val(3)) Tuple(Iterators.map(Tuple, Iterators.partition(itr, 3))) Tuple 2 distinct nonempty singleton Tuples better (optimized out vs. 368 B allocs) 31 times less (40 ns vs. 1 μs) similar (77 ms vs. 131 ms) similar (11 MB vs. 10 MB)
unrolled_partition(itr, Val(3)) Tuple(Iterators.map(Tuple, Iterators.partition(itr, 3))) Tuple 4 distinct nonempty singleton Tuples better (optimized out vs. 608 B allocs) 41 times less (40 ns vs. 2 μs) 2 times less (94 ms vs. 229 ms) similar (12 MB vs. 21 MB)
unrolled_partition(itr, Val(3)) Tuple(Iterators.map(Tuple, Iterators.partition(itr, 3))) Tuple 8 distinct nonempty singleton Tuples better (optimized out vs. 832 B allocs) 66 times less (40 ns vs. 3 μs) 2 times less (109 ms vs. 302 ms) 2 times less (12 MB vs. 28 MB)
unrolled_partition(itr, Val(3)) Tuple(Iterators.map(Tuple, Iterators.partition(itr, 3))) Tuple 32 distinct nonempty singleton Tuples better (optimized out vs. 2 kB allocs) 519 times less (49 ns vs. 25 μs) 2 times less (175 ms vs. 465 ms) 2 times less (16 MB vs. 42 MB)
unrolled_partition(itr, Val(3)) Tuple(Iterators.map(Tuple, Iterators.partition(itr, 3))) Tuple 128 distinct nonempty singleton Tuples better (optimized out vs. 7 kB allocs) 3495 times less (40 ns vs. 140 μs) similar (496 ms vs. 454 ms) similar (34 MB vs. 42 MB)
unrolled_partition(itr, Val(3)) Tuple(Iterators.map(Tuple, Iterators.partition(itr, 3))) Tuple 2 distinct nonempty non-singleton Tuples better (11 LLVM lines vs. 624 B allocs) 28 times less (49 ns vs. 1 μs) similar (75 ms vs. 141 ms) similar (12 MB vs. 10 MB)
unrolled_partition(itr, Val(3)) Tuple(Iterators.map(Tuple, Iterators.partition(itr, 3))) Tuple 4 distinct nonempty non-singleton Tuples better (17 LLVM lines vs. 2 kB allocs) 33 times less (60 ns vs. 2 μs) 3 times less (82 ms vs. 249 ms) similar (13 MB vs. 21 MB)
unrolled_partition(itr, Val(3)) Tuple(Iterators.map(Tuple, Iterators.partition(itr, 3))) Tuple 8 distinct nonempty non-singleton Tuples better (30 LLVM lines vs. 5 kB allocs) 53 times less (60 ns vs. 3 μs) 3 times less (88 ms vs. 326 ms) 2 times less (14 MB vs. 28 MB)
unrolled_partition(itr, Val(3)) Tuple(Iterators.map(Tuple, Iterators.partition(itr, 3))) Tuple 32 distinct nonempty non-singleton Tuples better (105 LLVM lines vs. 44 kB allocs) 192 times less (89 ns vs. 17 μs) 4 times less (121 ms vs. 513 ms) similar (23 MB vs. 42 MB)
unrolled_partition(itr, Val(3)) Tuple(Iterators.map(Tuple, Iterators.partition(itr, 3))) Tuple 128 distinct nonempty non-singleton Tuples better (625 LLVM lines vs. 569 kB allocs) 317 times less (360 ns vs. 114 μs) similar (455 ms vs. 851 ms) 2 times more (99 MB vs. 43 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 (37 ms vs. 44 ms) similar (941 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 (49 ns vs. 40 ns) similar (37 ms vs. 46 ms) similar (982 kB vs. 2 MB)
unrolled_any((x->unrolled_sum(x) > 7), itr3) any((x->sum(x) > 7), itr3) Tuple 4 identical nonempty non-singleton Tuples similar (12 LLVM lines) similar (49 ns vs. 49 ns) similar (57 ms vs. 46 ms) similar (1 MB 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 (40 ns vs. 49 ns) similar (59 ms vs. 49 ms) similar (1 MB 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 (75 ms vs. 52 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. 69 ns) similar (92 ms vs. 57 ms) 3 times more (6 MB vs. 2 MB)
unrolled_any((x->unrolled_sum(x) > 7), itr3) any((x->sum(x) > 7), itr3) Tuple 2 distinct nonempty non-singleton Tuples similar (22 LLVM lines) similar (40 ns vs. 40 ns) similar (40 ms vs. 47 ms) similar (2 MB vs. 2 MB)
unrolled_any((x->unrolled_sum(x) > 7), itr3) any((x->sum(x) > 7), itr3) Tuple 4 distinct nonempty non-singleton Tuples similar (41 LLVM lines) similar (49 ns vs. 49 ns) similar (102 ms vs. 62 ms) similar (6 MB vs. 4 MB)
unrolled_any((x->unrolled_sum(x) > 7), itr3) any((x->sum(x) > 7), itr3) Tuple 8 distinct nonempty non-singleton Tuples similar (86 LLVM lines) similar (49 ns vs. 40 ns) similar (117 ms vs. 82 ms) similar (9 MB vs. 6 MB)
unrolled_any((x->unrolled_sum(x) > 7), itr3) any((x->sum(x) > 7), itr3) Tuple 32 distinct nonempty non-singleton Tuples similar (325 LLVM lines) similar (49 ns vs. 49 ns) similar (140 ms vs. 86 ms) similar (11 MB vs. 8 MB)
unrolled_any((x->unrolled_sum(x) > 7), itr3) any((x->sum(x) > 7), itr3) Tuple 128 distinct nonempty non-singleton Tuples better (1300 LLVM lines vs. 12 kB allocs) 14 times less (49 ns vs. 692 ns) 4 times more (290 ms vs. 72 ms) 2 times more (17 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. 54 ms) 4 times less (1 MB 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. 40 ns) similar (36 ms vs. 54 ms) 4 times less (2 MB vs. 7 MB)
unrolled_mapreduce(unrolled_sum, max, itr3) mapreduce(sum, max, itr3) Tuple 4 identical nonempty non-singleton Tuples similar (16 LLVM lines) similar (40 ns vs. 49 ns) similar (86 ms vs. 57 ms) 2 times less (4 MB 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. 49 ns) similar (81 ms vs. 62 ms) 2 times less (4 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 (88 ms vs. 73 ms) 2 times less (6 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 (61 ns vs. 69 ns) 2 times more (120 ms vs. 60 ms) similar (13 MB vs. 7 MB)
unrolled_mapreduce(unrolled_sum, max, itr3) mapreduce(sum, max, itr3) Tuple 2 distinct nonempty non-singleton Tuples similar (13 LLVM lines) similar (40 ns vs. 49 ns) similar (38 ms vs. 67 ms) 3 times less (2 MB vs. 7 MB)
unrolled_mapreduce(unrolled_sum, max, itr3) mapreduce(sum, max, itr3) Tuple 4 distinct nonempty non-singleton Tuples similar (26 LLVM lines) similar (49 ns vs. 49 ns) similar (85 ms vs. 63 ms) similar (6 MB vs. 10 MB)
unrolled_mapreduce(unrolled_sum, max, itr3) mapreduce(sum, max, itr3) Tuple 8 distinct nonempty non-singleton Tuples similar (59 LLVM lines) similar (49 ns vs. 49 ns) similar (99 ms vs. 79 ms) similar (10 MB vs. 18 MB)
unrolled_mapreduce(unrolled_sum, max, itr3) mapreduce(sum, max, itr3) Tuple 32 distinct nonempty non-singleton Tuples similar (330 LLVM lines) similar (80 ns vs. 89 ns) similar (127 ms vs. 119 ms) similar (13 MB vs. 22 MB)
unrolled_mapreduce(unrolled_sum, max, itr3) mapreduce(sum, max, itr3) Tuple 128 distinct nonempty non-singleton Tuples better (1477 LLVM lines vs. 521 kB allocs) 293 times less (190 ns vs. 56 μs) 3 times more (344 ms vs. 108 ms) similar (27 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 (61 ms vs. 51 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 (49 ns vs. 49 ns) similar (63 ms vs. 50 ms) similar (3 MB vs. 3 MB)
unrolled_applyat(unrolled_minimum, rand(1:length(itr3)), itr3) minimum(itr3[rand(1:length(itr3))]) Tuple 4 identical nonempty non-singleton Tuples similar (37 LLVM lines w/ switch) similar (50 ns vs. 49 ns) similar (79 ms vs. 49 ms) similar (4 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 (84 ms vs. 54 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 (80 ns vs. 80 ns) similar (93 ms vs. 54 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 128 identical nonempty non-singleton Tuples similar (657 LLVM lines w/ switch) similar (60 ns vs. 49 ns) 2 times more (136 ms vs. 50 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 distinct nonempty non-singleton Tuples better (34 LLVM lines w/ switch vs. 64 B allocs) similar (49 ns vs. 80 ns) similar (64 ms vs. 49 ms) similar (4 MB vs. 3 MB)
unrolled_applyat(unrolled_minimum, rand(1:length(itr3)), itr3) minimum(itr3[rand(1:length(itr3))]) Tuple 4 distinct nonempty non-singleton Tuples better (61 LLVM lines w/ switch vs. 1 MB allocs) 2 times less (49 ns vs. 100 ns) 2 times more (112 ms vs. 50 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 8 distinct nonempty non-singleton Tuples better (130 LLVM lines w/ switch vs. 256 B allocs) 2 times less (49 ns vs. 100 ns) 2 times more (127 ms vs. 49 ms) 3 times more (11 MB vs. 3 MB)
unrolled_applyat(unrolled_minimum, rand(1:length(itr3)), itr3) minimum(itr3[rand(1:length(itr3))]) Tuple 32 distinct nonempty non-singleton Tuples better (481 LLVM lines w/ switch vs. 1 kB allocs) similar (61 ns vs. 120 ns) 3 times more (154 ms vs. 51 ms) 4 times more (14 MB vs. 3 MB)
unrolled_applyat(unrolled_minimum, rand(1:length(itr3)), itr3) minimum(itr3[rand(1:length(itr3))]) Tuple 128 distinct nonempty non-singleton Tuples better (1924 LLVM lines w/ switch vs. 4 kB allocs) 2 times less (120 ns vs. 350 ns) 4 times more (236 ms vs. 53 ms) 8 times more (29 MB vs. 3 MB)
unrolled_foreach(((x1, x2)->@assert(x1 == unrolled_take(x2, Val(length(x1))))), itr1, itr2) foreach(((x1, x2)->@assert(x1 == x2[1:length(x1)])), itr1, itr2) Tuple 1 singleton Tuple similar (optimized out) similar (49 ns vs. 49 ns) 2 times less (73 ms vs. 157 ms) 12 times less (1 MB vs. 15 MB)
unrolled_foreach(((x1, x2)->@assert(x1 == unrolled_take(x2, Val(length(x1))))), itr1, itr2) foreach(((x1, x2)->@assert(x1 == x2[1:length(x1)])), itr1, itr2) Tuple 2 identical singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) 2 times less (73 ms vs. 162 ms) 12 times less (1 MB vs. 16 MB)
unrolled_foreach(((x1, x2)->@assert(x1 == unrolled_take(x2, Val(length(x1))))), itr1, itr2) foreach(((x1, x2)->@assert(x1 == x2[1:length(x1)])), itr1, itr2) Tuple 4 identical singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (92 ms vs. 160 ms) 11 times less (1 MB vs. 16 MB)
unrolled_foreach(((x1, x2)->@assert(x1 == unrolled_take(x2, Val(length(x1))))), itr1, itr2) foreach(((x1, x2)->@assert(x1 == x2[1:length(x1)])), itr1, itr2) Tuple 8 identical singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (91 ms vs. 163 ms) 11 times less (1 MB vs. 16 MB)
unrolled_foreach(((x1, x2)->@assert(x1 == unrolled_take(x2, Val(length(x1))))), itr1, itr2) foreach(((x1, x2)->@assert(x1 == x2[1:length(x1)])), itr1, itr2) Tuple 32 identical singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (96 ms vs. 169 ms) 9 times less (2 MB vs. 16 MB)
unrolled_foreach(((x1, x2)->@assert(x1 == unrolled_take(x2, Val(length(x1))))), itr1, itr2) foreach(((x1, x2)->@assert(x1 == x2[1:length(x1)])), itr1, itr2) Tuple 128 identical singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (100 ms vs. 169 ms) 6 times less (2 MB vs. 16 MB)
unrolled_foreach(((x1, x2)->@assert(x1 == unrolled_take(x2, Val(length(x1))))), itr1, itr2) foreach(((x1, x2)->@assert(x1 == x2[1:length(x1)])), itr1, itr2) Tuple 2 distinct singleton Tuples better (optimized out vs. 8 LLVM lines w/ Const) similar (49 ns vs. 61 ns) 2 times less (83 ms vs. 242 ms) 22 times less (2 MB vs. 39 MB)
unrolled_foreach(((x1, x2)->@assert(x1 == unrolled_take(x2, Val(length(x1))))), itr1, itr2) foreach(((x1, x2)->@assert(x1 == x2[1:length(x1)])), itr1, itr2) Tuple 4 distinct singleton Tuples better (optimized out vs. type-unstable) 5 times less (40 ns vs. 230 ns) 2 times less (123 ms vs. 353 ms) 26 times less (3 MB vs. 70 MB)
unrolled_foreach(((x1, x2)->@assert(x1 == unrolled_take(x2, Val(length(x1))))), itr1, itr2) foreach(((x1, x2)->@assert(x1 == x2[1:length(x1)])), itr1, itr2) Tuple 8 distinct singleton Tuples better (optimized out vs. type-unstable) 10 times less (49 ns vs. 510 ns) 2 times less (159 ms vs. 422 ms) 19 times less (4 MB vs. 85 MB)
unrolled_foreach(((x1, x2)->@assert(x1 == unrolled_take(x2, Val(length(x1))))), itr1, itr2) foreach(((x1, x2)->@assert(x1 == x2[1:length(x1)])), itr1, itr2) Tuple 32 distinct singleton Tuples better (optimized out vs. type-unstable) 147 times less (49 ns vs. 7 μs) 2 times less (164 ms vs. 430 ms) 18 times less (5 MB vs. 86 MB)
unrolled_foreach(((x1, x2)->@assert(x1 == unrolled_take(x2, Val(length(x1))))), itr1, itr2) foreach(((x1, x2)->@assert(x1 == x2[1:length(x1)])), itr1, itr2) Tuple 128 distinct singleton Tuples better (optimized out vs. type-unstable) 785 times less (40 ns vs. 31 μs) 2 times less (170 ms vs. 424 ms) 15 times less (5 MB vs. 85 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. 130 ns) similar (71 ms vs. 119 ms) 5 times less (2 MB 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) similar (71 ms vs. 127 ms) 5 times less (2 MB 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 4 identical nonempty Tuples similar (124 LLVM lines w/ Const) similar (330 ns vs. 341 ns) similar (93 ms vs. 128 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 8 identical nonempty Tuples similar (228 LLVM lines w/ Const) similar (621 ns vs. 621 ns) similar (109 ms vs. 132 ms) 4 times less (3 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. 128 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 (244 ms vs. 126 ms) similar (12 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 distinct nonempty Tuples better (83 LLVM lines w/ Const vs. 96 B allocs) 2 times less (270 ns vs. 651 ns) similar (82 ms vs. 157 ms) 4 times less (3 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 4 distinct nonempty Tuples better (190 LLVM lines w/ Const vs. 512 B allocs) 2 times less (771 ns vs. 2 μs) similar (132 ms vs. 183 ms) 2 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 8 distinct nonempty Tuples better (369 LLVM lines w/ Const vs. 2 kB allocs) 3 times less (2 μs vs. 8 μs) similar (170 ms vs. 238 ms) similar (13 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 32 distinct nonempty Tuples better (1482 LLVM lines w/ Const vs. 33 kB allocs) 4 times less (9 μs vs. 36 μs) similar (241 ms vs. 240 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 distinct nonempty Tuples better (5897 LLVM lines w/ Const vs. 527 kB allocs) 5 times less (37 μs vs. 199 μs) 2 times more (508 ms vs. 239 ms) similar (25 MB vs. 24 MB)
unrolled_applyat(((x1, x2)->@assert(x1 == unrolled_take(x2, Val(length(x1))))), rand(1:length(itr1)), itr1, itr2) let n = rand(1:length(itr1)) @assert itr1[n] == (itr2[n])[1:length(itr1[n])] end Tuple 1 singleton Tuple similar (17 LLVM lines w/ Const) similar (49 ns vs. 49 ns) similar (97 ms vs. 64 ms) similar (3 MB vs. 2 MB)
unrolled_applyat(((x1, x2)->@assert(x1 == unrolled_take(x2, Val(length(x1))))), rand(1:length(itr1)), itr1, itr2) let n = rand(1:length(itr1)) @assert itr1[n] == (itr2[n])[1:length(itr1[n])] end Tuple 2 identical singleton Tuples similar (18 LLVM lines w/ Const) similar (49 ns vs. 49 ns) similar (98 ms vs. 63 ms) similar (4 MB vs. 2 MB)
unrolled_applyat(((x1, x2)->@assert(x1 == unrolled_take(x2, Val(length(x1))))), rand(1:length(itr1)), itr1, itr2) let n = rand(1:length(itr1)) @assert itr1[n] == (itr2[n])[1:length(itr1[n])] end Tuple 4 identical singleton Tuples similar (18 LLVM lines w/ Const) similar (49 ns vs. 49 ns) similar (115 ms vs. 63 ms) similar (4 MB vs. 2 MB)
unrolled_applyat(((x1, x2)->@assert(x1 == unrolled_take(x2, Val(length(x1))))), rand(1:length(itr1)), itr1, itr2) let n = rand(1:length(itr1)) @assert itr1[n] == (itr2[n])[1:length(itr1[n])] end Tuple 8 identical singleton Tuples similar (18 LLVM lines w/ Const) similar (49 ns vs. 49 ns) similar (117 ms vs. 65 ms) 2 times more (4 MB vs. 2 MB)
unrolled_applyat(((x1, x2)->@assert(x1 == unrolled_take(x2, Val(length(x1))))), rand(1:length(itr1)), itr1, itr2) let n = rand(1:length(itr1)) @assert itr1[n] == (itr2[n])[1:length(itr1[n])] end Tuple 32 identical singleton Tuples similar (18 LLVM lines w/ Const) similar (49 ns vs. 49 ns) similar (125 ms vs. 64 ms) 3 times more (6 MB vs. 2 MB)
unrolled_applyat(((x1, x2)->@assert(x1 == unrolled_take(x2, Val(length(x1))))), rand(1:length(itr1)), itr1, itr2) let n = rand(1:length(itr1)) @assert itr1[n] == (itr2[n])[1:length(itr1[n])] end Tuple 128 identical singleton Tuples similar (18 LLVM lines w/ Const) similar (49 ns vs. 49 ns) 2 times more (150 ms vs. 64 ms) 7 times more (15 MB vs. 2 MB)
unrolled_applyat(((x1, x2)->@assert(x1 == unrolled_take(x2, Val(length(x1))))), rand(1:length(itr1)), itr1, itr2) let n = rand(1:length(itr1)) @assert itr1[n] == (itr2[n])[1:length(itr1[n])] end Tuple 2 distinct singleton Tuples better (18 LLVM lines w/ Const vs. type-unstable) similar (49 ns vs. 90 ns) similar (108 ms vs. 71 ms) similar (4 MB vs. 2 MB)
unrolled_applyat(((x1, x2)->@assert(x1 == unrolled_take(x2, Val(length(x1))))), rand(1:length(itr1)), itr1, itr2) let n = rand(1:length(itr1)) @assert itr1[n] == (itr2[n])[1:length(itr1[n])] end Tuple 4 distinct singleton Tuples better (18 LLVM lines w/ Const vs. 64 B allocs) 4 times less (49 ns vs. 230 ns) 2 times more (144 ms vs. 69 ms) 2 times more (5 MB vs. 2 MB)
unrolled_applyat(((x1, x2)->@assert(x1 == unrolled_take(x2, Val(length(x1))))), rand(1:length(itr1)), itr1, itr2) let n = rand(1:length(itr1)) @assert itr1[n] == (itr2[n])[1:length(itr1[n])] end Tuple 8 distinct singleton Tuples better (18 LLVM lines w/ Const vs. 64 B allocs) 4 times less (49 ns vs. 220 ns) 2 times more (188 ms vs. 75 ms) 3 times more (7 MB vs. 2 MB)
unrolled_applyat(((x1, x2)->@assert(x1 == unrolled_take(x2, Val(length(x1))))), rand(1:length(itr1)), itr1, itr2) let n = rand(1:length(itr1)) @assert itr1[n] == (itr2[n])[1:length(itr1[n])] end Tuple 32 distinct singleton Tuples better (18 LLVM lines w/ Const vs. 64 B allocs) 4 times less (49 ns vs. 230 ns) 2 times more (206 ms vs. 83 ms) 3 times more (9 MB vs. 2 MB)
unrolled_applyat(((x1, x2)->@assert(x1 == unrolled_take(x2, Val(length(x1))))), rand(1:length(itr1)), itr1, itr2) let n = rand(1:length(itr1)) @assert itr1[n] == (itr2[n])[1:length(itr1[n])] end Tuple 128 distinct singleton Tuples better (18 LLVM lines w/ Const vs. 64 B allocs) 4 times less (49 ns vs. 220 ns) 2 times more (224 ms vs. 90 ms) 7 times more (18 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 1 nonempty Tuple similar (59 LLVM lines w/ Const) similar (130 ns vs. 130 ns) similar (93 ms vs. 70 ms) 2 times more (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 (93 ms vs. 70 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 4 identical nonempty Tuples similar (147 LLVM lines w/ Const) similar (130 ns vs. 130 ns) similar (117 ms vs. 70 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 identical nonempty Tuples similar (263 LLVM lines w/ Const) similar (130 ns vs. 130 ns) similar (121 ms vs. 70 ms) 2 times more (6 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. 131 ns) 2 times more (165 ms vs. 71 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. 140 ns) 4 times more (378 ms vs. 84 ms) 16 times more (33 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 distinct nonempty Tuples better (100 LLVM lines w/ Const vs. 48 B allocs) similar (130 ns vs. 180 ns) similar (112 ms vs. 70 ms) 2 times more (6 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 4 distinct nonempty Tuples better (213 LLVM lines w/ Const vs. 128 B allocs) 3 times less (130 ns vs. 501 ns) 2 times more (157 ms vs. 75 ms) 4 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 8 distinct nonempty Tuples better (405 LLVM lines w/ Const vs. 272 B allocs) 3 times less (140 ns vs. 541 ns) 2 times more (197 ms vs. 85 ms) 5 times more (16 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 32 distinct nonempty Tuples better (1593 LLVM lines w/ Const vs. 1 kB allocs) 3 times less (150 ns vs. 541 ns) 3 times more (281 ms vs. 87 ms) 8 times more (24 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 distinct nonempty Tuples better (6310 LLVM lines w/ Const vs. 4 kB allocs) 3 times less (210 ns vs. 772 ns) 7 times more (595 ms vs. 81 ms) 22 times more (57 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 (38 ms vs. 44 ms) 2 times less (536 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 2 values similar (optimized out) similar (40 ns vs. 40 ns) similar (38 ms vs. 46 ms) 2 times less (543 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. 40 ns) similar (38 ms vs. 44 ms) 2 times less (568 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 (49 ns vs. 40 ns) similar (47 ms vs. 48 ms) 2 times less (1 MB 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. 49 ns) similar (38 ms vs. 45 ms) 2 times less (573 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. 40 ns) similar (46 ms vs. 47 ms) 2 times less (1 MB 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. 40 ns) similar (48 ms vs. 51 ms) 2 times less (2 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. 40 ns) similar (38 ms vs. 44 ms) 2 times less (574 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. 40 ns) similar (46 ms vs. 47 ms) 2 times less (1 MB 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 (40 ns vs. 49 ns) similar (48 ms vs. 51 ms) 2 times less (2 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. 40 ns) similar (50 ms vs. 55 ms) 2 times less (3 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. 40 ns) similar (51 ms vs. 52 ms) similar (2 MB 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 2 values similar (8 LLVM lines) similar (49 ns vs. 49 ns) similar (50 ms vs. 48 ms) similar (2 MB vs. 3 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. 40 ns) similar (93 ms vs. 64 ms) 2 times less (4 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 (40 ns vs. 40 ns) similar (54 ms vs. 68 ms) 2 times less (4 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 (99 ms vs. 69 ms) similar (6 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 (99 ms vs. 74 ms) similar (7 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. 49 ns) similar (68 ms vs. 130 ms) 3 times less (10 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 (119 ms vs. 61 ms) similar (11 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. 60 ns) similar (120 ms vs. 78 ms) similar (13 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 (135 ms vs. 96 ms) similar (17 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) similar (132 ms vs. 247 ms) 2 times less (30 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 (60 ns vs. 60 ns) similar (51 ms vs. 62 ms) 2 times less (3 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 2 values similar (24 LLVM lines) similar (69 ns vs. 69 ns) similar (53 ms vs. 61 ms) similar (3 MB vs. 5 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 (99 ms vs. 89 ms) 2 times less (6 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. 450 ns) 2 times less (72 ms vs. 163 ms) 2 times less (7 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 (111 ms vs. 90 ms) similar (8 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) similar (119 ms vs. 184 ms) 2 times less (11 MB vs. 25 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) 3 times less (83 ms vs. 292 ms) 3 times less (10 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 (154 ms vs. 85 ms) similar (17 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) similar (123 ms vs. 188 ms) 2 times less (11 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 64 values at depth 5 better (7 LLVM lines vs. 12 kB allocs) similar (6 μs vs. 9 μs) 2 times less (131 ms vs. 342 ms) 3 times less (14 MB vs. 43 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 (84 μs vs. 115 μs) 4 times less (98 ms vs. 486 ms) 6 times less (13 MB vs. 80 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. 220 ns) similar (122 ms vs. 145 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 (14 μs vs. 14 μs) similar (154 ms vs. 120 ms) similar (14 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 (140 ms vs. 114 ms) similar (7 MB vs. 5 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 (32 kB allocs) similar (116 μs vs. 116 μs) similar (146 ms vs. 132 ms) similar (7 MB vs. 5 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) 90 times less (60 ns vs. 5 μs) 2 times more (467 ms vs. 183 ms) 11 times more (151 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 (481 μs vs. 513 μs) similar (172 ms vs. 157 ms) similar (16 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 (826 μs vs. 974 μs) similar (193 ms vs. 166 ms) similar (10 MB vs. 11 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 fewer allocs (8 MB allocs vs. 8 MB allocs) similar (30 ms vs. 31 ms) similar (203 ms vs. 170 ms) similar (18 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) Tuple 32 Bools better (71 LLVM lines vs. 2 kB allocs) similar (228 μs vs. 175 μs) 43 times more (9 s vs. 206 ms) 14 times more (220 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 (15 ms vs. 16 ms) similar (198 ms vs. 180 ms) similar (20 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 (221 ms vs. 246 ms) similar (248 ms vs. 179 ms) similar (14 MB vs. 14 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 (29 ms vs. 24 ms) 23 times more (115 kB vs. 5 kB)
unrolled_any(error, itr) any(error, itr) Tuple 0 nothing similar (optimized out) similar (40 ns vs. 49 ns) similar (24 ms vs. 24 ms) similar (16 kB vs. 30 kB)
unrolled_all(error, itr) all(error, itr) Tuple 0 nothing similar (optimized out) similar (40 ns vs. 49 ns) similar (24 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. 49 ns) similar (24 ms vs. 44 ms) 21 times less (16 kB vs. 343 kB)
unrolled_reduce(error, itr; init = 0) reduce(error, itr; init = 0) Tuple 0 nothing similar (optimized out) similar (40 ns vs. 49 ns) 2 times less (27 ms vs. 56 ms) 8 times less (184 kB vs. 2 MB)
unrolled_accumulate(error, itr) accumulate(error, itr) Tuple 0 nothing similar (optimized out) similar (40 ns vs. 40 ns) similar (24 ms vs. 34 ms) 2 times less (83 kB vs. 177 kB)
unrolled_accumulate(error, itr; init = 0) accumulate(error, itr; init = 0) Tuple 0 nothing similar (optimized out) similar (49 ns vs. 40 ns) similar (24 ms vs. 30 ms) 2 times less (90 kB vs. 223 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 (140 ns vs. 941 ns) 27 times more (1 s vs. 47 ms) 80 times more (142 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) 19 times more (1 s vs. 57 ms) 55 times more (64 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) 1472 times more (84 s vs. 57 ms) 246 times more (283 MB vs. 1 MB)
unrolled_sum(log, itr) sum(log, itr) Tuple 2000 Ints similar (10004 LLVM lines) similar (16 μs vs. 15 μs) 20 times more (1 s vs. 51 ms) 45 times more (166 MB vs. 4 MB)
unrolled_sum(log, itr) sum(log, itr) StaticOneTo 2000 Ints better (optimized out vs. 19 LLVM lines) 299 times less (49 ns vs. 15 μs) 7 times more (652 ms vs. 83 ms) 22 times more (64 MB vs. 3 MB)
unrolled_sum(log, itr) sum(log, itr) StaticOneTo 9000 Ints better (optimized out vs. 19 LLVM lines) 1652 times less (40 ns vs. 66 μs) 53 times more (4 s vs. 83 ms) 101 times more (283 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 (40 ns vs. 49 ns) similar (24 ms vs. 24 ms) similar (55 kB vs. 83 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. 40 ns) similar (24 ms vs. 24 ms) similar (88 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 (21 ms vs. 25 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 (49 ns vs. 40 ns) similar (24 ms vs. 25 ms) similar (55 kB vs. 83 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 (30 ms vs. 24 ms) 2 times less (62 kB vs. 140 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. 40 ns) similar (24 ms vs. 27 ms) 3 times less (89 kB vs. 316 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 (39 ms vs. 29 ms) 2 times less (143 kB vs. 379 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 (39 ms vs. 28 ms) 2 times less (147 kB vs. 431 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 (38 ms vs. 30 ms) 3 times less (152 kB vs. 498 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 (39 ms vs. 28 ms) 3 times less (156 kB vs. 554 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. 40 ns) similar (38 ms vs. 30 ms) 3 times less (161 kB vs. 629 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 (39 ms vs. 33 ms) 6 times less (197 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 (40 ns vs. 40 ns) similar (40 ms vs. 38 ms) 10 times less (269 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) 5962 times less (69 ns vs. 411 μs) similar (51 ms vs. 43 ms) 9 times less (891 kB vs. 8 MB)
UnrolledUtilities.unrolled_map_into_tuple(length, itr) rec_unrolled_map(length, itr) Tuple 256 identical empty singleton Tuples similar (7 LLVM lines w/ Const) 10743 times less (150 ns vs. 2 ms) similar (60 ms vs. 67 ms) 10 times less (2 MB vs. 17 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 (24 ms vs. 24 ms) similar (88 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. 40 ns) similar (24 ms vs. 30 ms) similar (91 kB vs. 141 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. 40 ns) similar (25 ms vs. 28 ms) 3 times less (94 kB vs. 321 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 (50 ms vs. 30 ms) 2 times less (147 kB vs. 384 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 (40 ms vs. 28 ms) 2 times less (152 kB vs. 436 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 (40 ns vs. 40 ns) similar (39 ms vs. 38 ms) 3 times less (156 kB vs. 503 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 (40 ms vs. 31 ms) 3 times less (161 kB vs. 558 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 (40 ns vs. 40 ns) similar (39 ms vs. 30 ms) 3 times less (165 kB vs. 634 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 (40 ns vs. 40 ns) similar (39 ms vs. 32 ms) 6 times less (201 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 (40 ms vs. 38 ms) 10 times less (273 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) 5908 times less (69 ns vs. 408 μs) similar (60 ms vs. 44 ms) 9 times less (896 kB vs. 8 MB)
UnrolledUtilities.unrolled_map_into_tuple(length, itr) rec_unrolled_map(length, itr) Tuple 256 identical nonempty singleton Tuples similar (133 LLVM lines w/ Const) 9810 times less (160 ns vs. 2 ms) similar (81 ms vs. 69 ms) 10 times less (2 MB vs. 17 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 (21 ms vs. 24 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 (23 ms vs. 26 ms) 2 times less (69 kB vs. 147 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 (40 ns vs. 40 ns) similar (21 ms vs. 29 ms) 3 times less (101 kB vs. 324 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 (40 ns vs. 40 ns) similar (35 ms vs. 30 ms) 2 times less (159 kB vs. 396 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 (40 ns vs. 40 ns) similar (35 ms vs. 30 ms) 2 times less (168 kB vs. 455 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 (40 ns vs. 40 ns) similar (36 ms vs. 31 ms) 3 times less (177 kB vs. 538 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 (40 ns vs. 40 ns) similar (35 ms vs. 38 ms) 3 times less (186 kB vs. 603 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. 49 ns) similar (36 ms vs. 32 ms) 2 times less (259 kB vs. 698 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 (49 ns vs. 49 ns) similar (36 ms vs. 37 ms) 5 times less (265 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 (40 ns vs. 49 ns) similar (37 ms vs. 49 ms) 9 times less (408 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) 8015 times less (69 ns vs. 553 μs) similar (57 ms vs. 46 ms) 6 times less (1 MB vs. 9 MB)
UnrolledUtilities.unrolled_map_into_tuple(length, itr) rec_unrolled_map(length, itr) Tuple 256 identical nonempty non-singleton Tuples similar (133 LLVM lines w/ Const) 14377 times less (150 ns vs. 2 ms) similar (82 ms vs. 72 ms) 6 times less (3 MB vs. 18 MB)
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 (24 ms vs. 24 ms) similar (55 kB vs. 83 kB)
UnrolledUtilities.unrolled_map_into_tuple(length, itr) rec_unrolled_map(length, itr) Tuple 2 distinct empty & nonempty singleton Tuples similar (7 LLVM lines w/ Const) similar (40 ns vs. 40 ns) similar (25 ms vs. 24 ms) similar (91 kB vs. 141 kB)
UnrolledUtilities.unrolled_map_into_tuple(length, itr) rec_unrolled_map(length, itr) Tuple 3 distinct empty & nonempty singleton Tuples similar (7 LLVM lines w/ Const) similar (40 ns vs. 40 ns) similar (27 ms vs. 28 ms) 3 times less (99 kB vs. 370 kB)
UnrolledUtilities.unrolled_map_into_tuple(length, itr) rec_unrolled_map(length, itr) Tuple 4 distinct empty & nonempty singleton Tuples similar (7 LLVM lines w/ Const) similar (40 ns vs. 40 ns) similar (38 ms vs. 29 ms) 2 times less (157 kB vs. 437 kB)
UnrolledUtilities.unrolled_map_into_tuple(length, itr) rec_unrolled_map(length, itr) Tuple 5 distinct empty & nonempty singleton Tuples similar (7 LLVM lines w/ Const) similar (40 ns vs. 40 ns) similar (38 ms vs. 36 ms) 3 times less (166 kB vs. 648 kB)
UnrolledUtilities.unrolled_map_into_tuple(length, itr) rec_unrolled_map(length, itr) Tuple 6 distinct empty & nonempty singleton Tuples similar (7 LLVM lines w/ Const) similar (40 ns vs. 40 ns) similar (38 ms vs. 37 ms) 4 times less (176 kB vs. 720 kB)
UnrolledUtilities.unrolled_map_into_tuple(length, itr) rec_unrolled_map(length, itr) Tuple 7 distinct empty & nonempty singleton Tuples similar (7 LLVM lines w/ Const) similar (40 ns vs. 40 ns) similar (39 ms vs. 42 ms) 5 times less (184 kB vs. 935 kB)
UnrolledUtilities.unrolled_map_into_tuple(length, itr) rec_unrolled_map(length, itr) Tuple 8 distinct empty & nonempty singleton Tuples similar (7 LLVM lines w/ Const) similar (49 ns vs. 40 ns) similar (38 ms vs. 45 ms) 5 times less (189 kB vs. 1010 kB)
UnrolledUtilities.unrolled_map_into_tuple(length, itr) rec_unrolled_map(length, itr) Tuple 16 distinct empty & nonempty singleton Tuples similar (7 LLVM lines w/ Const) similar (40 ns vs. 40 ns) similar (39 ms vs. 54 ms) 7 times less (224 kB vs. 2 MB)
UnrolledUtilities.unrolled_map_into_tuple(length, itr) rec_unrolled_map(length, itr) Tuple 32 distinct empty & nonempty singleton Tuples similar (7 LLVM lines w/ Const) similar (40 ns vs. 40 ns) similar (41 ms vs. 62 ms) 11 times less (296 kB vs. 3 MB)
UnrolledUtilities.unrolled_map_into_tuple(length, itr) rec_unrolled_map(length, itr) Tuple 128 distinct empty & nonempty singleton Tuples similar (69 LLVM lines w/ Const) 7433 times less (69 ns vs. 513 μs) similar (60 ms vs. 65 ms) 9 times less (917 kB vs. 8 MB)
UnrolledUtilities.unrolled_map_into_tuple(length, itr) rec_unrolled_map(length, itr) Tuple 256 distinct empty & nonempty singleton Tuples similar (133 LLVM lines w/ Const) 12128 times less (160 ns vs. 2 ms) similar (84 ms vs. 94 ms) 11 times less (2 MB vs. 18 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 (24 ms vs. 24 ms) similar (88 kB vs. 84 kB)
UnrolledUtilities.unrolled_map_into_tuple(length, itr) rec_unrolled_map(length, itr) Tuple 2 distinct nonempty singleton Tuples similar (7 LLVM lines w/ Const) similar (40 ns vs. 40 ns) similar (25 ms vs. 25 ms) similar (96 kB vs. 141 kB)
UnrolledUtilities.unrolled_map_into_tuple(length, itr) rec_unrolled_map(length, itr) Tuple 3 distinct nonempty singleton Tuples similar (7 LLVM lines w/ Const) similar (40 ns vs. 40 ns) similar (25 ms vs. 28 ms) 3 times less (103 kB vs. 375 kB)
UnrolledUtilities.unrolled_map_into_tuple(length, itr) rec_unrolled_map(length, itr) Tuple 4 distinct nonempty singleton Tuples similar (7 LLVM lines w/ Const) similar (40 ns vs. 40 ns) similar (39 ms vs. 29 ms) 2 times less (162 kB vs. 437 kB)
UnrolledUtilities.unrolled_map_into_tuple(length, itr) rec_unrolled_map(length, itr) Tuple 5 distinct nonempty singleton Tuples similar (7 LLVM lines w/ Const) similar (40 ns vs. 40 ns) similar (38 ms vs. 36 ms) 3 times less (171 kB vs. 653 kB)
UnrolledUtilities.unrolled_map_into_tuple(length, itr) rec_unrolled_map(length, itr) Tuple 6 distinct nonempty singleton Tuples similar (7 LLVM lines w/ Const) similar (40 ns vs. 40 ns) similar (38 ms vs. 42 ms) 4 times less (180 kB vs. 720 kB)
UnrolledUtilities.unrolled_map_into_tuple(length, itr) rec_unrolled_map(length, itr) Tuple 7 distinct nonempty singleton Tuples similar (7 LLVM lines w/ Const) similar (40 ns vs. 40 ns) similar (38 ms vs. 43 ms) 4 times less (189 kB vs. 940 kB)
UnrolledUtilities.unrolled_map_into_tuple(length, itr) rec_unrolled_map(length, itr) Tuple 8 distinct nonempty singleton Tuples similar (7 LLVM lines w/ Const) similar (40 ns vs. 40 ns) similar (39 ms vs. 46 ms) 5 times less (193 kB vs. 1015 kB)
UnrolledUtilities.unrolled_map_into_tuple(length, itr) rec_unrolled_map(length, itr) Tuple 16 distinct nonempty singleton Tuples similar (7 LLVM lines w/ Const) similar (40 ns vs. 40 ns) similar (39 ms vs. 55 ms) 7 times less (229 kB vs. 2 MB)
UnrolledUtilities.unrolled_map_into_tuple(length, itr) rec_unrolled_map(length, itr) Tuple 32 distinct nonempty singleton Tuples similar (7 LLVM lines w/ Const) similar (40 ns vs. 40 ns) similar (41 ms vs. 62 ms) 11 times less (301 kB vs. 3 MB)
UnrolledUtilities.unrolled_map_into_tuple(length, itr) rec_unrolled_map(length, itr) Tuple 128 distinct nonempty singleton Tuples similar (69 LLVM lines w/ Const) 11088 times less (69 ns vs. 765 μs) similar (60 ms vs. 66 ms) 9 times less (922 kB vs. 8 MB)
UnrolledUtilities.unrolled_map_into_tuple(length, itr) rec_unrolled_map(length, itr) Tuple 256 distinct nonempty singleton Tuples similar (133 LLVM lines w/ Const) 15409 times less (160 ns vs. 2 ms) similar (82 ms vs. 94 ms) 11 times less (2 MB vs. 18 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. 40 ns) similar (21 ms vs. 24 ms) similar (62 kB vs. 85 kB)
UnrolledUtilities.unrolled_map_into_tuple(length, itr) rec_unrolled_map(length, itr) Tuple 2 distinct nonempty non-singleton Tuples similar (7 LLVM lines w/ Const) similar (40 ns vs. 40 ns) similar (21 ms vs. 25 ms) similar (94 kB vs. 147 kB)
UnrolledUtilities.unrolled_map_into_tuple(length, itr) rec_unrolled_map(length, itr) Tuple 3 distinct nonempty non-singleton Tuples similar (7 LLVM lines w/ Const) similar (40 ns vs. 40 ns) similar (21 ms vs. 29 ms) 3 times less (102 kB vs. 368 kB)
UnrolledUtilities.unrolled_map_into_tuple(length, itr) rec_unrolled_map(length, itr) Tuple 4 distinct nonempty non-singleton Tuples similar (7 LLVM lines w/ Const) similar (40 ns vs. 40 ns) similar (35 ms vs. 30 ms) 2 times less (160 kB vs. 440 kB)
UnrolledUtilities.unrolled_map_into_tuple(length, itr) rec_unrolled_map(length, itr) Tuple 5 distinct nonempty non-singleton Tuples similar (7 LLVM lines w/ Const) similar (40 ns vs. 40 ns) similar (36 ms vs. 38 ms) 3 times less (173 kB vs. 659 kB)
UnrolledUtilities.unrolled_map_into_tuple(length, itr) rec_unrolled_map(length, itr) Tuple 6 distinct nonempty non-singleton Tuples similar (7 LLVM lines w/ Const) similar (40 ns vs. 40 ns) similar (35 ms vs. 39 ms) 3 times less (187 kB vs. 746 kB)
UnrolledUtilities.unrolled_map_into_tuple(length, itr) rec_unrolled_map(length, itr) Tuple 7 distinct nonempty non-singleton Tuples similar (7 LLVM lines w/ Const) similar (40 ns vs. 40 ns) similar (35 ms vs. 46 ms) 4 times less (200 kB vs. 971 kB)
UnrolledUtilities.unrolled_map_into_tuple(length, itr) rec_unrolled_map(length, itr) Tuple 8 distinct nonempty non-singleton Tuples similar (7 LLVM lines w/ Const) similar (40 ns vs. 40 ns) similar (36 ms vs. 47 ms) 5 times less (209 kB vs. 1 MB)
UnrolledUtilities.unrolled_map_into_tuple(length, itr) rec_unrolled_map(length, itr) Tuple 16 distinct nonempty non-singleton Tuples similar (7 LLVM lines w/ Const) similar (40 ns vs. 40 ns) similar (36 ms vs. 60 ms) 7 times less (280 kB vs. 2 MB)
UnrolledUtilities.unrolled_map_into_tuple(length, itr) rec_unrolled_map(length, itr) Tuple 32 distinct nonempty non-singleton Tuples similar (7 LLVM lines w/ Const) similar (40 ns vs. 40 ns) similar (37 ms vs. 74 ms) 10 times less (422 kB vs. 4 MB)
UnrolledUtilities.unrolled_map_into_tuple(length, itr) rec_unrolled_map(length, itr) Tuple 128 distinct nonempty non-singleton Tuples similar (69 LLVM lines w/ Const) 13970 times less (69 ns vs. 964 μs) similar (57 ms vs. 68 ms) 6 times less (1 MB vs. 10 MB)
UnrolledUtilities.unrolled_map_into_tuple(length, itr) rec_unrolled_map(length, itr) Tuple 256 distinct nonempty non-singleton Tuples similar (133 LLVM lines w/ Const) 19811 times less (160 ns vs. 3 ms) similar (83 ms vs. 97 ms) 7 times less (3 MB vs. 20 MB)
unrolled_any(isempty, itr) rec_unrolled_any(isempty, itr) Tuple 1 empty singleton Tuple similar (optimized out) similar (49 ns vs. 40 ns) similar (24 ms vs. 24 ms) similar (55 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. 40 ns) similar (24 ms vs. 24 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 (40 ns vs. 40 ns) similar (21 ms vs. 25 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 (25 ms vs. 25 ms) similar (55 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 (24 ms vs. 27 ms) 2 times less (60 kB vs. 150 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 (25 ms vs. 24 ms) 2 times less (87 kB vs. 206 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 (41 ms vs. 26 ms) similar (142 kB vs. 254 kB)
unrolled_any(isempty, itr) rec_unrolled_any(isempty, itr) Tuple 5 identical empty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (43 ms vs. 24 ms) 2 times less (145 kB vs. 306 kB)
unrolled_any(isempty, itr) rec_unrolled_any(isempty, itr) Tuple 6 identical empty singleton Tuples similar (optimized out) similar (69 ns vs. 69 ns) similar (40 ms vs. 26 ms) 2 times less (149 kB vs. 354 kB)
unrolled_any(isempty, itr) rec_unrolled_any(isempty, itr) Tuple 7 identical empty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (43 ms vs. 25 ms) 2 times less (153 kB vs. 407 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 (41 ms vs. 31 ms) 2 times less (156 kB vs. 456 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 (42 ms vs. 28 ms) 4 times less (186 kB vs. 884 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 (43 ms vs. 29 ms) 7 times less (244 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 (51 ms vs. 36 ms) 10 times less (593 kB vs. 6 MB)
unrolled_any(isempty, itr) rec_unrolled_any(isempty, itr) Tuple 256 identical empty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (62 ms vs. 51 ms) 13 times less (1 MB vs. 14 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 (24 ms vs. 26 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 (40 ns vs. 40 ns) similar (24 ms vs. 26 ms) similar (92 kB vs. 151 kB)
unrolled_any(isempty, itr) rec_unrolled_any(isempty, itr) Tuple 3 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (25 ms vs. 28 ms) 3 times less (96 kB vs. 295 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 (42 ms vs. 30 ms) 2 times less (153 kB vs. 352 kB)
unrolled_any(isempty, itr) rec_unrolled_any(isempty, itr) Tuple 5 identical nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (41 ms vs. 28 ms) 2 times less (159 kB vs. 395 kB)
unrolled_any(isempty, itr) rec_unrolled_any(isempty, itr) Tuple 6 identical nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (40 ms vs. 29 ms) 2 times less (165 kB vs. 452 kB)
unrolled_any(isempty, itr) rec_unrolled_any(isempty, itr) Tuple 7 identical nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (40 ms vs. 28 ms) 2 times less (171 kB vs. 496 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 (41 ms vs. 29 ms) 3 times less (177 kB vs. 555 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 (41 ms vs. 30 ms) 4 times less (224 kB vs. 982 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 (43 ms vs. 34 ms) 5 times less (321 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 (53 ms vs. 40 ms) 7 times less (896 kB vs. 6 MB)
unrolled_any(isempty, itr) rec_unrolled_any(isempty, itr) Tuple 256 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (63 ms vs. 56 ms) 8 times less (2 MB vs. 14 MB)
unrolled_any(isempty, itr) rec_unrolled_any(isempty, itr) Tuple 1 nonempty non-singleton Tuple similar (optimized out) similar (40 ns vs. 40 ns) similar (21 ms vs. 25 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. 40 ns) similar (21 ms vs. 27 ms) 2 times less (70 kB vs. 159 kB)
unrolled_any(isempty, itr) rec_unrolled_any(isempty, itr) Tuple 3 identical nonempty non-singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (21 ms vs. 29 ms) 2 times less (103 kB vs. 298 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 (37 ms vs. 40 ms) 2 times less (165 kB vs. 364 kB)
unrolled_any(isempty, itr) rec_unrolled_any(isempty, itr) Tuple 5 identical nonempty non-singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (37 ms vs. 30 ms) 2 times less (175 kB vs. 412 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 (38 ms vs. 32 ms) 2 times less (186 kB vs. 484 kB)
unrolled_any(isempty, itr) rec_unrolled_any(isempty, itr) Tuple 7 identical nonempty non-singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (37 ms vs. 30 ms) 2 times less (196 kB vs. 534 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 (38 ms vs. 32 ms) 2 times less (270 kB vs. 614 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 (38 ms vs. 36 ms) 4 times less (289 kB vs. 1 MB)
unrolled_any(isempty, itr) rec_unrolled_any(isempty, itr) Tuple 32 identical nonempty non-singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (40 ms vs. 44 ms) 6 times less (456 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 (49 ms vs. 43 ms) 5 times less (1 MB vs. 7 MB)
unrolled_any(isempty, itr) rec_unrolled_any(isempty, itr) Tuple 256 identical nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (62 ms vs. 61 ms) 5 times less (3 MB vs. 15 MB)
unrolled_any(isempty, itr) rec_unrolled_any(isempty, itr) Tuple 1 empty singleton Tuple similar (optimized out) similar (40 ns vs. 40 ns) similar (24 ms vs. 24 ms) similar (55 kB vs. 89 kB)
unrolled_any(isempty, itr) rec_unrolled_any(isempty, itr) Tuple 2 distinct empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (25 ms vs. 28 ms) similar (85 kB vs. 151 kB)
unrolled_any(isempty, itr) rec_unrolled_any(isempty, itr) Tuple 3 distinct empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (25 ms vs. 24 ms) 2 times less (87 kB vs. 207 kB)
unrolled_any(isempty, itr) rec_unrolled_any(isempty, itr) Tuple 4 distinct empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (40 ms vs. 27 ms) similar (143 kB vs. 254 kB)
unrolled_any(isempty, itr) rec_unrolled_any(isempty, itr) Tuple 5 distinct empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (41 ms vs. 24 ms) 2 times less (146 kB vs. 307 kB)
unrolled_any(isempty, itr) rec_unrolled_any(isempty, itr) Tuple 6 distinct empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (41 ms vs. 26 ms) 2 times less (150 kB vs. 355 kB)
unrolled_any(isempty, itr) rec_unrolled_any(isempty, itr) Tuple 7 distinct empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (48 ms vs. 25 ms) 2 times less (154 kB vs. 408 kB)
unrolled_any(isempty, itr) rec_unrolled_any(isempty, itr) Tuple 8 distinct empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (40 ms vs. 26 ms) 2 times less (157 kB vs. 457 kB)
unrolled_any(isempty, itr) rec_unrolled_any(isempty, itr) Tuple 16 distinct empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (41 ms vs. 28 ms) 4 times less (187 kB vs. 885 kB)
unrolled_any(isempty, itr) rec_unrolled_any(isempty, itr) Tuple 32 distinct empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (44 ms vs. 32 ms) 7 times less (245 kB vs. 2 MB)
unrolled_any(isempty, itr) rec_unrolled_any(isempty, itr) Tuple 128 distinct empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (50 ms vs. 36 ms) 10 times less (594 kB vs. 6 MB)
unrolled_any(isempty, itr) rec_unrolled_any(isempty, itr) Tuple 256 distinct empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (62 ms vs. 55 ms) 13 times less (1 MB vs. 14 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 (25 ms vs. 25 ms) similar (88 kB vs. 89 kB)
unrolled_any(isempty, itr) rec_unrolled_any(isempty, itr) Tuple 2 distinct nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (25 ms vs. 26 ms) similar (96 kB vs. 151 kB)
unrolled_any(isempty, itr) rec_unrolled_any(isempty, itr) Tuple 3 distinct nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (25 ms vs. 27 ms) 3 times less (104 kB vs. 349 kB)
unrolled_any(isempty, itr) rec_unrolled_any(isempty, itr) Tuple 4 distinct nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (40 ms vs. 29 ms) 2 times less (165 kB vs. 406 kB)
unrolled_any(isempty, itr) rec_unrolled_any(isempty, itr) Tuple 5 distinct nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (40 ms vs. 35 ms) 3 times less (176 kB vs. 604 kB)
unrolled_any(isempty, itr) rec_unrolled_any(isempty, itr) Tuple 6 distinct nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (43 ms vs. 37 ms) 3 times less (186 kB vs. 662 kB)
unrolled_any(isempty, itr) rec_unrolled_any(isempty, itr) Tuple 7 distinct nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (40 ms vs. 41 ms) 4 times less (196 kB vs. 861 kB)
unrolled_any(isempty, itr) rec_unrolled_any(isempty, itr) Tuple 8 distinct nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (41 ms vs. 43 ms) 4 times less (202 kB vs. 919 kB)
unrolled_any(isempty, itr) rec_unrolled_any(isempty, itr) Tuple 16 distinct nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (41 ms vs. 50 ms) 5 times less (249 kB vs. 1 MB)
unrolled_any(isempty, itr) rec_unrolled_any(isempty, itr) Tuple 32 distinct nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (43 ms vs. 52 ms) 6 times less (345 kB vs. 2 MB)
unrolled_any(isempty, itr) rec_unrolled_any(isempty, itr) Tuple 128 distinct nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (51 ms vs. 60 ms) 7 times less (919 kB vs. 7 MB)
unrolled_any(isempty, itr) rec_unrolled_any(isempty, itr) Tuple 256 distinct nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (65 ms vs. 80 ms) 8 times less (2 MB vs. 15 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 (20 ms vs. 25 ms) similar (62 kB vs. 90 kB)
unrolled_any(isempty, itr) rec_unrolled_any(isempty, itr) Tuple 2 distinct nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (21 ms vs. 27 ms) similar (99 kB vs. 159 kB)
unrolled_any(isempty, itr) rec_unrolled_any(isempty, itr) Tuple 3 distinct nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (21 ms vs. 29 ms) 3 times less (112 kB vs. 352 kB)
unrolled_any(isempty, itr) rec_unrolled_any(isempty, itr) Tuple 4 distinct nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (37 ms vs. 31 ms) 2 times less (178 kB vs. 423 kB)
unrolled_any(isempty, itr) rec_unrolled_any(isempty, itr) Tuple 5 distinct nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (37 ms vs. 36 ms) 3 times less (192 kB vs. 621 kB)
unrolled_any(isempty, itr) rec_unrolled_any(isempty, itr) Tuple 6 distinct nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (38 ms vs. 39 ms) 3 times less (207 kB vs. 697 kB)
unrolled_any(isempty, itr) rec_unrolled_any(isempty, itr) Tuple 7 distinct nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (38 ms vs. 44 ms) 4 times less (221 kB vs. 899 kB)
unrolled_any(isempty, itr) rec_unrolled_any(isempty, itr) Tuple 8 distinct nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (37 ms vs. 46 ms) 4 times less (231 kB vs. 979 kB)
unrolled_any(isempty, itr) rec_unrolled_any(isempty, itr) Tuple 16 distinct nonempty non-singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (38 ms vs. 57 ms) 5 times less (314 kB vs. 2 MB)
unrolled_any(isempty, itr) rec_unrolled_any(isempty, itr) Tuple 32 distinct nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (41 ms vs. 68 ms) 6 times less (481 kB vs. 3 MB)
unrolled_any(isempty, itr) rec_unrolled_any(isempty, itr) Tuple 128 distinct nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (49 ms vs. 61 ms) 5 times less (1 MB vs. 8 MB)
unrolled_any(isempty, itr) rec_unrolled_any(isempty, itr) Tuple 256 distinct nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (62 ms vs. 84 ms) 6 times less (3 MB vs. 17 MB)
unrolled_all(isempty, itr) rec_unrolled_all(isempty, itr) Tuple 1 empty singleton Tuple similar (optimized out) similar (40 ns vs. 40 ns) similar (24 ms vs. 25 ms) similar (55 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 (24 ms vs. 25 ms) similar (88 kB vs. 89 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 (21 ms vs. 25 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 (40 ns vs. 40 ns) similar (24 ms vs. 25 ms) similar (55 kB vs. 89 kB)
unrolled_all(isempty, itr) rec_unrolled_all(isempty, itr) Tuple 2 identical empty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (24 ms vs. 33 ms) 2 times less (63 kB vs. 151 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 (24 ms vs. 27 ms) 3 times less (92 kB vs. 296 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 (40 ms vs. 29 ms) 2 times less (149 kB vs. 353 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 (40 ms vs. 28 ms) 2 times less (155 kB vs. 396 kB)
unrolled_all(isempty, itr) rec_unrolled_all(isempty, itr) Tuple 6 identical empty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (41 ms vs. 30 ms) 2 times less (161 kB vs. 454 kB)
unrolled_all(isempty, itr) rec_unrolled_all(isempty, itr) Tuple 7 identical empty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (40 ms vs. 28 ms) 2 times less (167 kB vs. 498 kB)
unrolled_all(isempty, itr) rec_unrolled_all(isempty, itr) Tuple 8 identical empty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (41 ms vs. 30 ms) 3 times less (173 kB vs. 556 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 (41 ms vs. 31 ms) 4 times less (220 kB vs. 985 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 (53 ms vs. 33 ms) 5 times less (317 kB vs. 2 MB)
unrolled_all(isempty, itr) rec_unrolled_all(isempty, itr) Tuple 128 identical empty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (50 ms vs. 38 ms) 7 times less (893 kB vs. 6 MB)
unrolled_all(isempty, itr) rec_unrolled_all(isempty, itr) Tuple 256 identical empty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (59 ms vs. 62 ms) 8 times less (2 MB vs. 14 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 (24 ms vs. 25 ms) similar (88 kB vs. 89 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 (24 ms vs. 26 ms) similar (90 kB vs. 151 kB)
unrolled_all(isempty, itr) rec_unrolled_all(isempty, itr) Tuple 3 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (24 ms vs. 24 ms) 2 times less (91 kB vs. 213 kB)
unrolled_all(isempty, itr) rec_unrolled_all(isempty, itr) Tuple 4 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (42 ms vs. 27 ms) similar (146 kB vs. 257 kB)
unrolled_all(isempty, itr) rec_unrolled_all(isempty, itr) Tuple 5 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (42 ms vs. 25 ms) 2 times less (150 kB vs. 313 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 (40 ms vs. 27 ms) 2 times less (153 kB vs. 357 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 (41 ms vs. 25 ms) 2 times less (157 kB vs. 415 kB)
unrolled_all(isempty, itr) rec_unrolled_all(isempty, itr) Tuple 8 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (41 ms vs. 26 ms) 2 times less (161 kB vs. 460 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 (41 ms vs. 27 ms) 4 times less (190 kB vs. 889 kB)
unrolled_all(isempty, itr) rec_unrolled_all(isempty, itr) Tuple 32 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (43 ms vs. 29 ms) 7 times less (248 kB vs. 2 MB)
unrolled_all(isempty, itr) rec_unrolled_all(isempty, itr) Tuple 128 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (49 ms vs. 36 ms) 10 times less (599 kB vs. 6 MB)
unrolled_all(isempty, itr) rec_unrolled_all(isempty, itr) Tuple 256 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (58 ms vs. 55 ms) 13 times less (1 MB vs. 14 MB)
unrolled_all(isempty, itr) rec_unrolled_all(isempty, itr) Tuple 1 nonempty non-singleton Tuple similar (optimized out) similar (40 ns vs. 49 ns) similar (21 ms vs. 26 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. 49 ns) similar (21 ms vs. 27 ms) 2 times less (63 kB vs. 159 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 (21 ms vs. 26 ms) 2 times less (90 kB vs. 217 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 (37 ms vs. 28 ms) similar (145 kB vs. 274 kB)
unrolled_all(isempty, itr) rec_unrolled_all(isempty, itr) Tuple 5 identical nonempty non-singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (37 ms vs. 26 ms) 2 times less (149 kB vs. 331 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 (37 ms vs. 28 ms) 2 times less (152 kB vs. 393 kB)
unrolled_all(isempty, itr) rec_unrolled_all(isempty, itr) Tuple 7 identical nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (37 ms vs. 29 ms) 2 times less (156 kB vs. 453 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 (38 ms vs. 29 ms) 2 times less (224 kB vs. 523 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 (38 ms vs. 32 ms) 6 times less (189 kB vs. 1 MB)
unrolled_all(isempty, itr) rec_unrolled_all(isempty, itr) Tuple 32 identical nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (39 ms vs. 41 ms) 11 times less (247 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 (47 ms vs. 40 ms) 11 times less (598 kB vs. 7 MB)
unrolled_all(isempty, itr) rec_unrolled_all(isempty, itr) Tuple 256 identical nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (56 ms vs. 57 ms) 13 times less (1 MB vs. 14 MB)
unrolled_all(isempty, itr) rec_unrolled_all(isempty, itr) Tuple 1 empty singleton Tuple similar (optimized out) similar (40 ns vs. 40 ns) similar (24 ms vs. 25 ms) similar (55 kB vs. 89 kB)
unrolled_all(isempty, itr) rec_unrolled_all(isempty, itr) Tuple 2 distinct empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (24 ms vs. 26 ms) similar (92 kB vs. 151 kB)
unrolled_all(isempty, itr) rec_unrolled_all(isempty, itr) Tuple 3 distinct empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (25 ms vs. 25 ms) 2 times less (94 kB vs. 224 kB)
unrolled_all(isempty, itr) rec_unrolled_all(isempty, itr) Tuple 4 distinct empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (40 ms vs. 27 ms) similar (149 kB vs. 270 kB)
unrolled_all(isempty, itr) rec_unrolled_all(isempty, itr) Tuple 5 distinct empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (41 ms vs. 24 ms) 2 times less (153 kB vs. 325 kB)
unrolled_all(isempty, itr) rec_unrolled_all(isempty, itr) Tuple 6 distinct empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (40 ms vs. 27 ms) 2 times less (156 kB vs. 371 kB)
unrolled_all(isempty, itr) rec_unrolled_all(isempty, itr) Tuple 7 distinct empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (42 ms vs. 24 ms) 2 times less (160 kB vs. 427 kB)
unrolled_all(isempty, itr) rec_unrolled_all(isempty, itr) Tuple 8 distinct empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (40 ms vs. 26 ms) 2 times less (164 kB vs. 474 kB)
unrolled_all(isempty, itr) rec_unrolled_all(isempty, itr) Tuple 16 distinct empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (41 ms vs. 28 ms) 4 times less (193 kB vs. 903 kB)
unrolled_all(isempty, itr) rec_unrolled_all(isempty, itr) Tuple 32 distinct empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (43 ms vs. 30 ms) 7 times less (251 kB vs. 2 MB)
unrolled_all(isempty, itr) rec_unrolled_all(isempty, itr) Tuple 128 distinct empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (50 ms vs. 36 ms) 10 times less (602 kB vs. 6 MB)
unrolled_all(isempty, itr) rec_unrolled_all(isempty, itr) Tuple 256 distinct empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (57 ms vs. 57 ms) 13 times less (1 MB vs. 14 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. 26 ms) similar (88 kB vs. 89 kB)
unrolled_all(isempty, itr) rec_unrolled_all(isempty, itr) Tuple 2 distinct nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (25 ms vs. 26 ms) similar (90 kB vs. 151 kB)
unrolled_all(isempty, itr) rec_unrolled_all(isempty, itr) Tuple 3 distinct nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (25 ms vs. 24 ms) 2 times less (92 kB vs. 213 kB)
unrolled_all(isempty, itr) rec_unrolled_all(isempty, itr) Tuple 4 distinct nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (40 ms vs. 27 ms) similar (147 kB vs. 257 kB)
unrolled_all(isempty, itr) rec_unrolled_all(isempty, itr) Tuple 5 distinct nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (41 ms vs. 26 ms) 2 times less (150 kB vs. 314 kB)
unrolled_all(isempty, itr) rec_unrolled_all(isempty, itr) Tuple 6 distinct nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (46 ms vs. 27 ms) 2 times less (154 kB vs. 358 kB)
unrolled_all(isempty, itr) rec_unrolled_all(isempty, itr) Tuple 7 distinct nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (42 ms vs. 24 ms) 2 times less (158 kB vs. 416 kB)
unrolled_all(isempty, itr) rec_unrolled_all(isempty, itr) Tuple 8 distinct nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (40 ms vs. 27 ms) 2 times less (161 kB vs. 461 kB)
unrolled_all(isempty, itr) rec_unrolled_all(isempty, itr) Tuple 16 distinct nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (41 ms vs. 28 ms) 4 times less (191 kB vs. 890 kB)
unrolled_all(isempty, itr) rec_unrolled_all(isempty, itr) Tuple 32 distinct nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (42 ms vs. 29 ms) 7 times less (249 kB vs. 2 MB)
unrolled_all(isempty, itr) rec_unrolled_all(isempty, itr) Tuple 128 distinct nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (48 ms vs. 39 ms) 10 times less (600 kB vs. 6 MB)
unrolled_all(isempty, itr) rec_unrolled_all(isempty, itr) Tuple 256 distinct nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (56 ms vs. 57 ms) 13 times less (1 MB vs. 14 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 (21 ms vs. 27 ms) similar (62 kB vs. 90 kB)
unrolled_all(isempty, itr) rec_unrolled_all(isempty, itr) Tuple 2 distinct nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (21 ms vs. 27 ms) similar (88 kB vs. 159 kB)
unrolled_all(isempty, itr) rec_unrolled_all(isempty, itr) Tuple 3 distinct nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (21 ms vs. 26 ms) 2 times less (90 kB vs. 217 kB)
unrolled_all(isempty, itr) rec_unrolled_all(isempty, itr) Tuple 4 distinct nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (38 ms vs. 29 ms) similar (146 kB vs. 274 kB)
unrolled_all(isempty, itr) rec_unrolled_all(isempty, itr) Tuple 5 distinct nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (38 ms vs. 27 ms) 2 times less (149 kB vs. 331 kB)
unrolled_all(isempty, itr) rec_unrolled_all(isempty, itr) Tuple 6 distinct nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (38 ms vs. 29 ms) 2 times less (153 kB vs. 394 kB)
unrolled_all(isempty, itr) rec_unrolled_all(isempty, itr) Tuple 7 distinct nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (38 ms vs. 28 ms) 2 times less (157 kB vs. 454 kB)
unrolled_all(isempty, itr) rec_unrolled_all(isempty, itr) Tuple 8 distinct nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (37 ms vs. 30 ms) 3 times less (160 kB vs. 523 kB)
unrolled_all(isempty, itr) rec_unrolled_all(isempty, itr) Tuple 16 distinct nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (39 ms vs. 35 ms) 6 times less (190 kB vs. 1 MB)
unrolled_all(isempty, itr) rec_unrolled_all(isempty, itr) Tuple 32 distinct nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (39 ms vs. 45 ms) 10 times less (248 kB vs. 3 MB)
unrolled_all(isempty, itr) rec_unrolled_all(isempty, itr) Tuple 128 distinct nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (47 ms vs. 39 ms) 11 times less (599 kB vs. 7 MB)
unrolled_all(isempty, itr) rec_unrolled_all(isempty, itr) Tuple 256 distinct nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (56 ms vs. 62 ms) 13 times less (1 MB vs. 14 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. 40 ns) similar (50 ms vs. 46 ms) similar (66 kB vs. 88 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 (40 ns vs. 40 ns) similar (46 ms vs. 46 ms) similar (99 kB vs. 93 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 (40 ns vs. 40 ns) similar (44 ms vs. 46 ms) similar (73 kB vs. 91 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 (46 ms vs. 46 ms) similar (66 kB vs. 88 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 (40 ns vs. 40 ns) similar (46 ms vs. 48 ms) similar (72 kB vs. 136 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 (47 ms vs. 51 ms) 2 times less (100 kB vs. 258 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 (64 ms vs. 50 ms) similar (153 kB vs. 305 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 (40 ns vs. 49 ns) similar (65 ms vs. 50 ms) 2 times less (157 kB vs. 341 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. 40 ns) similar (64 ms vs. 50 ms) 2 times less (161 kB vs. 389 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 (40 ns vs. 40 ns) similar (64 ms vs. 51 ms) 2 times less (164 kB vs. 426 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 (49 ns vs. 40 ns) similar (65 ms vs. 51 ms) 2 times less (168 kB vs. 475 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 (64 ms vs. 52 ms) 4 times less (197 kB vs. 836 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 (40 ns vs. 40 ns) similar (66 ms vs. 54 ms) 6 times less (256 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 (40 ns vs. 40 ns) similar (67 ms vs. 61 ms) 9 times less (606 kB vs. 6 MB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) rec_unrolled_foreach((x->@assert(length(x) <= 7)), itr) Tuple 256 identical empty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (73 ms vs. 75 ms) 12 times less (1 MB vs. 13 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 (47 ms vs. 47 ms) similar (99 kB vs. 93 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 (47 ms vs. 48 ms) similar (102 kB vs. 140 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. 40 ns) similar (48 ms vs. 53 ms) 2 times less (105 kB vs. 263 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 (67 ms vs. 52 ms) similar (158 kB vs. 310 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 (40 ns vs. 40 ns) similar (64 ms vs. 51 ms) 2 times less (162 kB vs. 346 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 (64 ms vs. 54 ms) 2 times less (165 kB vs. 394 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. 49 ns) similar (74 ms vs. 51 ms) 2 times less (169 kB vs. 431 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 (65 ms vs. 63 ms) 2 times less (172 kB vs. 480 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. 40 ns) similar (65 ms vs. 51 ms) 4 times less (201 kB vs. 841 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 (40 ns vs. 40 ns) similar (65 ms vs. 53 ms) 6 times less (260 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 (70 ms vs. 61 ms) 9 times less (610 kB vs. 6 MB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) rec_unrolled_foreach((x->@assert(length(x) <= 7)), itr) Tuple 256 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (72 ms vs. 80 ms) 12 times less (1 MB vs. 13 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 (44 ms vs. 47 ms) similar (73 kB vs. 91 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 (43 ms vs. 47 ms) similar (80 kB vs. 142 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 (55 ms vs. 51 ms) 2 times less (112 kB vs. 268 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 (40 ns vs. 40 ns) similar (61 ms vs. 52 ms) similar (169 kB vs. 324 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 (61 ms vs. 52 ms) 2 times less (178 kB vs. 365 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 (63 ms vs. 53 ms) 2 times less (186 kB vs. 426 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 (62 ms vs. 52 ms) 2 times less (194 kB vs. 470 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 (62 ms vs. 54 ms) 2 times less (266 kB vs. 539 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 (40 ns vs. 40 ns) similar (61 ms vs. 65 ms) 4 times less (265 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. 40 ns) similar (62 ms vs. 64 ms) 6 times less (395 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 (65 ms vs. 66 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 256 identical nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (71 ms vs. 92 ms) 6 times less (2 MB vs. 13 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 (46 ms vs. 46 ms) similar (66 kB vs. 88 kB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) rec_unrolled_foreach((x->@assert(length(x) <= 7)), itr) Tuple 2 distinct empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (47 ms vs. 46 ms) similar (111 kB vs. 151 kB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) rec_unrolled_foreach((x->@assert(length(x) <= 7)), itr) Tuple 3 distinct empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (47 ms vs. 50 ms) 2 times less (128 kB vs. 367 kB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) rec_unrolled_foreach((x->@assert(length(x) <= 7)), itr) Tuple 4 distinct empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (66 ms vs. 51 ms) 2 times less (196 kB vs. 428 kB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) rec_unrolled_foreach((x->@assert(length(x) <= 7)), itr) Tuple 5 distinct empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (63 ms vs. 57 ms) 2 times less (213 kB vs. 612 kB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) rec_unrolled_foreach((x->@assert(length(x) <= 7)), itr) Tuple 6 distinct empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (63 ms vs. 57 ms) 2 times less (231 kB vs. 674 kB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) rec_unrolled_foreach((x->@assert(length(x) <= 7)), itr) Tuple 7 distinct empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (64 ms vs. 73 ms) 3 times less (248 kB vs. 859 kB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) rec_unrolled_foreach((x->@assert(length(x) <= 7)), itr) Tuple 8 distinct empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (64 ms vs. 69 ms) 3 times less (252 kB vs. 907 kB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) rec_unrolled_foreach((x->@assert(length(x) <= 7)), itr) Tuple 16 distinct empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (64 ms vs. 73 ms) 4 times less (281 kB vs. 1 MB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) rec_unrolled_foreach((x->@assert(length(x) <= 7)), itr) Tuple 32 distinct empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (65 ms vs. 74 ms) 6 times less (339 kB vs. 2 MB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) rec_unrolled_foreach((x->@assert(length(x) <= 7)), itr) Tuple 128 distinct empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (68 ms vs. 81 ms) 9 times less (688 kB vs. 6 MB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) rec_unrolled_foreach((x->@assert(length(x) <= 7)), itr) Tuple 256 distinct empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (75 ms vs. 102 ms) 11 times less (1 MB vs. 13 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 (46 ms vs. 46 ms) similar (99 kB vs. 93 kB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) rec_unrolled_foreach((x->@assert(length(x) <= 7)), itr) Tuple 2 distinct nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (47 ms vs. 46 ms) similar (116 kB vs. 156 kB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) rec_unrolled_foreach((x->@assert(length(x) <= 7)), itr) Tuple 3 distinct nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (49 ms vs. 50 ms) 2 times less (133 kB vs. 371 kB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) rec_unrolled_foreach((x->@assert(length(x) <= 7)), itr) Tuple 4 distinct nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (65 ms vs. 51 ms) 2 times less (200 kB vs. 432 kB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) rec_unrolled_foreach((x->@assert(length(x) <= 7)), itr) Tuple 5 distinct nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (66 ms vs. 57 ms) 2 times less (218 kB vs. 617 kB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) rec_unrolled_foreach((x->@assert(length(x) <= 7)), itr) Tuple 6 distinct nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (64 ms vs. 58 ms) 2 times less (235 kB vs. 678 kB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) rec_unrolled_foreach((x->@assert(length(x) <= 7)), itr) Tuple 7 distinct nonempty singleton Tuples similar (optimized out) similar (69 ns vs. 69 ns) similar (65 ms vs. 64 ms) 3 times less (253 kB vs. 863 kB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) rec_unrolled_foreach((x->@assert(length(x) <= 7)), itr) Tuple 8 distinct nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (64 ms vs. 64 ms) 3 times less (256 kB vs. 912 kB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) rec_unrolled_foreach((x->@assert(length(x) <= 7)), itr) Tuple 16 distinct nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (66 ms vs. 72 ms) 4 times less (285 kB vs. 1 MB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) rec_unrolled_foreach((x->@assert(length(x) <= 7)), itr) Tuple 32 distinct nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (66 ms vs. 73 ms) 6 times less (344 kB vs. 2 MB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) rec_unrolled_foreach((x->@assert(length(x) <= 7)), itr) Tuple 128 distinct nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (68 ms vs. 84 ms) 9 times less (692 kB vs. 6 MB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) rec_unrolled_foreach((x->@assert(length(x) <= 7)), itr) Tuple 256 distinct nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (72 ms vs. 109 ms) 11 times less (1 MB vs. 13 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 (43 ms vs. 47 ms) similar (73 kB vs. 91 kB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) rec_unrolled_foreach((x->@assert(length(x) <= 7)), itr) Tuple 2 distinct nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (43 ms vs. 48 ms) similar (114 kB vs. 153 kB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) rec_unrolled_foreach((x->@assert(length(x) <= 7)), itr) Tuple 3 distinct nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (44 ms vs. 51 ms) 2 times less (131 kB vs. 367 kB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) rec_unrolled_foreach((x->@assert(length(x) <= 7)), itr) Tuple 4 distinct nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (61 ms vs. 52 ms) 2 times less (198 kB vs. 433 kB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) rec_unrolled_foreach((x->@assert(length(x) <= 7)), itr) Tuple 5 distinct nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (61 ms vs. 59 ms) 2 times less (220 kB vs. 622 kB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) rec_unrolled_foreach((x->@assert(length(x) <= 7)), itr) Tuple 6 distinct nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (62 ms vs. 60 ms) 2 times less (242 kB vs. 697 kB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) rec_unrolled_foreach((x->@assert(length(x) <= 7)), itr) Tuple 7 distinct nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (70 ms vs. 67 ms) 3 times less (264 kB vs. 890 kB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) rec_unrolled_foreach((x->@assert(length(x) <= 7)), itr) Tuple 8 distinct nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (61 ms vs. 69 ms) 3 times less (272 kB vs. 959 kB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) rec_unrolled_foreach((x->@assert(length(x) <= 7)), itr) Tuple 16 distinct nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (63 ms vs. 78 ms) 4 times less (336 kB vs. 2 MB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) rec_unrolled_foreach((x->@assert(length(x) <= 7)), itr) Tuple 32 distinct nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (65 ms vs. 89 ms) 6 times less (465 kB vs. 3 MB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) rec_unrolled_foreach((x->@assert(length(x) <= 7)), itr) Tuple 128 distinct nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (66 ms vs. 87 ms) 6 times less (1 MB vs. 7 MB)
unrolled_foreach((x->@assert(length(x) <= 7)), itr) rec_unrolled_foreach((x->@assert(length(x) <= 7)), itr) Tuple 256 distinct nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (72 ms vs. 106 ms) 7 times less (2 MB vs. 16 MB)
unrolled_reduce(tuple, itr, ()) rec_unrolled_reduce(tuple, itr, ()) Tuple 1 empty singleton Tuple similar (optimized out) similar (49 ns vs. 40 ns) similar (24 ms vs. 23 ms) similar (60 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 (24 ms vs. 24 ms) similar (89 kB vs. 116 kB)
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 (24 ms vs. 24 ms) similar (152 kB vs. 117 kB)
unrolled_reduce(tuple, itr, ()) rec_unrolled_reduce(tuple, itr, ()) Tuple 1 empty singleton Tuple similar (optimized out) similar (40 ns vs. 40 ns) similar (24 ms vs. 23 ms) similar (60 kB vs. 116 kB)
unrolled_reduce(tuple, itr, ()) rec_unrolled_reduce(tuple, itr, ()) Tuple 2 identical empty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (24 ms vs. 25 ms) 2 times less (66 kB vs. 166 kB)
unrolled_reduce(tuple, itr, ()) rec_unrolled_reduce(tuple, itr, ()) Tuple 3 identical empty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (25 ms vs. 27 ms) 3 times less (93 kB vs. 319 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 (50 ms vs. 28 ms) 5 times more (2 MB vs. 370 kB)
unrolled_reduce(tuple, itr, ()) rec_unrolled_reduce(tuple, itr, ()) Tuple 5 identical empty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (49 ms vs. 34 ms) 3 times more (2 MB vs. 588 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 (49 ms vs. 35 ms) 2 times more (2 MB vs. 641 kB)
unrolled_reduce(tuple, itr, ()) rec_unrolled_reduce(tuple, itr, ()) Tuple 7 identical empty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (51 ms vs. 41 ms) 2 times more (2 MB vs. 862 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 (49 ms vs. 41 ms) 2 times more (2 MB vs. 916 kB)
unrolled_reduce(tuple, itr, ()) rec_unrolled_reduce(tuple, itr, ()) Tuple 16 identical empty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (50 ms vs. 72 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 (51 ms vs. 128 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 (40 ns vs. 40 ns) similar (24 ms vs. 24 ms) similar (89 kB vs. 116 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 (25 ms vs. 25 ms) similar (91 kB vs. 166 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 (24 ms vs. 28 ms) 3 times less (93 kB vs. 319 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 (51 ms vs. 28 ms) 5 times more (2 MB vs. 370 kB)
unrolled_reduce(tuple, itr, ()) rec_unrolled_reduce(tuple, itr, ()) Tuple 5 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (50 ms vs. 34 ms) 3 times more (2 MB vs. 589 kB)
unrolled_reduce(tuple, itr, ()) rec_unrolled_reduce(tuple, itr, ()) Tuple 6 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (51 ms vs. 36 ms) 2 times more (2 MB vs. 642 kB)
unrolled_reduce(tuple, itr, ()) rec_unrolled_reduce(tuple, itr, ()) Tuple 7 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (50 ms vs. 41 ms) 2 times more (2 MB vs. 862 kB)
unrolled_reduce(tuple, itr, ()) rec_unrolled_reduce(tuple, itr, ()) Tuple 8 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (49 ms vs. 42 ms) 2 times more (2 MB vs. 917 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 (49 ms vs. 69 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 (51 ms vs. 132 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 (49 ns vs. 49 ns) similar (25 ms vs. 25 ms) similar (152 kB vs. 117 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 (25 ms vs. 25 ms) similar (166 kB vs. 172 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. 49 ns) similar (24 ms vs. 33 ms) 2 times less (207 kB vs. 433 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 (51 ms vs. 35 ms) 4 times more (2 MB vs. 493 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 (50 ms vs. 42 ms) 2 times more (2 MB vs. 752 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 (50 ms vs. 52 ms) 2 times more (2 MB vs. 819 kB)
unrolled_reduce(tuple, itr, ()) rec_unrolled_reduce(tuple, itr, ()) Tuple 7 identical nonempty non-singleton Tuples similar (16 LLVM lines) similar (49 ns vs. 49 ns) similar (50 ms vs. 51 ms) similar (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 (50 ms vs. 53 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. 50 ns) similar (52 ms vs. 91 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. 60 ns) 3 times less (55 ms vs. 179 ms) 2 times less (2 MB vs. 6 MB)
unrolled_reduce(tuple, itr, ()) rec_unrolled_reduce(tuple, itr, ()) Tuple 1 empty singleton Tuple similar (optimized out) similar (49 ns vs. 40 ns) similar (24 ms vs. 23 ms) similar (60 kB vs. 116 kB)
unrolled_reduce(tuple, itr, ()) rec_unrolled_reduce(tuple, itr, ()) Tuple 2 distinct empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (25 ms vs. 25 ms) similar (91 kB vs. 166 kB)
unrolled_reduce(tuple, itr, ()) rec_unrolled_reduce(tuple, itr, ()) Tuple 3 distinct empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (25 ms vs. 28 ms) 3 times less (94 kB vs. 319 kB)
unrolled_reduce(tuple, itr, ()) rec_unrolled_reduce(tuple, itr, ()) Tuple 4 distinct empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (49 ms vs. 28 ms) 4 times more (2 MB vs. 404 kB)
unrolled_reduce(tuple, itr, ()) rec_unrolled_reduce(tuple, itr, ()) Tuple 5 distinct empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (49 ms vs. 35 ms) 2 times more (2 MB vs. 689 kB)
unrolled_reduce(tuple, itr, ()) rec_unrolled_reduce(tuple, itr, ()) Tuple 6 distinct empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (49 ms vs. 36 ms) 2 times more (2 MB vs. 846 kB)
unrolled_reduce(tuple, itr, ()) rec_unrolled_reduce(tuple, itr, ()) Tuple 7 distinct empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (49 ms vs. 43 ms) similar (2 MB vs. 1 MB)
unrolled_reduce(tuple, itr, ()) rec_unrolled_reduce(tuple, itr, ()) Tuple 8 distinct empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (49 ms vs. 43 ms) similar (2 MB vs. 1 MB)
unrolled_reduce(tuple, itr, ()) rec_unrolled_reduce(tuple, itr, ()) Tuple 16 distinct empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (49 ms vs. 80 ms) 2 times less (2 MB vs. 5 MB)
unrolled_reduce(tuple, itr, ()) rec_unrolled_reduce(tuple, itr, ()) Tuple 32 distinct empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) 4 times less (50 ms vs. 248 ms) 9 times less (2 MB vs. 19 MB)
unrolled_reduce(tuple, itr, ()) rec_unrolled_reduce(tuple, itr, ()) Tuple 1 nonempty singleton Tuple similar (optimized out) similar (40 ns vs. 40 ns) similar (24 ms vs. 24 ms) similar (89 kB vs. 116 kB)
unrolled_reduce(tuple, itr, ()) rec_unrolled_reduce(tuple, itr, ()) Tuple 2 distinct nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (24 ms vs. 25 ms) similar (91 kB vs. 166 kB)
unrolled_reduce(tuple, itr, ()) rec_unrolled_reduce(tuple, itr, ()) Tuple 3 distinct nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (25 ms vs. 27 ms) 3 times less (94 kB vs. 353 kB)
unrolled_reduce(tuple, itr, ()) rec_unrolled_reduce(tuple, itr, ()) Tuple 4 distinct nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (50 ms vs. 28 ms) 4 times more (2 MB vs. 438 kB)
unrolled_reduce(tuple, itr, ()) rec_unrolled_reduce(tuple, itr, ()) Tuple 5 distinct nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (51 ms vs. 34 ms) 2 times more (2 MB vs. 791 kB)
unrolled_reduce(tuple, itr, ()) rec_unrolled_reduce(tuple, itr, ()) Tuple 6 distinct nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (49 ms vs. 36 ms) 2 times more (2 MB vs. 949 kB)
unrolled_reduce(tuple, itr, ()) rec_unrolled_reduce(tuple, itr, ()) Tuple 7 distinct nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (49 ms vs. 43 ms) similar (2 MB vs. 1 MB)
unrolled_reduce(tuple, itr, ()) rec_unrolled_reduce(tuple, itr, ()) Tuple 8 distinct nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (49 ms vs. 44 ms) similar (2 MB vs. 2 MB)
unrolled_reduce(tuple, itr, ()) rec_unrolled_reduce(tuple, itr, ()) Tuple 16 distinct nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (49 ms vs. 83 ms) 2 times less (2 MB vs. 6 MB)
unrolled_reduce(tuple, itr, ()) rec_unrolled_reduce(tuple, itr, ()) Tuple 32 distinct nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) 5 times less (52 ms vs. 285 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 (24 ms vs. 25 ms) similar (152 kB vs. 117 kB)
unrolled_reduce(tuple, itr, ()) rec_unrolled_reduce(tuple, itr, ()) Tuple 2 distinct nonempty non-singleton Tuples similar (11 LLVM lines) similar (49 ns vs. 49 ns) similar (24 ms vs. 25 ms) similar (191 kB vs. 172 kB)
unrolled_reduce(tuple, itr, ()) rec_unrolled_reduce(tuple, itr, ()) Tuple 3 distinct nonempty non-singleton Tuples similar (14 LLVM lines) similar (49 ns vs. 49 ns) similar (25 ms vs. 34 ms) 2 times less (207 kB vs. 466 kB)
unrolled_reduce(tuple, itr, ()) rec_unrolled_reduce(tuple, itr, ()) Tuple 4 distinct nonempty non-singleton Tuples similar (17 LLVM lines) similar (49 ns vs. 49 ns) similar (50 ms vs. 36 ms) 3 times more (2 MB vs. 561 kB)
unrolled_reduce(tuple, itr, ()) rec_unrolled_reduce(tuple, itr, ()) Tuple 5 distinct nonempty non-singleton Tuples similar (20 LLVM lines) similar (49 ns vs. 49 ns) similar (50 ms vs. 44 ms) 2 times more (2 MB vs. 956 kB)
unrolled_reduce(tuple, itr, ()) rec_unrolled_reduce(tuple, itr, ()) Tuple 6 distinct nonempty non-singleton Tuples similar (23 LLVM lines) similar (60 ns vs. 60 ns) similar (51 ms vs. 46 ms) similar (2 MB vs. 1 MB)
unrolled_reduce(tuple, itr, ()) rec_unrolled_reduce(tuple, itr, ()) Tuple 7 distinct nonempty non-singleton Tuples similar (26 LLVM lines) similar (60 ns vs. 60 ns) similar (53 ms vs. 55 ms) similar (2 MB vs. 2 MB)
unrolled_reduce(tuple, itr, ()) rec_unrolled_reduce(tuple, itr, ()) Tuple 8 distinct nonempty non-singleton Tuples similar (30 LLVM lines) similar (60 ns vs. 60 ns) similar (53 ms vs. 57 ms) similar (2 MB vs. 2 MB)
unrolled_reduce(tuple, itr, ()) rec_unrolled_reduce(tuple, itr, ()) Tuple 16 distinct nonempty non-singleton Tuples similar (55 LLVM lines) similar (60 ns vs. 69 ns) 2 times less (53 ms vs. 108 ms) 2 times less (2 MB vs. 6 MB)
unrolled_reduce(tuple, itr, ()) rec_unrolled_reduce(tuple, itr, ()) Tuple 32 distinct nonempty non-singleton Tuples similar (105 LLVM lines) similar (80 ns vs. 80 ns) 5 times less (60 ms vs. 349 ms) 9 times less (2 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. 40 ns) similar (24 ms vs. 31 ms) 3 times less (61 kB vs. 231 kB)
UnrolledUtilities.unrolled_accumulate_into_tuple(tuple, itr, ()) rec_unrolled_accumulate(tuple, itr, ()) Tuple 1 nonempty singleton Tuple similar (optimized out) similar (40 ns vs. 49 ns) similar (25 ms vs. 30 ms) 2 times less (91 kB vs. 260 kB)
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 (24 ms vs. 28 ms) 2 times less (156 kB vs. 342 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. 40 ns) similar (24 ms vs. 31 ms) 3 times less (61 kB vs. 231 kB)
UnrolledUtilities.unrolled_accumulate_into_tuple(tuple, itr, ()) rec_unrolled_accumulate(tuple, itr, ()) Tuple 2 identical empty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (25 ms vs. 35 ms) 6 times less (68 kB vs. 465 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. 40 ns) similar (24 ms vs. 36 ms) 5 times less (96 kB vs. 520 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 (57 ms vs. 36 ms) 2 times less (197 kB vs. 548 kB)
UnrolledUtilities.unrolled_accumulate_into_tuple(tuple, itr, ()) rec_unrolled_accumulate(tuple, itr, ()) Tuple 5 identical empty singleton Tuples similar (optimized out) similar (69 ns vs. 70 ns) similar (55 ms vs. 46 ms) 2 times less (203 kB vs. 605 kB)
UnrolledUtilities.unrolled_accumulate_into_tuple(tuple, itr, ()) rec_unrolled_accumulate(tuple, itr, ()) Tuple 6 identical empty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (59 ms vs. 47 ms) 3 times less (208 kB vs. 635 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 (56 ms vs. 48 ms) 3 times less (214 kB vs. 666 kB)
UnrolledUtilities.unrolled_accumulate_into_tuple(tuple, itr, ()) rec_unrolled_accumulate(tuple, itr, ()) Tuple 8 identical empty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (55 ms vs. 47 ms) 3 times less (220 kB vs. 696 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 (56 ms vs. 50 ms) 3 times less (268 kB vs. 947 kB)
UnrolledUtilities.unrolled_accumulate_into_tuple(tuple, itr, ()) rec_unrolled_accumulate(tuple, itr, ()) Tuple 32 identical empty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (57 ms vs. 56 ms) 4 times less (363 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 (24 ms vs. 31 ms) 2 times less (91 kB vs. 260 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 (25 ms vs. 36 ms) 5 times less (93 kB vs. 491 kB)
UnrolledUtilities.unrolled_accumulate_into_tuple(tuple, itr, ()) rec_unrolled_accumulate(tuple, itr, ()) Tuple 3 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (24 ms vs. 36 ms) 5 times less (96 kB vs. 520 kB)
UnrolledUtilities.unrolled_accumulate_into_tuple(tuple, itr, ()) rec_unrolled_accumulate(tuple, itr, ()) Tuple 4 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (57 ms vs. 38 ms) 2 times less (197 kB vs. 549 kB)
UnrolledUtilities.unrolled_accumulate_into_tuple(tuple, itr, ()) rec_unrolled_accumulate(tuple, itr, ()) Tuple 5 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (55 ms vs. 46 ms) 2 times less (203 kB vs. 605 kB)
UnrolledUtilities.unrolled_accumulate_into_tuple(tuple, itr, ()) rec_unrolled_accumulate(tuple, itr, ()) Tuple 6 identical nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 49 ns) similar (58 ms vs. 48 ms) 3 times less (208 kB vs. 635 kB)
UnrolledUtilities.unrolled_accumulate_into_tuple(tuple, itr, ()) rec_unrolled_accumulate(tuple, itr, ()) Tuple 7 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (57 ms vs. 47 ms) 3 times less (215 kB vs. 666 kB)
UnrolledUtilities.unrolled_accumulate_into_tuple(tuple, itr, ()) rec_unrolled_accumulate(tuple, itr, ()) Tuple 8 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (56 ms vs. 49 ms) 3 times less (220 kB vs. 696 kB)
UnrolledUtilities.unrolled_accumulate_into_tuple(tuple, itr, ()) rec_unrolled_accumulate(tuple, itr, ()) Tuple 16 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (57 ms vs. 51 ms) 3 times less (268 kB vs. 947 kB)
UnrolledUtilities.unrolled_accumulate_into_tuple(tuple, itr, ()) rec_unrolled_accumulate(tuple, itr, ()) Tuple 32 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 49 ns) similar (57 ms vs. 55 ms) 4 times less (363 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 (24 ms vs. 27 ms) 2 times less (156 kB vs. 342 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. 49 ns) similar (24 ms vs. 29 ms) 4 times less (173 kB vs. 743 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 (49 ns vs. 49 ns) similar (25 ms vs. 30 ms) 3 times less (216 kB vs. 861 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. 49 ns) similar (56 ms vs. 30 ms) 2 times less (327 kB vs. 957 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 (60 ms vs. 42 ms) 3 times less (345 kB vs. 1 MB)
UnrolledUtilities.unrolled_accumulate_into_tuple(tuple, itr, ()) rec_unrolled_accumulate(tuple, itr, ()) Tuple 6 identical nonempty non-singleton Tuples similar (35 LLVM lines) similar (50 ns vs. 60 ns) similar (59 ms vs. 42 ms) 3 times less (364 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 (58 ms vs. 43 ms) 3 times less (383 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 (59 ms vs. 44 ms) 3 times less (466 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 (89 ns vs. 89 ns) similar (82 ms vs. 70 ms) 4 times less (555 kB vs. 3 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 (250 ns vs. 340 ns) similar (279 ms vs. 278 ms) 6 times less (862 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 (24 ms vs. 31 ms) 3 times less (61 kB vs. 231 kB)
UnrolledUtilities.unrolled_accumulate_into_tuple(tuple, itr, ()) rec_unrolled_accumulate(tuple, itr, ()) Tuple 2 distinct empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (26 ms vs. 35 ms) 5 times less (93 kB vs. 491 kB)
UnrolledUtilities.unrolled_accumulate_into_tuple(tuple, itr, ()) rec_unrolled_accumulate(tuple, itr, ()) Tuple 3 distinct empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (25 ms vs. 36 ms) 5 times less (96 kB vs. 521 kB)
UnrolledUtilities.unrolled_accumulate_into_tuple(tuple, itr, ()) rec_unrolled_accumulate(tuple, itr, ()) Tuple 4 distinct empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (56 ms vs. 35 ms) 2 times less (197 kB vs. 550 kB)
UnrolledUtilities.unrolled_accumulate_into_tuple(tuple, itr, ()) rec_unrolled_accumulate(tuple, itr, ()) Tuple 5 distinct empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (56 ms vs. 49 ms) 2 times less (203 kB vs. 607 kB)
UnrolledUtilities.unrolled_accumulate_into_tuple(tuple, itr, ()) rec_unrolled_accumulate(tuple, itr, ()) Tuple 6 distinct empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (55 ms vs. 46 ms) 3 times less (209 kB vs. 636 kB)
UnrolledUtilities.unrolled_accumulate_into_tuple(tuple, itr, ()) rec_unrolled_accumulate(tuple, itr, ()) Tuple 7 distinct empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (55 ms vs. 46 ms) 3 times less (215 kB vs. 668 kB)
UnrolledUtilities.unrolled_accumulate_into_tuple(tuple, itr, ()) rec_unrolled_accumulate(tuple, itr, ()) Tuple 8 distinct empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (55 ms vs. 47 ms) 3 times less (221 kB vs. 698 kB)
UnrolledUtilities.unrolled_accumulate_into_tuple(tuple, itr, ()) rec_unrolled_accumulate(tuple, itr, ()) Tuple 16 distinct empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (56 ms vs. 51 ms) 3 times less (269 kB vs. 964 kB)
UnrolledUtilities.unrolled_accumulate_into_tuple(tuple, itr, ()) rec_unrolled_accumulate(tuple, itr, ()) Tuple 32 distinct empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (57 ms vs. 55 ms) 4 times less (364 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 (24 ms vs. 31 ms) 2 times less (91 kB vs. 260 kB)
UnrolledUtilities.unrolled_accumulate_into_tuple(tuple, itr, ()) rec_unrolled_accumulate(tuple, itr, ()) Tuple 2 distinct nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (24 ms vs. 39 ms) 5 times less (93 kB vs. 492 kB)
UnrolledUtilities.unrolled_accumulate_into_tuple(tuple, itr, ()) rec_unrolled_accumulate(tuple, itr, ()) Tuple 3 distinct nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (25 ms vs. 36 ms) 5 times less (96 kB vs. 522 kB)
UnrolledUtilities.unrolled_accumulate_into_tuple(tuple, itr, ()) rec_unrolled_accumulate(tuple, itr, ()) Tuple 4 distinct nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (56 ms vs. 35 ms) 2 times less (197 kB vs. 550 kB)
UnrolledUtilities.unrolled_accumulate_into_tuple(tuple, itr, ()) rec_unrolled_accumulate(tuple, itr, ()) Tuple 5 distinct nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (55 ms vs. 47 ms) 2 times less (203 kB vs. 607 kB)
UnrolledUtilities.unrolled_accumulate_into_tuple(tuple, itr, ()) rec_unrolled_accumulate(tuple, itr, ()) Tuple 6 distinct nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (56 ms vs. 47 ms) 3 times less (209 kB vs. 636 kB)
UnrolledUtilities.unrolled_accumulate_into_tuple(tuple, itr, ()) rec_unrolled_accumulate(tuple, itr, ()) Tuple 7 distinct nonempty singleton Tuples similar (optimized out) similar (69 ns vs. 70 ns) similar (55 ms vs. 47 ms) 3 times less (215 kB vs. 668 kB)
UnrolledUtilities.unrolled_accumulate_into_tuple(tuple, itr, ()) rec_unrolled_accumulate(tuple, itr, ()) Tuple 8 distinct nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (56 ms vs. 47 ms) 3 times less (221 kB vs. 698 kB)
UnrolledUtilities.unrolled_accumulate_into_tuple(tuple, itr, ()) rec_unrolled_accumulate(tuple, itr, ()) Tuple 16 distinct nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (56 ms vs. 49 ms) 3 times less (269 kB vs. 964 kB)
UnrolledUtilities.unrolled_accumulate_into_tuple(tuple, itr, ()) rec_unrolled_accumulate(tuple, itr, ()) Tuple 32 distinct nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (58 ms vs. 54 ms) 4 times less (364 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 (24 ms vs. 28 ms) 2 times less (156 kB vs. 342 kB)
UnrolledUtilities.unrolled_accumulate_into_tuple(tuple, itr, ()) rec_unrolled_accumulate(tuple, itr, ()) Tuple 2 distinct nonempty non-singleton Tuples similar (13 LLVM lines) similar (49 ns vs. 49 ns) similar (25 ms vs. 32 ms) 3 times less (199 kB vs. 769 kB)
UnrolledUtilities.unrolled_accumulate_into_tuple(tuple, itr, ()) rec_unrolled_accumulate(tuple, itr, ()) Tuple 3 distinct nonempty non-singleton Tuples similar (20 LLVM lines) similar (49 ns vs. 50 ns) similar (26 ms vs. 30 ms) 3 times less (217 kB vs. 862 kB)
UnrolledUtilities.unrolled_accumulate_into_tuple(tuple, itr, ()) rec_unrolled_accumulate(tuple, itr, ()) Tuple 4 distinct nonempty non-singleton Tuples similar (29 LLVM lines) similar (60 ns vs. 60 ns) similar (58 ms vs. 31 ms) 2 times less (328 kB vs. 959 kB)
UnrolledUtilities.unrolled_accumulate_into_tuple(tuple, itr, ()) rec_unrolled_accumulate(tuple, itr, ()) Tuple 5 distinct nonempty non-singleton Tuples similar (40 LLVM lines) similar (60 ns vs. 60 ns) similar (60 ms vs. 44 ms) 3 times less (347 kB vs. 1 MB)
UnrolledUtilities.unrolled_accumulate_into_tuple(tuple, itr, ()) rec_unrolled_accumulate(tuple, itr, ()) Tuple 6 distinct nonempty non-singleton Tuples similar (53 LLVM lines) similar (69 ns vs. 60 ns) similar (61 ms vs. 46 ms) 3 times less (365 kB vs. 1 MB)
UnrolledUtilities.unrolled_accumulate_into_tuple(tuple, itr, ()) rec_unrolled_accumulate(tuple, itr, ()) Tuple 7 distinct nonempty non-singleton Tuples similar (68 LLVM lines) similar (69 ns vs. 69 ns) similar (63 ms vs. 49 ms) 3 times less (384 kB vs. 1 MB)
UnrolledUtilities.unrolled_accumulate_into_tuple(tuple, itr, ()) rec_unrolled_accumulate(tuple, itr, ()) Tuple 8 distinct nonempty non-singleton Tuples similar (86 LLVM lines) similar (89 ns vs. 80 ns) similar (66 ms vs. 52 ms) 3 times less (404 kB vs. 1 MB)
UnrolledUtilities.unrolled_accumulate_into_tuple(tuple, itr, ()) rec_unrolled_accumulate(tuple, itr, ()) Tuple 16 distinct nonempty non-singleton Tuples similar (513 LLVM lines) similar (331 ns vs. 421 ns) similar (188 ms vs. 179 ms) 4 times less (559 kB vs. 3 MB)
UnrolledUtilities.unrolled_accumulate_into_tuple(tuple, itr, ()) rec_unrolled_accumulate(tuple, itr, ()) Tuple 32 distinct nonempty non-singleton Tuples similar (2795 LLVM lines) similar (2 μs vs. 2 μs) similar (1 s vs. 1 s) 6 times less (875 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. 40 ns) similar (42 ms vs. 41 ms) similar (201 kB vs. 266 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. 40 ns) similar (44 ms vs. 41 ms) similar (234 kB vs. 271 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. 49 ns) similar (39 ms vs. 43 ms) similar (241 kB vs. 288 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. 40 ns) similar (44 ms vs. 42 ms) similar (201 kB vs. 266 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. 40 ns) similar (42 ms vs. 43 ms) similar (222 kB vs. 376 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 (40 ns vs. 40 ns) similar (43 ms vs. 42 ms) similar (266 kB vs. 398 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 (40 ns vs. 40 ns) similar (62 ms vs. 42 ms) similar (342 kB vs. 447 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. 40 ns) similar (62 ms vs. 42 ms) similar (362 kB vs. 497 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 (40 ns vs. 40 ns) similar (63 ms vs. 42 ms) similar (385 kB vs. 547 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. 40 ns) similar (65 ms vs. 42 ms) similar (407 kB vs. 597 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 (64 ms vs. 42 ms) similar (431 kB vs. 647 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 (69 ms vs. 43 ms) similar (598 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 (49 ns vs. 49 ns) similar (81 ms vs. 45 ms) 2 times less (941 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 (49 ns vs. 40 ns) 2 times more (153 ms vs. 54 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 256 identical empty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) 3 times more (268 ms vs. 71 ms) 2 times less (6 MB vs. 15 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 (42 ms vs. 41 ms) similar (234 kB vs. 271 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 (49 ns vs. 40 ns) similar (43 ms vs. 44 ms) similar (252 kB vs. 381 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. 40 ns) similar (44 ms vs. 43 ms) similar (270 kB vs. 403 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. 40 ns) similar (66 ms vs. 44 ms) similar (347 kB vs. 452 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. 40 ns) similar (63 ms vs. 43 ms) similar (367 kB vs. 502 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 (40 ns vs. 40 ns) similar (65 ms vs. 43 ms) similar (389 kB vs. 552 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 (40 ns vs. 40 ns) similar (63 ms vs. 43 ms) similar (411 kB vs. 602 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 (49 ns vs. 40 ns) similar (64 ms vs. 46 ms) similar (435 kB vs. 652 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 (49 ns vs. 40 ns) similar (69 ms vs. 44 ms) similar (603 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 (49 ns vs. 40 ns) similar (83 ms vs. 47 ms) 2 times less (946 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. 40 ns) 2 times more (151 ms vs. 53 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 256 identical nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) 3 times more (250 ms vs. 71 ms) 2 times less (6 MB vs. 15 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. 49 ns) similar (39 ms vs. 44 ms) similar (241 kB vs. 288 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 (43 ms vs. 46 ms) similar (274 kB vs. 404 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 (60 ns vs. 49 ns) similar (42 ms vs. 44 ms) similar (331 kB vs. 436 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. 49 ns) similar (60 ms vs. 44 ms) similar (422 kB vs. 488 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 (63 ms vs. 45 ms) similar (456 kB vs. 543 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. 49 ns) similar (63 ms vs. 55 ms) similar (497 kB vs. 601 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 (49 ns vs. 49 ns) similar (62 ms vs. 46 ms) similar (532 kB vs. 659 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 (60 ns vs. 49 ns) similar (64 ms vs. 45 ms) similar (636 kB vs. 719 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. 49 ns) similar (71 ms vs. 51 ms) similar (851 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. 49 ns) similar (95 ms vs. 57 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) 125 times less (49 ns vs. 6 μs) 3 times more (177 ms vs. 55 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 256 identical nonempty non-singleton Tuples similar (8 LLVM lines) 244 times less (49 ns vs. 12 μs) 4 times more (311 ms vs. 76 ms) similar (9 MB vs. 15 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 (40 ns vs. 40 ns) similar (41 ms vs. 41 ms) similar (201 kB vs. 266 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 distinct empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (48 ms vs. 46 ms) similar (294 kB vs. 421 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 distinct empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (52 ms vs. 70 ms) 2 times less (358 kB vs. 1001 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 distinct empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (75 ms vs. 67 ms) 2 times less (484 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 distinct empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (80 ms vs. 75 ms) 2 times less (549 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 distinct empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (85 ms vs. 85 ms) 2 times less (618 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 7 distinct empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (89 ms vs. 94 ms) 2 times less (685 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 distinct empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) 2 times more (92 ms vs. 43 ms) similar (710 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 16 distinct empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (97 ms vs. 54 ms) similar (881 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 distinct empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (110 ms vs. 76 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 distinct empty & nonempty singleton Tuples similar (optimized out) similar (41 ns vs. 40 ns) 3 times more (196 ms vs. 65 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 256 distinct empty & nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) 3 times more (309 ms vs. 102 ms) 2 times less (6 MB vs. 16 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 (42 ms vs. 42 ms) similar (234 kB vs. 271 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 distinct nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (47 ms vs. 47 ms) similar (299 kB vs. 426 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 distinct nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (61 ms vs. 59 ms) 2 times less (362 kB vs. 1006 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 distinct nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (74 ms vs. 72 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 5 distinct nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (80 ms vs. 76 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 6 distinct nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (85 ms vs. 86 ms) 2 times less (622 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 7 distinct nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (94 ms vs. 96 ms) 2 times less (689 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 distinct nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) 2 times more (91 ms vs. 45 ms) similar (713 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 16 distinct nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (101 ms vs. 53 ms) similar (885 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 distinct nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (109 ms vs. 76 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 distinct nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) 2 times more (190 ms vs. 65 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 256 distinct nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) 2 times more (302 ms vs. 105 ms) 2 times less (6 MB vs. 16 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. 49 ns) similar (39 ms vs. 44 ms) similar (241 kB vs. 288 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 distinct nonempty non-singleton Tuples similar (8 LLVM lines) similar (50 ns vs. 49 ns) similar (46 ms vs. 51 ms) similar (357 kB vs. 461 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 distinct nonempty non-singleton Tuples similar (8 LLVM lines) similar (60 ns vs. 49 ns) similar (53 ms vs. 60 ms) 2 times less (447 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 4 distinct nonempty non-singleton Tuples similar (8 LLVM lines) similar (49 ns vs. 49 ns) similar (73 ms vs. 71 ms) 2 times less (598 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 distinct nonempty non-singleton Tuples similar (8 LLVM lines) similar (49 ns vs. 49 ns) similar (81 ms vs. 80 ms) 2 times less (695 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 distinct nonempty non-singleton Tuples similar (8 LLVM lines) similar (50 ns vs. 60 ns) similar (85 ms vs. 90 ms) 2 times less (797 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 7 distinct nonempty non-singleton Tuples similar (8 LLVM lines) similar (60 ns vs. 60 ns) similar (91 ms vs. 99 ms) 2 times less (895 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 distinct nonempty non-singleton Tuples similar (8 LLVM lines) similar (49 ns vs. 49 ns) similar (92 ms vs. 48 ms) similar (934 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 16 distinct nonempty non-singleton Tuples similar (8 LLVM lines) similar (49 ns vs. 49 ns) similar (101 ms vs. 65 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 32 distinct nonempty non-singleton Tuples similar (8 LLVM lines) similar (60 ns vs. 49 ns) similar (121 ms vs. 87 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 distinct nonempty non-singleton Tuples similar (8 LLVM lines) 284 times less (49 ns vs. 14 μs) 3 times more (242 ms vs. 68 ms) similar (5 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 256 distinct nonempty non-singleton Tuples similar (8 LLVM lines) 1161 times less (49 ns vs. 57 μs) 4 times more (429 ms vs. 107 ms) similar (10 MB vs. 16 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 (49 ns vs. 40 ns) 2 times less (28 ms vs. 62 ms) 10 times less (179 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 (40 ns vs. 40 ns) similar (31 ms vs. 61 ms) 8 times less (219 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 (40 ns vs. 40 ns) similar (29 ms vs. 43 ms) 12 times less (193 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. 40 ns) 2 times less (29 ms vs. 62 ms) 10 times less (179 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 (28 ms vs. 62 ms) 11 times less (188 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. 40 ns) 2 times less (29 ms vs. 67 ms) 11 times less (219 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 (40 ns vs. 40 ns) similar (46 ms vs. 66 ms) 9 times less (283 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 (47 ms vs. 67 ms) 9 times less (291 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 (52 ms vs. 67 ms) 9 times less (299 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 (40 ns vs. 40 ns) similar (47 ms vs. 70 ms) 10 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 identical empty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (47 ms vs. 68 ms) 10 times less (314 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 (48 ms vs. 69 ms) 12 times less (375 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 (49 ms vs. 76 ms) 15 times less (499 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) 13792 times less (40 ns vs. 552 μs) similar (60 ms vs. 72 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 256 identical empty singleton Tuples better (optimized out vs. 806 kB allocs) 51710 times less (40 ns vs. 2 ms) similar (74 ms vs. 75 ms) 3 times less (2 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 nonempty singleton Tuple similar (optimized out) similar (40 ns vs. 40 ns) 2 times less (31 ms vs. 62 ms) 8 times less (219 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) similar (33 ms vs. 64 ms) 9 times less (222 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. 40 ns) similar (32 ms vs. 63 ms) 10 times less (225 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 (40 ns vs. 40 ns) similar (51 ms vs. 66 ms) 8 times less (287 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 (51 ms vs. 62 ms) 8 times less (292 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 (51 ms vs. 64 ms) 9 times less (298 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. 40 ns) similar (49 ms vs. 63 ms) 9 times less (303 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 (40 ns vs. 40 ns) similar (49 ms vs. 64 ms) 9 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 16 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (50 ms vs. 65 ms) 12 times less (351 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. 40 ns) similar (51 ms vs. 71 ms) 17 times less (436 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 (63 ms vs. 69 ms) 6 times less (942 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 256 identical nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (75 ms vs. 70 ms) 3 times less (2 MB 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 (40 ns vs. 40 ns) similar (28 ms vs. 43 ms) 12 times less (193 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. 40 ns) similar (28 ms vs. 44 ms) 13 times less (196 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 (28 ms vs. 45 ms) 13 times less (224 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 (46 ms vs. 46 ms) 11 times less (286 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 (40 ns vs. 40 ns) similar (46 ms vs. 46 ms) 12 times less (291 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 (46 ms vs. 47 ms) 12 times less (296 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 (46 ms vs. 48 ms) 13 times less (301 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. 40 ns) similar (46 ms vs. 49 ms) 11 times less (371 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 (40 ns vs. 40 ns) similar (47 ms vs. 56 ms) 19 times less (349 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 (49 ms vs. 72 ms) 27 times less (434 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) 243 times less (49 ns vs. 12 μs) similar (59 ms vs. 63 ms) 9 times less (941 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 256 identical nonempty non-singleton Tuples better (optimized out vs. 38 kB allocs) 583 times less (40 ns vs. 23 μs) similar (73 ms vs. 63 ms) 5 times less (2 MB 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 (28 ms vs. 61 ms) 10 times less (179 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 distinct empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) 2 times less (32 ms vs. 73 ms) 9 times less (267 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 distinct empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) 2 times less (32 ms vs. 86 ms) 10 times less (270 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 distinct empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (50 ms vs. 91 ms) 9 times less (333 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 distinct empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) 2 times less (49 ms vs. 101 ms) 9 times less (338 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 distinct empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) 2 times less (49 ms vs. 109 ms) 10 times less (344 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 distinct empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) 2 times less (49 ms vs. 117 ms) 10 times less (349 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 distinct empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) 2 times less (49 ms vs. 123 ms) 11 times less (354 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 distinct empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) 2 times less (50 ms vs. 120 ms) 13 times less (397 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 distinct empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) 2 times less (52 ms vs. 126 ms) 17 times less (482 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 distinct empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (63 ms vs. 125 ms) 7 times less (989 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 256 distinct empty & nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (76 ms vs. 123 ms) 4 times less (2 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 (32 ms vs. 61 ms) 8 times less (219 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 distinct nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) 2 times less (32 ms vs. 81 ms) 11 times less (222 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 distinct nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) 2 times less (32 ms vs. 81 ms) 11 times less (225 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 distinct nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (49 ms vs. 88 ms) 10 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 distinct nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) 2 times less (49 ms vs. 98 ms) 10 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 distinct nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) 2 times less (49 ms vs. 106 ms) 11 times less (298 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 distinct nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) 2 times less (49 ms vs. 116 ms) 11 times less (303 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 distinct nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) 2 times less (49 ms vs. 115 ms) 12 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 distinct nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) 2 times less (50 ms vs. 117 ms) 14 times less (352 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 distinct nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) 2 times less (51 ms vs. 123 ms) 18 times less (436 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 distinct nonempty singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (62 ms vs. 119 ms) 7 times less (943 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 256 distinct nonempty singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (75 ms vs. 129 ms) 4 times less (2 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 non-singleton Tuple similar (optimized out) similar (49 ns vs. 40 ns) similar (28 ms vs. 44 ms) 12 times less (193 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 distinct nonempty non-singleton Tuples similar (optimized out) similar (49 ns vs. 40 ns) similar (29 ms vs. 51 ms) 13 times less (221 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 distinct nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (29 ms vs. 48 ms) 15 times less (224 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 distinct nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (45 ms vs. 47 ms) 12 times less (286 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 distinct nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (46 ms vs. 48 ms) 13 times less (292 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 distinct nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (46 ms vs. 50 ms) 14 times less (297 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 distinct nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (46 ms vs. 51 ms) 15 times less (302 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 8 distinct nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (46 ms vs. 52 ms) 16 times less (308 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 distinct nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (48 ms vs. 60 ms) 21 times less (350 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 distinct nonempty non-singleton Tuples similar (optimized out) similar (40 ns vs. 40 ns) similar (49 ms vs. 80 ms) 29 times less (435 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 distinct nonempty non-singleton Tuples better (optimized out vs. 557 kB allocs) 1781 times less (40 ns vs. 71 μs) similar (59 ms vs. 65 ms) 10 times less (942 kB vs. 10 MB)
UnrolledUtilities.unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) rec_unrolled_ifelse(!isempty, identity, Returns(nothing), itr, StaticOneTo(length(itr))) Tuple 256 distinct nonempty non-singleton Tuples better (optimized out vs. 2 MB allocs) 5290 times less (40 ns vs. 212 μs) similar (73 ms vs. 68 ms) 7 times less (2 MB vs. 11 MB)