Lutra CLI benchmark

Run 2026-09-25 17:35 UTC · 52 measurements of 26 cases · 10 measured runs per case after 5 warm-up runs

At a glance

lutra-v0.6.21 against lutra-v0.6.20.7

8.5% faster

typical difference in median time over 26 cases (geometric mean)

Clearly faster
14
Clearly slower
0
Within noise
12
  • Fixed cost per run: 70 ms lower; cost per instance: 0.6% lower (median over 5 straight-line fits of the instance-count sweeps)
  • Peak memory: 9.3% lower (clearly lower in 11, clearly higher in 0 of 26 cases)

Where lutra-v0.6.21 differs from lutra-v0.6.20.7

One dot per case: the difference in median time. A filled dot is a clear difference; a hollow dot is within the noise. Click a row to go to its charts and tables.

← fasterslower →−20%−10%0%+10%+20%List expansion · expandList expansion · expand · none · 100 instances lutra-v0.6.21: 445 ms lutra-v0.6.20.7: 518 ms −14%, clearList expansion · expand · none · 1,000 instances lutra-v0.6.21: 597 ms lutra-v0.6.20.7: 655 ms −8.9%, clearList expansion · expand · none · 10,000 instances lutra-v0.6.21: 1,543 ms lutra-v0.6.20.7: 1,613 ms −4.3%, clearList expansion · expand · none · 100,000 instances lutra-v0.6.21: 9,605 ms lutra-v0.6.20.7: 9,731 ms −1.3%, within noiseList expansion · expand · cross · 100 instances lutra-v0.6.21: 443 ms lutra-v0.6.20.7: 517 ms −14%, clearList expansion · expand · cross · 1,000 instances lutra-v0.6.21: 587 ms lutra-v0.6.20.7: 662 ms −11%, within noiseList expansion · expand · cross · 10,000 instances lutra-v0.6.21: 1,635 ms lutra-v0.6.20.7: 1,689 ms −3.2%, within noiseList expansion · expand · cross · 100,000 instances lutra-v0.6.21: 10,868 ms lutra-v0.6.20.7: 10,869 ms ±0%, within noiseParameter count · expandParameter count · expand · 1 parameter lutra-v0.6.21: 507 ms lutra-v0.6.20.7: 576 ms −12%, clearParameter count · expand · 10 parameters lutra-v0.6.21: 756 ms lutra-v0.6.20.7: 825 ms −8.4%, clearParameter count · expand · 100 parameters lutra-v0.6.21: 2,730 ms lutra-v0.6.20.7: 2,763 ms −1.2%, within noiseNesting depth · expandNesting depth · expand · depth 1 lutra-v0.6.21: 506 ms lutra-v0.6.20.7: 578 ms −12%, clearNesting depth · expand · depth 10 lutra-v0.6.21: 528 ms lutra-v0.6.20.7: 599 ms −12%, clearNesting depth · expand · depth 100 lutra-v0.6.21: 683 ms lutra-v0.6.20.7: 748 ms −8.7%, clearwOTTR input · expandwOTTR input · expand · 100 instances lutra-v0.6.21: 458 ms lutra-v0.6.20.7: 515 ms −11%, within noisewOTTR input · expand · 1,000 instances lutra-v0.6.21: 590 ms lutra-v0.6.20.7: 646 ms −8.7%, clearwOTTR input · expand · 10,000 instances lutra-v0.6.21: 1,528 ms lutra-v0.6.20.7: 1,600 ms −4.5%, within noisewOTTR input · expand · 100,000 instances lutra-v0.6.21: 8,819 ms lutra-v0.6.20.7: 9,923 ms −11%, cleartabOTTR input · expandtabOTTR input · expand · 100 instances lutra-v0.6.21: 631 ms lutra-v0.6.20.7: 739 ms −15%, cleartabOTTR input · expand · 1,000 instances lutra-v0.6.21: 798 ms lutra-v0.6.20.7: 933 ms −14%, within noisetabOTTR input · expand · 10,000 instances lutra-v0.6.21: 1,622 ms lutra-v0.6.20.7: 1,801 ms −9.9%, cleartabOTTR input · expand · 100,000 instances lutra-v0.6.21: 7,749 ms lutra-v0.6.20.7: 7,925 ms −2.2%, within noisebOTTR input · expandbOTTR input · expand · 100 instances lutra-v0.6.21: 548 ms lutra-v0.6.20.7: 642 ms −15%, clearbOTTR input · expand · 1,000 instances lutra-v0.6.21: 647 ms lutra-v0.6.20.7: 716 ms −9.6%, within noisebOTTR input · expand · 10,000 instances lutra-v0.6.21: 1,260 ms lutra-v0.6.20.7: 1,333 ms −5.4%, within noisebOTTR input · expand · 100,000 instances lutra-v0.6.21: 6,312 ms lutra-v0.6.20.7: 6,304 ms +0.1%, within noise

Largest clear speed-ups

Caselutra-v0.6.20.7lutra-v0.6.21Difference
bOTTR input · expand · 100 instances642 ms548 ms−15%
tabOTTR input · expand · 100 instances739 ms631 ms−15%
List expansion · expand · cross · 100 instances517 ms443 ms−14%
List expansion · expand · none · 100 instances518 ms445 ms−14%
Nesting depth · expand · depth 1578 ms506 ms−12%

Largest clear slow-downs

None.

How to read this report

Time
Wall-clock time of one whole java -jar run of the Lutra CLI: JVM start-up, reading the templates and instances, expanding them and writing the output. Each case runs 10 times after the warm-up runs, which are discarded.
Median
The middle value of the measured runs. It is the headline figure because a single slow run barely moves it.
Spread
Under each median: ± the standard deviation, and the range from the fastest to the slowest run. The whiskers in the charts show the same range.
Fastest
The jar with the lowest median in a row is marked ✓ fastest. The lead is clear when the jar's range does not overlap the range of any other jar. Otherwise it is marked tie: the difference is within the noise, and the jars should be treated as equal. Peak memory is marked the same way, with lowest.
Percentages
In the tables: how much higher a jar's median is than the best one in the row; bold when the difference is clear, grey when it is within the noise. In the summary and the charts: the difference to the baseline, lutra-v0.6.20.7; negative is faster.
Typical difference
The geometric mean of the per-case ratios to the baseline. Every case counts the same, whatever its size.
Fixed cost and cost per unit
A straight line fitted to the medians of a sweep. Where it crosses zero approximates the cost that does not grow with the input, mostly JVM start-up and loading the templates; the slope is the cost of each extra instance, parameter or nesting level. Shown only where the line fits well (R² ≥ 0.95).
Peak memory
The largest resident set size of the process, JVM included. It depends on the maximum heap given to the JVM (see Settings), so compare it only between runs with the same settings.
Modes
expand reads and expands the instances; format reads them and writes them in the output format without expanding; checkSyntax only parses them.

List expansion

stOTTR instances at a growing instance count. With none, a flat Person template with plain arguments; with cross, zipMin and zipMax, a template with a list argument expanded by that list expander.

expand · stottr → wottr

Median time against lutra-v0.6.20.7, by list expanderBelow 0% is faster. Filled dot: clear difference; hollow dot: within noise.

none
−20%−10%0%+10%+20%1001k10k100kInstances (log scale)DifferenceList expansion · expand · none · 100 instances lutra-v0.6.21: 445 ms lutra-v0.6.20.7: 518 ms −14%, clearList expansion · expand · none · 1,000 instances lutra-v0.6.21: 597 ms lutra-v0.6.20.7: 655 ms −8.9%, clearList expansion · expand · none · 10,000 instances lutra-v0.6.21: 1,543 ms lutra-v0.6.20.7: 1,613 ms −4.3%, clearList expansion · expand · none · 100,000 instances lutra-v0.6.21: 9,605 ms lutra-v0.6.20.7: 9,731 ms −1.3%, within noise
cross
−20%−10%0%+10%+20%1001k10k100kInstances (log scale)DifferenceList expansion · expand · cross · 100 instances lutra-v0.6.21: 443 ms lutra-v0.6.20.7: 517 ms −14%, clearList expansion · expand · cross · 1,000 instances lutra-v0.6.21: 587 ms lutra-v0.6.20.7: 662 ms −11%, within noiseList expansion · expand · cross · 10,000 instances lutra-v0.6.21: 1,635 ms lutra-v0.6.20.7: 1,689 ms −3.2%, within noiseList expansion · expand · cross · 100,000 instances lutra-v0.6.21: 10,868 ms lutra-v0.6.20.7: 10,869 ms ±0%, within noise

Median time, by list expanderWhiskers: lowest to highest run.

none
05,00010,00015,0001001k10k100kInstances (log scale)Time (ms)lutra-v0.6.20.7 100 instances · none median 518 ms range 511–524 mslutra-v0.6.20.7 1,000 instances · none median 655 ms range 650–663 mslutra-v0.6.20.7 10,000 instances · none median 1,613 ms range 1,585–1,637 mslutra-v0.6.20.7 100,000 instances · none median 9,731 ms range 9,648–9,810 mslutra-v0.6.21 100 instances · none median 445 ms range 441–453 mslutra-v0.6.21 1,000 instances · none median 597 ms range 586–606 mslutra-v0.6.21 10,000 instances · none median 1,543 ms range 1,527–1,578 mslutra-v0.6.21 100,000 instances · none median 9,605 ms range 9,486–9,723 ms
cross
05,00010,00015,0001001k10k100kInstances (log scale)Time (ms)lutra-v0.6.20.7 100 instances · cross median 517 ms range 511–538 mslutra-v0.6.20.7 1,000 instances · cross median 662 ms range 654–670 mslutra-v0.6.20.7 10,000 instances · cross median 1,689 ms range 1,673–1,720 mslutra-v0.6.20.7 100,000 instances · cross median 10,869 ms range 10,749–10,953 mslutra-v0.6.21 100 instances · cross median 443 ms range 437–447 mslutra-v0.6.21 1,000 instances · cross median 587 ms range 573–672 mslutra-v0.6.21 10,000 instances · cross median 1,635 ms range 1,620–1,726 mslutra-v0.6.21 100,000 instances · cross median 10,868 ms range 10,776–11,111 ms

Median peak memory, by list expanderWhiskers: lowest to highest run.

none
05001,0001,5001001k10k100kInstances (log scale)Peak memory (MiB)lutra-v0.6.20.7 100 instances · none median 185 MiB range 179–198 MiBlutra-v0.6.20.7 1,000 instances · none median 279 MiB range 274–289 MiBlutra-v0.6.20.7 10,000 instances · none median 708 MiB range 695–717 MiBlutra-v0.6.20.7 100,000 instances · none median 1,118 MiB range 1,106–1,176 MiBlutra-v0.6.21 100 instances · none median 182 MiB range 170–186 MiBlutra-v0.6.21 1,000 instances · none median 219 MiB range 198–233 MiBlutra-v0.6.21 10,000 instances · none median 672 MiB range 660–684 MiBlutra-v0.6.21 100,000 instances · none median 1,141 MiB range 1,111–1,152 MiB
cross
05001,0001,5001001k10k100kInstances (log scale)Peak memory (MiB)lutra-v0.6.20.7 100 instances · cross median 188 MiB range 174–200 MiBlutra-v0.6.20.7 1,000 instances · cross median 299 MiB range 296–310 MiBlutra-v0.6.20.7 10,000 instances · cross median 706 MiB range 695–713 MiBlutra-v0.6.20.7 100,000 instances · cross median 1,075 MiB range 1,060–1,139 MiBlutra-v0.6.21 100 instances · cross median 186 MiB range 169–190 MiBlutra-v0.6.21 1,000 instances · cross median 232 MiB range 227–244 MiBlutra-v0.6.21 10,000 instances · cross median 656 MiB range 649–671 MiBlutra-v0.6.21 100,000 instances · cross median 1,050 MiB range 1,031–1,126 MiB
Straight-line fit of the median time: fixed cost + cost per 1,000 instances
nonecross
lutra-v0.6.20.7586 ms + 92 ms572 ms + 103 ms
lutra-v0.6.21521 ms + 91 ms501 ms + 104 ms
Median timeMedian peak memory
ExpanderInstanceslutra-v0.6.20.7lutra-v0.6.21lutra-v0.6.20.7lutra-v0.6.21
none100518 ms +16%±3.7 · 511–524445 ms fastest±3.4 · 441–453185 MiB +1.5%179–198182 MiB lowest · tie170–186
none1,000655 ms +9.7%±3.6 · 650–663597 ms fastest±6.6 · 586–606279 MiB +27%274–289219 MiB lowest198–233
none10,0001,613 ms +4.5%±14 · 1,585–1,6371,543 ms fastest±16 · 1,527–1,578708 MiB +5.4%695–717672 MiB lowest660–684
none100,0009,731 ms +1.3%±42 · 9,648–9,8109,605 ms fastest · tie±83 · 9,486–9,7231,118 MiB lowest · tie1,106–1,1761,141 MiB +2.0%1,111–1,152
cross100517 ms +17%±8.2 · 511–538443 ms fastest±3.2 · 437–447188 MiB +0.9%174–200186 MiB lowest · tie169–190
cross1,000662 ms +13%±5.0 · 654–670587 ms fastest · tie±27 · 573–672299 MiB +29%296–310232 MiB lowest227–244
cross10,0001,689 ms +3.3%±15 · 1,673–1,7201,635 ms fastest · tie±40 · 1,620–1,726706 MiB +7.6%695–713656 MiB lowest649–671
cross100,00010,869 ms ±0%±71 · 10,749–10,95310,868 ms fastest · tie±96 · 10,776–11,1111,075 MiB +2.4%1,060–1,1391,050 MiB lowest · tie1,031–1,126

Parameter count

One flat stOTTR template with a growing number of parameters, each producing one triple, over 1,000 instances.

expand · stottr → wottr

Median time against lutra-v0.6.20.7Below 0% is faster. Filled dot: clear difference; hollow dot: within noise.
−20%−10%0%+10%+20%110100Parameters (log scale)DifferenceParameter count · expand · 1 parameter lutra-v0.6.21: 507 ms lutra-v0.6.20.7: 576 ms −12%, clearParameter count · expand · 10 parameters lutra-v0.6.21: 756 ms lutra-v0.6.20.7: 825 ms −8.4%, clearParameter count · expand · 100 parameters lutra-v0.6.21: 2,730 ms lutra-v0.6.20.7: 2,763 ms −1.2%, within noise
Median timeWhiskers: lowest to highest run.
01,0002,0003,000110100Parameters (log scale)Time (ms)lutra-v0.6.20.7 1 parameter median 576 ms range 573–582 mslutra-v0.6.20.7 10 parameters median 825 ms range 820–845 mslutra-v0.6.20.7 100 parameters median 2,763 ms range 2,714–2,976 mslutra-v0.6.21 1 parameter median 507 ms range 502–513 mslutra-v0.6.21 10 parameters median 756 ms range 747–761 mslutra-v0.6.21 100 parameters median 2,730 ms range 2,702–2,773 ms
Median peak memoryWhiskers: lowest to highest run.
0200400600800110100Parameters (log scale)Peak memory (MiB)lutra-v0.6.20.7 1 parameter median 225 MiB range 220–231 MiBlutra-v0.6.20.7 10 parameters median 409 MiB range 398–420 MiBlutra-v0.6.20.7 100 parameters median 753 MiB range 748–766 MiBlutra-v0.6.21 1 parameter median 195 MiB range 169–197 MiBlutra-v0.6.21 10 parameters median 343 MiB range 341–368 MiBlutra-v0.6.21 100 parameters median 745 MiB range 739–754 MiB
Straight-line fit of the median time: fixed cost + cost per parameter
Fit
lutra-v0.6.20.7579 ms + 22 ms
lutra-v0.6.21508 ms + 22 ms
Median timeMedian peak memory
Parameterslutra-v0.6.20.7lutra-v0.6.21lutra-v0.6.20.7lutra-v0.6.21
1576 ms +14%±2.8 · 573–582507 ms fastest±2.7 · 502–513225 MiB +16%220–231195 MiB lowest169–197
10825 ms +9.2%±6.7 · 820–845756 ms fastest±4.5 · 747–761409 MiB +19%398–420343 MiB lowest341–368
1002,763 ms +1.2%±78 · 2,714–2,9762,730 ms fastest · tie±21 · 2,702–2,773753 MiB +1.0%748–766745 MiB lowest · tie739–754

Nesting depth

A chain of stOTTR templates, each calling the next, of growing depth, over 1,000 instances.

expand · stottr → wottr

Median time against lutra-v0.6.20.7Below 0% is faster. Filled dot: clear difference; hollow dot: within noise.
−20%−10%0%+10%+20%110100Nesting depth (log scale)DifferenceNesting depth · expand · depth 1 lutra-v0.6.21: 506 ms lutra-v0.6.20.7: 578 ms −12%, clearNesting depth · expand · depth 10 lutra-v0.6.21: 528 ms lutra-v0.6.20.7: 599 ms −12%, clearNesting depth · expand · depth 100 lutra-v0.6.21: 683 ms lutra-v0.6.20.7: 748 ms −8.7%, clear
Median timeWhiskers: lowest to highest run.
0200400600800110100Nesting depth (log scale)Time (ms)lutra-v0.6.20.7 depth 1 median 578 ms range 573–591 mslutra-v0.6.20.7 depth 10 median 599 ms range 591–604 mslutra-v0.6.20.7 depth 100 median 748 ms range 743–755 mslutra-v0.6.21 depth 1 median 506 ms range 502–523 mslutra-v0.6.21 depth 10 median 528 ms range 523–542 mslutra-v0.6.21 depth 100 median 683 ms range 668–727 ms
Median peak memoryWhiskers: lowest to highest run.
0200400600800110100Nesting depth (log scale)Peak memory (MiB)lutra-v0.6.20.7 depth 1 median 221 MiB range 214–226 MiBlutra-v0.6.20.7 depth 10 median 270 MiB range 258–278 MiBlutra-v0.6.20.7 depth 100 median 604 MiB range 596–609 MiBlutra-v0.6.21 depth 1 median 182 MiB range 169–207 MiBlutra-v0.6.21 depth 10 median 209 MiB range 195–224 MiBlutra-v0.6.21 depth 100 median 592 MiB range 585–598 MiB
Straight-line fit of the median time: fixed cost + cost per nesting level
Fit
lutra-v0.6.20.7579 ms + 1.7 ms
lutra-v0.6.21507 ms + 1.8 ms
Median timeMedian peak memory
Nesting depthlutra-v0.6.20.7lutra-v0.6.21lutra-v0.6.20.7lutra-v0.6.21
1578 ms +14%±6.2 · 573–591506 ms fastest±5.8 · 502–523221 MiB +21%214–226182 MiB lowest169–207
10599 ms +13%±4.3 · 591–604528 ms fastest±5.4 · 523–542270 MiB +29%258–278209 MiB lowest195–224
100748 ms +9.5%±3.9 · 743–755683 ms fastest±18 · 668–727604 MiB +2.0%596–609592 MiB lowest · tie585–598

wOTTR input

The Person instances of the list-expansion baseline, read from a wOTTR (Turtle) file. Lutra reads wOTTR with Jena, not with the stOTTR parser.

expand · wottr → wottr

Median time against lutra-v0.6.20.7Below 0% is faster. Filled dot: clear difference; hollow dot: within noise.
−20%−10%0%+10%+20%1001k10k100kInstances (log scale)DifferencewOTTR input · expand · 100 instances lutra-v0.6.21: 458 ms lutra-v0.6.20.7: 515 ms −11%, within noisewOTTR input · expand · 1,000 instances lutra-v0.6.21: 590 ms lutra-v0.6.20.7: 646 ms −8.7%, clearwOTTR input · expand · 10,000 instances lutra-v0.6.21: 1,528 ms lutra-v0.6.20.7: 1,600 ms −4.5%, within noisewOTTR input · expand · 100,000 instances lutra-v0.6.21: 8,819 ms lutra-v0.6.20.7: 9,923 ms −11%, clear
Median timeWhiskers: lowest to highest run.
05,00010,00015,0001001k10k100kInstances (log scale)Time (ms)lutra-v0.6.20.7 100 instances median 515 ms range 507–541 mslutra-v0.6.20.7 1,000 instances median 646 ms range 638–668 mslutra-v0.6.20.7 10,000 instances median 1,600 ms range 1,583–1,652 mslutra-v0.6.20.7 100,000 instances median 9,923 ms range 9,632–10,079 mslutra-v0.6.21 100 instances median 458 ms range 450–530 mslutra-v0.6.21 1,000 instances median 590 ms range 586–599 mslutra-v0.6.21 10,000 instances median 1,528 ms range 1,500–1,583 mslutra-v0.6.21 100,000 instances median 8,819 ms range 8,751–8,913 ms
Median peak memoryWhiskers: lowest to highest run.
01,0002,0003,0001001k10k100kInstances (log scale)Peak memory (MiB)lutra-v0.6.20.7 100 instances median 189 MiB range 181–198 MiBlutra-v0.6.20.7 1,000 instances median 284 MiB range 277–301 MiBlutra-v0.6.20.7 10,000 instances median 674 MiB range 669–691 MiBlutra-v0.6.20.7 100,000 instances median 2,108 MiB range 1,621–2,211 MiBlutra-v0.6.21 100 instances median 186 MiB range 171–190 MiBlutra-v0.6.21 1,000 instances median 210 MiB range 202–214 MiBlutra-v0.6.21 10,000 instances median 650 MiB range 641–665 MiBlutra-v0.6.21 100,000 instances median 1,213 MiB range 1,172–1,322 MiB
Straight-line fit of the median time: fixed cost + cost per 1,000 instances
Fit
lutra-v0.6.20.7571 ms + 94 ms
lutra-v0.6.21547 ms + 83 ms
Median timeMedian peak memory
Instanceslutra-v0.6.20.7lutra-v0.6.21lutra-v0.6.20.7lutra-v0.6.21
100515 ms +13%±12 · 507–541458 ms fastest · tie±23 · 450–530189 MiB +1.7%181–198186 MiB lowest · tie171–190
1,000646 ms +9.5%±8.8 · 638–668590 ms fastest±3.7 · 586–599284 MiB +35%277–301210 MiB lowest202–214
10,0001,600 ms +4.7%±17 · 1,583–1,6521,528 ms fastest · tie±23 · 1,500–1,583674 MiB +3.7%669–691650 MiB lowest641–665
100,0009,923 ms +13%±164 · 9,632–10,0798,819 ms fastest±51 · 8,751–8,9132,108 MiB +74%1,621–2,2111,213 MiB lowest1,172–1,322

tabOTTR input

The Person instances, read from a tabOTTR (.xlsx) spreadsheet.

expand · tabottr → wottr

Median time against lutra-v0.6.20.7Below 0% is faster. Filled dot: clear difference; hollow dot: within noise.
−20%−10%0%+10%+20%1001k10k100kInstances (log scale)DifferencetabOTTR input · expand · 100 instances lutra-v0.6.21: 631 ms lutra-v0.6.20.7: 739 ms −15%, cleartabOTTR input · expand · 1,000 instances lutra-v0.6.21: 798 ms lutra-v0.6.20.7: 933 ms −14%, within noisetabOTTR input · expand · 10,000 instances lutra-v0.6.21: 1,622 ms lutra-v0.6.20.7: 1,801 ms −9.9%, cleartabOTTR input · expand · 100,000 instances lutra-v0.6.21: 7,749 ms lutra-v0.6.20.7: 7,925 ms −2.2%, within noise
Median timeWhiskers: lowest to highest run.
02,5005,0007,50010,0001001k10k100kInstances (log scale)Time (ms)lutra-v0.6.20.7 100 instances median 739 ms range 730–758 mslutra-v0.6.20.7 1,000 instances median 933 ms range 891–1,030 mslutra-v0.6.20.7 10,000 instances median 1,801 ms range 1,733–1,885 mslutra-v0.6.20.7 100,000 instances median 7,925 ms range 7,773–8,151 mslutra-v0.6.21 100 instances median 631 ms range 625–654 mslutra-v0.6.21 1,000 instances median 798 ms range 774–900 mslutra-v0.6.21 10,000 instances median 1,622 ms range 1,589–1,692 mslutra-v0.6.21 100,000 instances median 7,749 ms range 7,611–7,808 ms
Median peak memoryWhiskers: lowest to highest run.
05001,0001,5002,0001001k10k100kInstances (log scale)Peak memory (MiB)lutra-v0.6.20.7 100 instances median 226 MiB range 216–235 MiBlutra-v0.6.20.7 1,000 instances median 247 MiB range 241–256 MiBlutra-v0.6.20.7 10,000 instances median 530 MiB range 510–568 MiBlutra-v0.6.20.7 100,000 instances median 1,566 MiB range 1,124–1,709 MiBlutra-v0.6.21 100 instances median 236 MiB range 230–246 MiBlutra-v0.6.21 1,000 instances median 238 MiB range 228–255 MiBlutra-v0.6.21 10,000 instances median 537 MiB range 507–564 MiBlutra-v0.6.21 100,000 instances median 1,560 MiB range 1,225–1,704 MiB
Straight-line fit of the median time: fixed cost + cost per 1,000 instances
Fit
lutra-v0.6.20.7890 ms + 71 ms
lutra-v0.6.21752 ms + 70 ms
Median timeMedian peak memory
Instanceslutra-v0.6.20.7lutra-v0.6.21lutra-v0.6.20.7lutra-v0.6.21
100739 ms +17%±8.4 · 730–758631 ms fastest±7.9 · 625–654226 MiB lowest · tie216–235236 MiB +4.5%230–246
1,000933 ms +17%±43 · 891–1,030798 ms fastest · tie±44 · 774–900247 MiB +3.8%241–256238 MiB lowest · tie228–255
10,0001,801 ms +11%±44 · 1,733–1,8851,622 ms fastest±33 · 1,589–1,692530 MiB lowest · tie510–568537 MiB +1.3%507–564
100,0007,925 ms +2.3%±110 · 7,773–8,1517,749 ms fastest · tie±76 · 7,611–7,8081,566 MiB +0.4%1,124–1,7091,560 MiB lowest · tie1,225–1,704

bOTTR input

The Person instances, produced by an SQL query against an in-memory H2 database through a bOTTR mapping.

expand · bottr → wottr

Median time against lutra-v0.6.20.7Below 0% is faster. Filled dot: clear difference; hollow dot: within noise.
−20%−10%0%+10%+20%1001k10k100kInstances (log scale)DifferencebOTTR input · expand · 100 instances lutra-v0.6.21: 548 ms lutra-v0.6.20.7: 642 ms −15%, clearbOTTR input · expand · 1,000 instances lutra-v0.6.21: 647 ms lutra-v0.6.20.7: 716 ms −9.6%, within noisebOTTR input · expand · 10,000 instances lutra-v0.6.21: 1,260 ms lutra-v0.6.20.7: 1,333 ms −5.4%, within noisebOTTR input · expand · 100,000 instances lutra-v0.6.21: 6,312 ms lutra-v0.6.20.7: 6,304 ms +0.1%, within noise
Median timeWhiskers: lowest to highest run.
02,0004,0006,0008,0001001k10k100kInstances (log scale)Time (ms)lutra-v0.6.20.7 100 instances median 642 ms range 612–722 mslutra-v0.6.20.7 1,000 instances median 716 ms range 707–722 mslutra-v0.6.20.7 10,000 instances median 1,333 ms range 1,293–1,352 mslutra-v0.6.20.7 100,000 instances median 6,304 ms range 6,245–6,525 mslutra-v0.6.21 100 instances median 548 ms range 541–551 mslutra-v0.6.21 1,000 instances median 647 ms range 635–733 mslutra-v0.6.21 10,000 instances median 1,260 ms range 1,232–1,302 mslutra-v0.6.21 100,000 instances median 6,312 ms range 6,253–6,475 ms
Median peak memoryWhiskers: lowest to highest run.
02505007501,0001001k10k100kInstances (log scale)Peak memory (MiB)lutra-v0.6.20.7 100 instances median 223 MiB range 220–235 MiBlutra-v0.6.20.7 1,000 instances median 226 MiB range 212–236 MiBlutra-v0.6.20.7 10,000 instances median 491 MiB range 468–513 MiBlutra-v0.6.20.7 100,000 instances median 745 MiB range 720–791 MiBlutra-v0.6.21 100 instances median 207 MiB range 203–227 MiBlutra-v0.6.21 1,000 instances median 208 MiB range 201–220 MiBlutra-v0.6.21 10,000 instances median 474 MiB range 456–489 MiBlutra-v0.6.21 100,000 instances median 752 MiB range 722–845 MiB
Straight-line fit of the median time: fixed cost + cost per 1,000 instances
Fit
lutra-v0.6.20.7686 ms + 56 ms
lutra-v0.6.21604 ms + 57 ms
Median timeMedian peak memory
Instanceslutra-v0.6.20.7lutra-v0.6.21lutra-v0.6.20.7lutra-v0.6.21
100642 ms +17%±29 · 612–722548 ms fastest±3.3 · 541–551223 MiB +7.8%220–235207 MiB lowest · tie203–227
1,000716 ms +11%±4.6 · 707–722647 ms fastest · tie±35 · 635–733226 MiB +8.6%212–236208 MiB lowest · tie201–220
10,0001,333 ms +5.8%±15 · 1,293–1,3521,260 ms fastest · tie±23 · 1,232–1,302491 MiB +3.8%468–513474 MiB lowest · tie456–489
100,0006,304 ms fastest · tie±75 · 6,245–6,5256,312 ms +0.1%±67 · 6,253–6,475745 MiB lowest · tie720–791752 MiB +0.9%722–845

Settings and environment

Runs per case
5 warm-up (discarded) + 10 measured
JVM options of the runs
-Xmx4g
Timeout per run
300 s
Instances in structure cases
1,000
Memory measurement
/usr/bin/time -l (BSD, reports bytes)
Operating system
Mac OS X 27.0
Architecture
aarch64
CPUs
14
Physical memory
49152 MiB
Java (also runs the jars)
OpenJDK 64-Bit Server VM 21.0.11
Started
2026-09-25 17:35 UTC
Finished
2026-09-25 18:07 UTC
Jar lutra-v0.6.20.7
/jar-build/lutra-v0.6.20.7.jar (44,805 KiB)
Jar lutra-v0.6.21
/jar-build/lutra-v0.6.21.jar (43,423 KiB)
Source
results-20260925-180712.json

All numbers

Every measurement of the run. Times in milliseconds, memory in MiB. The last column lists the time of each measured run, sorted.

JarKindModeIn → outExpanderVariantScaleRunsFailedMedianMeanStd devMinMaxMemory medianMemory minMemory maxEach run
lutra-v0.6.20.7EXPANSIONexpandstottr → wottrnone1001005185173.7511524185179198511 513 514 516 518 518 519 520 520 524
lutra-v0.6.21EXPANSIONexpandstottr → wottrnone1001004454463.4441453182170186441 443 444 445 445 445 447 449 450 453
lutra-v0.6.20.7EXPANSIONexpandstottr → wottrnone1,0001006556553.6650663279274289650 652 653 654 654 655 657 657 659 663
lutra-v0.6.21EXPANSIONexpandstottr → wottrnone1,0001005975976.6586606219198233586 587 592 595 595 598 601 602 605 606
lutra-v0.6.20.7EXPANSIONexpandstottr → wottrnone10,0001001,6131,613141,5851,6377086957171585 1600 1606 1612 1612 1613 1616 1617 1629 1637
lutra-v0.6.21EXPANSIONexpandstottr → wottrnone10,0001001,5431,549161,5271,5786726606841527 1534 1536 1538 1541 1545 1559 1560 1567 1578
lutra-v0.6.20.7EXPANSIONexpandstottr → wottrnone100,0001009,7319,725429,6489,8101,1181,1061,1769648 9690 9692 9705 9728 9733 9739 9746 9758 9810
lutra-v0.6.21EXPANSIONexpandstottr → wottrnone100,0001009,6059,610839,4869,7231,1411,1111,1529486 9516 9522 9567 9604 9606 9677 9681 9721 9723
lutra-v0.6.20.7EXPANSIONexpandstottr → wottrcross1001005175208.2511538188174200511 511 512 516 516 517 522 524 528 538
lutra-v0.6.21EXPANSIONexpandstottr → wottrcross1001004434423.2437447186169190437 438 439 442 443 443 445 445 445 447
lutra-v0.6.20.7EXPANSIONexpandstottr → wottrcross1,0001006626645.0654670299296310654 659 661 661 662 662 667 669 670 670
lutra-v0.6.21EXPANSIONexpandstottr → wottrcross1,00010058759627573672232227244573 576 581 583 583 591 592 603 604 672
lutra-v0.6.20.7EXPANSIONexpandstottr → wottrcross10,0001001,6891,690151,6731,7207066957131673 1675 1677 1677 1688 1689 1694 1695 1710 1720
lutra-v0.6.21EXPANSIONexpandstottr → wottrcross10,0001001,6351,656401,6201,7266566496711620 1625 1629 1631 1634 1636 1641 1706 1716 1726
lutra-v0.6.20.7EXPANSIONexpandstottr → wottrcross100,00010010,86910,8587110,74910,9531,0751,0601,13910749 10762 10789 10818 10865 10873 10894 10920 10953 10953
lutra-v0.6.21EXPANSIONexpandstottr → wottrcross100,00010010,86810,8899610,77611,1111,0501,0311,12610776 10805 10809 10825 10859 10877 10898 10945 10981 11111
lutra-v0.6.20.7PARAM_COUNTexpandstottr → wottr-11,0001005765772.8573582225220231573 574 574 575 575 577 578 579 580 582
lutra-v0.6.21PARAM_COUNTexpandstottr → wottr-11,0001005075072.7502513195169197502 505 505 506 507 507 507 508 509 513
lutra-v0.6.20.7PARAM_COUNTexpandstottr → wottr-101,0001008258276.7820845409398420820 821 823 823 824 826 827 828 828 845
lutra-v0.6.21PARAM_COUNTexpandstottr → wottr-101,0001007567554.5747761343341368747 750 752 754 755 756 758 760 761 761
lutra-v0.6.20.7PARAM_COUNTexpandstottr → wottr-1001,0001002,7632,793782,7142,9767537487662714 2725 2732 2761 2762 2764 2775 2847 2873 2976
lutra-v0.6.21PARAM_COUNTexpandstottr → wottr-1001,0001002,7302,734212,7022,7737457397542702 2714 2717 2720 2724 2735 2738 2752 2761 2773
lutra-v0.6.20.7NESTING_DEPTHexpandstottr → wottr-11,0001005785806.2573591221214226573 573 573 575 576 579 583 585 587 591
lutra-v0.6.21NESTING_DEPTHexpandstottr → wottr-11,0001005065085.8502523182169207502 503 504 505 505 506 508 509 511 523
lutra-v0.6.20.7NESTING_DEPTHexpandstottr → wottr-101,0001005995984.3591604270258278591 593 593 595 598 599 601 602 602 604
lutra-v0.6.21NESTING_DEPTHexpandstottr → wottr-101,0001005285305.4523542209195224523 525 526 526 527 528 531 533 535 542
lutra-v0.6.20.7NESTING_DEPTHexpandstottr → wottr-1001,0001007487483.9743755604596609743 744 745 745 746 749 750 751 753 755
lutra-v0.6.21NESTING_DEPTHexpandstottr → wottr-1001,00010068368718668727592585598668 670 676 676 682 683 685 689 712 727
lutra-v0.6.20.7WOTTRexpandwottr → wottr-10010051552212507541189181198507 510 514 514 515 515 530 531 540 541
lutra-v0.6.21WOTTRexpandwottr → wottr-10010045846723450530186171190450 451 452 453 455 460 462 472 480 530
lutra-v0.6.20.7WOTTRexpandwottr → wottr-1,0001006466488.8638668284277301638 638 642 644 645 646 648 655 656 668
lutra-v0.6.21WOTTRexpandwottr → wottr-1,0001005905903.7586599210202214586 586 587 588 589 590 590 592 593 599
lutra-v0.6.20.7WOTTRexpandwottr → wottr-10,0001001,6001,603171,5831,6526746696911583 1593 1597 1598 1599 1600 1601 1602 1606 1652
lutra-v0.6.21WOTTRexpandwottr → wottr-10,0001001,5281,533231,5001,5836506416651500 1512 1512 1521 1524 1531 1544 1546 1554 1583
lutra-v0.6.20.7WOTTRexpandwottr → wottr-100,0001009,9239,8711649,63210,0792,1081,6212,2119632 9634 9665 9825 9918 9928 9941 10029 10055 10079
lutra-v0.6.21WOTTRexpandwottr → wottr-100,0001008,8198,822518,7518,9131,2131,1721,3228751 8760 8781 8788 8803 8834 8844 8869 8873 8913
lutra-v0.6.20.7TABOTTRexpandtabottr → wottr-1001007397418.4730758226216235730 730 737 737 738 739 742 745 752 758
lutra-v0.6.21TABOTTRexpandtabottr → wottr-1001006316347.9625654236230246625 628 628 629 630 632 635 637 638 654
lutra-v0.6.20.7TABOTTRexpandtabottr → wottr-1,000100933944438911,030247241256891 903 903 919 931 934 951 983 994 1030
lutra-v0.6.21TABOTTRexpandtabottr → wottr-1,00010079882244774900238228255774 781 784 788 788 808 860 863 871 900
lutra-v0.6.20.7TABOTTRexpandtabottr → wottr-10,0001001,8011,801441,7331,8855305105681733 1759 1765 1765 1786 1816 1824 1828 1844 1885
lutra-v0.6.21TABOTTRexpandtabottr → wottr-10,0001001,6221,631331,5891,6925375075641589 1590 1602 1616 1620 1624 1645 1651 1676 1692
lutra-v0.6.20.7TABOTTRexpandtabottr → wottr-100,0001007,9257,9291107,7738,1511,5661,1241,7097773 7787 7854 7868 7909 7940 7969 8012 8022 8151
lutra-v0.6.21TABOTTRexpandtabottr → wottr-100,0001007,7497,724767,6117,8081,5601,2251,7047611 7611 7620 7738 7742 7756 7758 7796 7800 7808
lutra-v0.6.20.7BOTTRexpandbottr → wottr-10010064264529612722223220235612 616 626 638 639 645 648 648 655 722
lutra-v0.6.21BOTTRexpandbottr → wottr-1001005485473.3541551207203227541 542 543 546 547 548 548 549 550 551
lutra-v0.6.20.7BOTTRexpandbottr → wottr-1,0001007167164.6707722226212236707 711 714 714 715 716 718 721 722 722
lutra-v0.6.21BOTTRexpandbottr → wottr-1,00010064766235635733208201220635 637 637 639 642 652 654 667 725 733
lutra-v0.6.20.7BOTTRexpandbottr → wottr-10,0001001,3331,330151,2931,3524914685131293 1322 1324 1330 1332 1333 1335 1335 1341 1352
lutra-v0.6.21BOTTRexpandbottr → wottr-10,0001001,2601,263231,2321,3024744564891232 1236 1242 1256 1257 1263 1269 1276 1299 1302
lutra-v0.6.20.7BOTTRexpandbottr → wottr-100,0001006,3046,329756,2456,5257457207916245 6278 6289 6291 6300 6307 6329 6342 6385 6525
lutra-v0.6.21BOTTRexpandbottr → wottr-100,0001006,3126,326676,2536,4757527228456253 6266 6276 6279 6310 6314 6317 6365 6406 6475