1= Benchmarks23There are multiple implementations of jsonnet implemented in different languages: Rust (this repo), https://github.com/google/go-jsonnet/[Go], https://github.com/databricks/sjsonnet[Scala], https://github.com/google/jsonnet[C++], https://github.com/moleike/haskell-jsonnet[Haskell].45For simplicity, I will call these implementations by the language of their implementation.67Unfortunately, I haven't managed to measure performance of Haskell implementation, because I wasn't able to build it, and there is no binaries published anywhere, so this implementation is omitted from the following benchmarks89CPU: AMD Ryzen 9 9950X3D 16-Core Processor, 32 threads1011.Tested versions12[%collapsible]13====14* Go: Jsonnet commandline interpreter (Go implementation) v0.22.0-rc115* C++: Jsonnet commandline interpreter v0.22.0-rc116* Scala (native/GraalVM): Sjsonnet 0.6.317* Rust (alternative): rsjsonnet 2026-03-23 (27be31532180c611383ceb2b7f03193ab1253487)18* Rust (current): jrsonnet 0.5.0-pre9819* Rust (current-experimental): jrsonnet 0.5.0-pre9820* Rust (release): jrsonnet 0.5.0-pre9621====2223== Real world2425=== Graalvm CI2627> Note: No results for Go, slow benchmark, but only quick requested2829> Note: No results for C++, takes longer than a hour3031[cols="<,>,>,>,>"]32|===33| Command 34| Mean [ms] 35| Min [ms] 36| Max [ms] 37| Relative 3839| `Rust (current)` 40| 32.5 ± 1.7 41| 28.6 42| 38.0 43| 1.01 ± 0.07 4445| `Rust (current-experimental)` 46| 32.1 ± 1.3 47| 29.1 48| 35.4 49| 1.00 5051| `Rust (release)` 52| 49.0 ± 3.0 53| 42.9 54| 54.7 55| 1.52 ± 0.11 5657| `Rust (alternative, rsjsonnet)` 58| 69.0 ± 8.3 59| 54.8 60| 85.9 61| 2.15 ± 0.27 6263| `Scala (native)` 64| 72.6 ± 4.5 65| 60.6 66| 82.5 67| 2.26 ± 0.17 6869| `Scala (GraalVM)` 70| 66.0 ± 2.4 71| 58.6 72| 69.6 73| 2.05 ± 0.11 74|===7576=== Kube-prometheus manifests7778> Note: No results for Go, slow benchmark, but only quick requested7980> Note: No results for C++, too slow, takes hours, skews results8182[cols="<,>,>,>,>"]83|===84| Command 85| Mean [ms] 86| Min [ms] 87| Max [ms] 88| Relative 8990| `Rust (current)` 91| 56.7 ± 4.0 92| 49.5 93| 69.3 94| 1.00 9596| `Rust (current-experimental)` 97| 57.0 ± 3.0 98| 51.6 99| 69.1 100| 1.01 ± 0.09 101102| `Rust (release)` 103| 70.2 ± 3.2 104| 66.3 105| 85.0 106| 1.24 ± 0.10 107108| `Rust (alternative, rsjsonnet)` 109| 61.5 ± 4.1 110| 51.9 111| 73.9 112| 1.08 ± 0.10 113114| `Scala (native)` 115| 216.9 ± 4.4 116| 210.5 117| 228.5 118| 3.82 ± 0.28 119120| `Scala (GraalVM)` 121| 195.4 ± 9.7 122| 181.5 123| 216.0 124| 3.45 ± 0.29 125|===126127== Benchmarks from C++ jsonnet (/perf_tests)128129=== Large string join130131.Source132[%collapsible]133====134[source,jsonnet]135----136{137 text: std.join(',', std.makeArray(76846, function(_) 'x')),138}139140----141====142143[cols="<,>,>,>,>"]144|===145| Command 146| Mean [ms] 147| Min [ms] 148| Max [ms] 149| Relative 150151| `Rust (current)` 152| 5.7 ± 0.4 153| 5.1 154| 7.6 155| 2.11 ± 0.23 156157| `Rust (current-experimental)` 158| 6.3 ± 0.4 159| 5.7 160| 8.2 161| 2.32 ± 0.25 162163| `Rust (release)` 164| 2.7 ± 0.2 165| 2.4 166| 3.8 167| 1.00 168169| `Rust (alternative, rsjsonnet)` 170| 12.8 ± 2.0 171| 10.1 172| 20.6 173| 4.70 ± 0.85 174175| `Go` 176| 45.4 ± 1.9 177| 41.8 178| 49.5 179| 16.71 ± 1.65 180181| `Scala (native)` 182| 10.1 ± 1.0 183| 8.0 184| 14.0 185| 3.70 ± 0.51 186187| `Scala (GraalVM)` 188| 8.1 ± 0.6 189| 6.5 190| 10.0 191| 2.96 ± 0.33 192193| `C++` 194| 39.5 ± 3.0 195| 33.4 196| 47.1 197| 14.51 ± 1.71 198|===199200=== Large string template201202> Note: No results for Go, fails with os stack size exhausion203204> Note: No results for C++, too slow, takes hours, skews results205206[cols="<,>,>,>,>"]207|===208| Command 209| Mean [ms] 210| Min [ms] 211| Max [ms] 212| Relative 213214| `Rust (current)` 215| 2.2 ± 0.3 216| 1.9 217| 4.0 218| 1.00 ± 0.15 219220| `Rust (current-experimental)` 221| 2.2 ± 0.2 222| 2.0 223| 3.3 224| 1.00 225226| `Rust (release)` 227| 2.8 ± 0.2 228| 2.5 229| 4.2 230| 1.26 ± 0.15 231232| `Rust (alternative, rsjsonnet)` 233| 3.5 ± 0.4 234| 3.0 235| 5.7 236| 1.57 ± 0.22 237238| `Scala (native)` 239| 14.3 ± 1.0 240| 12.2 241| 17.6 242| 6.43 ± 0.73 243244| `Scala (GraalVM)` 245| 14.2 ± 0.8 246| 11.8 247| 16.0 248| 6.37 ± 0.65 249|===250251=== Realistic 1252253> Note: No results for Go, slow benchmark, but only quick requested254255> Note: No results for C++, too slow, takes hours, skews results256257.Source258[%collapsible]259====260[source,jsonnet]261----262local utils = {263 Func3(aaaaaaa, bbbbbbb, cccc)::264 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/%s/XXXXX/%s/XXXXXXXXXXXXXXX/%s'265 % [aaaaaaa, bbbbbbb, cccc],266};267268269local long_list = [270 '001xxxxxxxxxxxxxxx-xxx',271 '002xxxxxxxxxxxxxxxxxx-xxx',272 '003xxxxxxxxxxxxxxxx-xxxxxxx',273 '004xxxxxx-xxxxxx',274 '005xxxx-xxx-xxxx',275 '006xxx-xxx-xxxxxx',276 '007xxx-xxx-xxxx-xxxx',277 '008xxx-xxx-xxxx-xxxx-xxxxxxx',278 '009xxx-xxx-xxxxx-xxxx-xxxxxxx-xxxxxx',279 '010xxx-xxx-xxxx-xxxxxxx-xxxxxx-xxxxxxx',280 '011xxx-xxx-xxxxx-xxxxxxxx-xxxxxxx',281 '012xxx-xxx-xxxx-xxxxxxxx-xxxxxxx-xxxxxx',282 '013xxx-xxx-xxxx-xxxxxxxxxx',283 '014xxx-xxx-xxxxx-xxxxxx-xx',284 '015xxx-xxx-xxxxxx-xxxxxxx',285 '016xxx-xxx-xxxx-xxxxxxxx-xxxxx',286 '017xxx-xxx-xxxx-xxxxxxxxxxxxxxx',287 '018xxx-xxx-xxxx-xxxxxxxx-xxxxxxx-xxxxxxx',288 '019xxx-xxx-xxxx-xxxxxxxx-xx',289 '020xxx-xxx-xxxx-xxxxxxxxxxxxxxxx',290 '021xxx-xxx-xxxx-xxxxxxxx-xxxxxxxxxxxx-xxx',291 '022xxx-xxxx-xxxx-xxxx-xxxxxxx',292 '023xxx-xxxx-xxxx-xxx-xxxxxxx-xxxxxx-xxxxxxx',293 '024xxx-xxx-xxxx-xxx-xxxx-xxxx-xxx-xxxxxxxxx',294 '025xxx-xxxx-xxxx-xxxxxxxxx',295 '026xxx-xxx-xxxx-xxx-xxxxxxx',296 '027xxx-xxx-xxxx-xxx-xxxxxxx',297 '028xxx-xxx-xxxx-xxxxxxxxxx',298 '029xxx-xxx-xxxx-xxxxxx',299 '030xxx-xxx-xxxx-xxx-xxxxxxx',300 '031xxx-xxx-xxxx-xxx-xxxxxxxx',301 '032xxx-xxx-xxxxx-xxxxxxxxxxxx-xxxxxxx',302 '033xxx-xxx-xxxx-xxx-xxxx-xxxx',303 '034xxx-xxx-xxxx-xxx-xxxxxxxx-xxxxxxxx',304 '035xxx-xxx-xxxx-xxxxxxx',305 '036xxx-xxx-xxxx-xxxxxxxx-xxxxxxx',306 '037xxx-xxx-xxxx-xxxxxx',307 '038xxx-xxx-xxxx-xxxxxxxxxx',308 '039xxxx-xxx-xxxx-xxxxxx-xxxxxx-xxxxxxx',309 '040xxx-xxx-xxxx-xxxxxx-xxxxxxx',310 '041xxxx-xxx-xxxx-xxxxxx-xx',311 '042xxx-xxx-xxxx-xxxxxxxxxxx',312 '043xxx-xxx-xxxx-xxxxxxxxxxx-xxxxxxx',313 '044xxx-xxx-xxxx-xxxxxxx-xxx-xxxxxx',314 '045xxx-xxx-xxxx-xxxxxx-xxx-xxxxxx-xxx',315 '046xxx-xxx-xxxx-xxxxxx-xxx-xxxxxx-xxx',316 '047xxx-xxx-xxxx-xxxxxx-xxx-xxxxxx-xxxxxxx',317 '048xxx-xxx-xxxx-xxxxxx-xxx-xxxxxx-xxxxxxxx',318 '049xxx-xxx-xxxx-xxxxxx-xxx-xxxxxx-xxxxxxxxx',319 '050xxx-xxx-xxxxx-xxxxx-xxxxxxx',320 '051xxx-xxx-xxxx-xxxxx-xxxxxxxx-xxxxxx',321 '052xxx-xxx-xxxx-xxxxx-xx',322 '053xxx-xxx-xxxx-xxxx-xxxxxxx-xxx-xxxxxxx',323 '054xxx-xxx-xxxx-xxxx-xxxxxxx-xxx-xxxxxx',324 '055xxx-xxx-xxxx-xxx',325 '056xxx-xxx-xxxx-xxxxxxx-xxxxxxx',326 '057xxx-xxx-xxxx-xxxxxxx-xxx-xxxxxxx',327 '058xxx-xxx-xxxx-xxxxxxxxx-xxxxxx-xxxxxxx',328 '059xxx-xxx-xxxx-xx-xxxxxxxxxxx-xxxxx',329 '060xxx-xxx-xxxx-xxxxxxxxxxxxxx-xxxxxxx',330 '061xxx-xxx-xxxx-xxxxxxxx-xxxxxxx',331 '062xxx-xxx-xxxx-xxxxxxxxxxxxx-xxxxxxx',332 '063xxx-xxx-xxxx-xxxxxx-xxxxxxx',333 '064xxx-xxx-xxxxx-xxxxxx-xxxxxxx',334 '065xxx-xxx-xxxx-xxxxx-xxxxx',335 '066xxx-xxx-xxxx-xxxxx-xxxx',336 '067xxx-xxx-xxxx-xxxxxxxxxxxxxxxxx',337 '068xxx-xxx-xxxx-xxxxxxxx-xxxxx-xxx',338 '069xxx-xxx-xxxx-xxxxxxxx-xx-xxx-xxxxxxxx',339 '070xxx-xxx-xxxx-xxxxxxxx-xxxxxx-xxxxxxx',340 '071xxx-xxx-xxxx-xxxxxxxxxx',341 '072xxx-xxxx-xxxx-xxxxxxxxxxxxxxxx',342 '073xxx-xxx-xxxx-xxxxxx-xxxxxx-xxxxxxx',343 '074xxx-xxx-xxxx-xxxxxxx-xxxxxxxxxxxxx',344 '075xxx-xxx-xxxx-xxxxxxx-xxxxxxxxxxxxx-xxxxxxxxx',345 '076xxx-xxx-xxxx-xxxxxxxxxxxxx-xxxxxxx',346 '077xxx-xxx-xxxx-xxxxxxxxx-xxxxxxx-x2',347 '078xxx-xxx-xxxx-xxx',348 '079xxx-xxx-xxxx-xxxxxxxxxxxx',349 '080xxx-xxx-xxxx-xxxxxxxxx-xxxxxxxx',350 '081xxx-xxx-xxxx-xxxxxxxx-xxxxxxxxx',351 '082xxx-xxx-xxxx-xxxxxxxxx',352 '083xxx-xxx-xxxx-xxxxxxx',353 '084xxx-xxx-xxxx-xxxxxxx-xxxxxx',354 '085xxxx-xxx-xxxxxxx-xxxxx-xxxx',355 '086xxx-xxx-xxxxxxxx-xxxx-xxxxxxxxxx',356 '087xxx-xxx-xxxxxxx-xxxxxx-xxxxxxx',357 '088xxx-xxx-xxxxxxx-xxxxxxxx',358 '089xxx-xxx-xxxxxxxx-xxxxxxx',359 '090xxx-xxx-xxxxxxxx-xxxxxxx-xxxxxx',360 '091xxx-xxxx-xxxxxxxxxx',361 '092xxx-xxx-xxxxxx-xx',362 '093xxx-xxx-xxxxxxx',363 '094xxx-xxx-xxxxxxx-xxxxx',364 '095xxx-xxx-xxxxxxxxxx',365 '096xxx-xxx-xxxxxxxxxxxxxxx',366 '098xxx-xxx-xxxxxxxxxxxxxxxxx',367 '098xxx-xxx-xxxxxxxx-xxxxxxx-xxxxxxx',368 '099xxx-xxx-xxxxxxxx-xx',369 '100xxx-xxx-xxxx-xxxxxxxxxxx-xxxxxxx',370 '101xxx-xxxx-xxxxxxxxxxxxxxxx',371 '102xxx-xxx-xxxxxxxxxxxxxxxxxx',372 '103xxx-xxx-xxxxxxxx-xxxxxxxxxxxx-xxx',373 '104xxx-xxx-xxxx-xxxxxxx',374 '105xxx-xxx-xxx-xxxxxxx-xxxxxx-xxxxxxx',375 '106xxx-xxx-xxx-xxxx-xxxx-xxx-xxxxxxxxx',376 '107xxx-xxx-xxxxxxxxx',377 '108xxx-xxx-xxx-xxxxxxx',378 '109xxx-xxx-xxx-xxxxxxx',379 '110xxx-xxxx-xxxxx',380 '111xxx-xxx-xxx-xxxx-xxxx',381 '112xxx-xxx-xxx-xxxxxxx',382 '113xxx-xxx-xxx-xxxxxxx',383 '114xxx-xxx-xxxxxxxxxxxx-xxxxxxx',384 '115xxx-xxx-xxx-xxxx-xxxx',385 '116xxx-xxx-xxx-xxxxxxxx-xxxxxxxx',386 '117xxx-xxx-xxxxxxx',387 '118xxx-xxx-xxxxxxxx-xxxxxxx',388 '119xxx-xxx-xxxxxx',389 '120xxxx-xxx-xxxxxxxxxx',390 '121xxx-xxx-xxxxxx-xxxxxx-xxxxxxx',391 '122xxx-xxx-xxxxxx-xxxxxxx',392 '123xxx-xxx-xxxxxx-xx',393 '124xxxx-xxx-xxx-xxxx-xxxxxxx',394 '125xxx-xxx-xxxxxxxxxxx',395 '126xxx-xxx-xxxxxxxxxxx-xxxxxxx',396 '127xxx-xxx-xxxxxx-xxx-xxxxxx',397 '128xxx-xxx-xxxxxxxxxx',398 '129xxx-xxx-xxxxxxxxxx-xxx',399 '130xxx-xxx-xxxxx-xxxxxxx',400 '131xxx-xxx-xxxxxx-xxxxxxxx-xxx',401 '132xxx-xxx-xxxxx-xxxxxxxx-xxxxxx',402 '133xxx-xxx-xxxxx-xx',403 '134xxx-xxx-xxxx-xxxxxxx-xxx-xxxxxxx',404 '135xxx-xxx-xxxx-xxxxxxx-xxx-xxxxxx',405 '136xxx-xxx-xxxxxxxxxxxxxxx',406 '137xxx-xxx-xxx',407 '138xxx-xxx-xxxxxxx-xxxxxxx',408 '139xxx-xxx-xxxxxxx-xxx-xxxxxxx',409 '140xxx-xxx-xxxxxxxxx-xxxxxx-xxxxxxx',410 '141xxx-xxx-xxxxxxxxxx-xxxx-xxxxxxx',411 '142xxx-xxx-xx-xxxxxxxxxx-xxxxx',412 '143xxx-xxx-xxxxxxxxxxxxxx-xxxxxxx',413 '144xxx-xxx-xxxxxxxxxxxxxxxxx',414 '145xxx-xxx-xxxxxxxx-xxxxxxx',415 '146xxx-xxx-xxxxxxxxxxxxx-xxxxxxx',416 '147xxx-xxx-xxxxxxx-xxxxxxx',417 '148xxx-xxx-xxxxxx-xxxxxxx',418 '149xxx-xxx-xxxxx-xxxxx',419 '150xxx-xxx-xxxxx-xxxx',420 '151xxx-xxx-xxxxxxxxxxxxxxxxx',421 '152xxx-xxx-xxxxxxxxxxxxxxxxxxx',422 '153xxx-xxx-xxxxxxxxx-xxxxx-xxx',423 '154xxx-xxx-xxxxxxxx-xxxxx-xxxx-xxxx',424 '155xxx-xxx-xxxxxxxx-xxxxxxxxxxxx-xxxx',425 '156xxx-xxx-xxxxxxxx-xx-xxx-xxxxxxxx',426 '157xxx-xxx-xxxxxxxx-xxxxxx-xxxxxxx',427 '158xxx-xxx-xxxxxxxxxx',428 '159xxx-xxx-xxxx-xxxxxx',429 '160xxx-xxx-xxxxxxxxxx',430 '161xxx-xxx-xxxxxxxxxxxxx',431 '162xxx-xxx-xxxxxxxxxxxxxxxx',432 '163xxx-xxx-xxxxx-xxxxxx-xxxxxxx',433 '164xxx-xxx-xxxxxxx-xxxxxxxxxxxxx',434 '165xxx-xxx-xxxxxxxxxxxxxx-xxxxxxx',435 '166xxx-xxx-xxxxxxxxx-xxxxxxx-x2',436 '167xxx-xxx-xxx',437 '168xxx-xxx-xxxxxxxxxxxx',438 '169xxx-xxx-xxxxxxxxx-xxxxxxxx',439 '170xxx-xxx-xxxxxxxxx-xxx-xxxxxxx',440 '171xxx-xxx-xxxxxxxxx',441 '172xxx-xxxx-xxxxxxxxx',442 '173xxx-xxx',443 '174xxx-xxxxxx-xxxxxxx',444 '175xxx-xxxxxx-xxxxxx-xxxx',445 '176xxx-xxxxxx-xxxxx',446 '177xxx-xxxxx-xxxxxxxx',447 '178xxx-xxxxxx',448 '179xxx-xxxxxxx-xxxx',449 '180xxx-xxxxxxx-xxxx-xxxx',450 '181xxx-xxxxxxx-xxxx-xxxxxxx',451 '182xxx-xxxxxxx-xxxx-xxxxxxxxxxxxxxx',452 '183xxx-xxxxxxxx-xxxx-xxxxx',453 '184xxx-xxxxxxx-xxxx-xxxxxxx',454 '185xxx-xxxxxxx-xxxx-xxxxxxxx-xxxxxxx',455 '186xxx-xxxxxxx-xxxx-xxx',456 '187xxx-xxxxxxx-xxxx-xxxxxxx-xxx-xxxxxxx',457 '188xxx-xxxxxxx-xxxx-xxxxxxxxxxxxxx-xxxxxxx',458 '189xxx-xxxxxxxx-xxxx-xxxxxxxxxxxxxxxxx',459 '190xxx-xxxxxxx-xxxx-xxxxx-xxxxxx-xxxxxxx',460 '191xxx-xxxxxxx-xxxxxxxxxx',461 '192xxx-xxxxxxx-xxxxxxx',462 '193xxx-xxxxxxx-xxxxxxxxxxxxxxx',463 '194xxx-xxxxxxx-xxxxx',464 '195xxx-xxxxxxx-xxxxxxx',465 '196xxx-xxxxxxx-xxxxxxxx-xxxxxxx',466 '197xxx-xxxxxxx-xxx',467 '198xxx-xxxxxxx-xxxxxxx-xxx-xxxxxxx',468 '199xxx-xxxxxxx-xxxxxxxxxxxxxx-xxxxxxx',469 '200xxx-xxxxxxxx-xxxxxxxxxxxxxxxxx',470 '201xxx-xxxxxxx-xxxxx-xxxxxx-xxxxxxx',471 '202xxx-xxx',472 '203xxx-xxx-xxxxxx',473 '204xxxxxxxxx-xxx',474 '205xxxxxxxxxxx-xxx',475 '206xxxxxxxxx-xxxxxxx',476 '207xxxx-xxxxxx-xxxxxxxxxxx-xxxxx1',477 '208xxxx-xxxxxxxx-xxxxxxxx-xxxxx1',478 '209xxxx-xxxxxxx-xxxxxxx-xxxxx1',479 '209xxxx-xxxxxxx-xxxxxxx-xxxxx2',480 '210xxxx-xxxx-xxxxxxx-xxxxx1',481 '211xxxx-xxxxx-xxxxxxxx1-xxxxx1',482 '212xxxx-xxxx-xxxxxxxx2-xxxxx1',483 '213xxxx-xxxx-xxxxxxx1-xxxxx1',484 '214xxxx-xxxx-xxxxxxx2-xxxxx1',485 '215xxxxxxxxx-xxxxxx',486 '216xxxxxxxxx-xxxxxxx',487 '217xxxxxxxxx-xxxx',488];489490{491 'yyyyyyyyy': {492 local Func3(z, n) = utils.Func3('yyyyyyyyy', z, n),493494 global: {495 [n]: {496 members: [497 Func3(z, '%s-gggg-%s-%s' % [n, z, suffix]),498 for z in ['ooooooo-a', 'ooooooo-b', 'ooooooo-c',499 'ooooooo-a', 'ooooooo-b', 'ooooooo-c']500 for suffix in ['a', 'b', 'c']501 ],502 }503 for n in long_list504 },505 },506}507508----509====510511[cols="<,>,>,>,>"]512|===513| Command 514| Mean [ms] 515| Min [ms] 516| Max [ms] 517| Relative 518519| `Rust (current)` 520| 6.0 ± 0.4 521| 5.5 522| 8.3 523| 1.01 ± 0.08 524525| `Rust (current-experimental)` 526| 5.9 ± 0.3 527| 5.4 528| 7.3 529| 1.00 530531| `Rust (release)` 532| 6.7 ± 0.3 533| 6.2 534| 7.9 535| 1.13 ± 0.08 536537| `Rust (alternative, rsjsonnet)` 538| 8.1 ± 0.6 539| 7.3 540| 10.2 541| 1.37 ± 0.13 542543| `Scala (native)` 544| 13.1 ± 1.1 545| 10.5 546| 16.8 547| 2.22 ± 0.23 548549| `Scala (GraalVM)` 550| 14.1 ± 0.8 551| 11.9 552| 16.1 553| 2.39 ± 0.19 554|===555556=== Realistic 2557558> Note: No results for Go, slow benchmark, but only quick requested559560> Note: No results for C++, too slow, takes hours, skews results561562.Source563[%collapsible]564====565[source,jsonnet]566----567local rfc3339(timestamp) = '1970-01-01T00:00:00Z';568569local name1(a, b, c) =570 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%sBBBBBBB%sCCCCCCCCCCC%s'571 % [a, b, c];572573local name2(x) =574 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX%s' % x;575576local T1 = 'PPPPPPPPPPPPPPPPPPPPPPP';577local T2 = 'QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ';578579local LOCATIONS = [580 'europe-west1-b',581 'europe-west1-c',582 'europe-west1-d',583 'europe-west2-a',584 'europe-west2-b',585 'europe-west2-c',586 'europe-west3-a',587 'europe-west3-b',588 'europe-west3-c',589 'europe-west4-a',590 'europe-west4-b',591 'europe-west4-c',592 'us-central1-a',593 'us-central1-b',594 'us-central1-c',595 'us-central1-f',596 'us-east1-b',597 'us-east1-c',598 'us-east1-d',599 'us-east4-a',600 'us-east4-b',601 'us-east4-c',602 'us-west1-a',603 'us-west1-b',604 'us-west1-c',605];606607608609function(610 timestamp=0,611 x='xxxxxxxxxxxxxxxxxxx',612 prefix='prefix',613 num1=50,614 count=25,615 offset=0,616)617 local rfc_timestamp = rfc3339(timestamp);618619 local func1(i) =620 local location = LOCATIONS[i % std.length(LOCATIONS)];621 [622 local name = '%s-%000d-%000d' % [prefix, i, j];623 {624 field_zz1: rfc_timestamp,625 fie_z2: {626 field_z3: name1(x, location, name),627 field_zzzzzzzzzz4: name2(x),628 field_zzz5: [name],629 field_z6: T1,630 field_z7: location,631 fi_8: '???',632 fiel_z9: '99',633 },634 }635 for j in std.range(0, num1 - 1)636 ];637638 local func2(i) =639 local location = LOCATIONS[i % std.length(LOCATIONS)];640 local all = [641 name1(x, location, '%s-%000d-%000d' % [prefix, i, j])642 for j in std.range(0, num1 - 1)643 ];644 [645 {646 field_yy1: rfc_timestamp,647 field_yyyyy2: 'EEEE',648 field_yyyyy3: {649 field_y4: T2,650 field_yyyyyyy5: p,651 field_yyyyyyy6: q,652 },653 }654 for p in all655 for q in all656 if p != q657 ];658659660 {661 field_x1: '-----',662 field_xxxxxxxxxxxxxxxx2: std.join([], [663 func1(offset * count + i)664 for i in std.range(0, count - 1)665 ]),666 field_xxxxxxxxxxxxxxxxxxxxxx3: std.join([], [667 func2(offset * count + i)668 for i in std.range(0, count - 1)669 ]),670 }671672673----674====675676[cols="<,>,>,>,>"]677|===678| Command 679| Mean [ms] 680| Min [ms] 681| Max [ms] 682| Relative 683684| `Rust (current)` 685| 218.8 ± 13.7 686| 201.0 687| 255.5 688| 1.35 ± 0.10 689690| `Rust (current-experimental)` 691| 221.2 ± 11.0 692| 209.1 693| 250.3 694| 1.36 ± 0.08 695696| `Rust (release)` 697| 162.5 ± 5.7 698| 154.4 699| 177.0 700| 1.00 701702| `Rust (alternative, rsjsonnet)` 703| 174.4 ± 6.2 704| 164.3 705| 186.2 706| 1.07 ± 0.05 707708| `Scala (native)` 709| 447.7 ± 17.4 710| 426.0 711| 485.3 712| 2.76 ± 0.14 713714| `Scala (GraalVM)` 715| 441.3 ± 16.4 716| 420.3 717| 479.1 718| 2.72 ± 0.14 719|===720721== Benchmarks from C++ jsonnet (/benchmarks)722723=== Tail call724725.Source726[%collapsible]727====728[source,jsonnet]729----730731732733734735736737738739740741742743744745746local sum(x) =747 if x == 0 then748 0749 else750 x + sum(x - 1);751sum(300)752753----754====755756[cols="<,>,>,>,>"]757|===758| Command 759| Mean [µs] 760| Min [µs] 761| Max [µs] 762| Relative 763764| `Rust (current)` 765| 891.3 ± 111.4 766| 727.6 767| 2682.4 768| 1.03 ± 0.20 769770| `Rust (current-experimental)` 771| 862.8 ± 124.7 772| 715.8 773| 1826.4 774| 1.00 775776| `Rust (release)` 777| 935.0 ± 97.7 778| 769.7 779| 1796.3 780| 1.08 ± 0.19 781782| `Rust (alternative, rsjsonnet)` 783| 1242.7 ± 160.8 784| 1032.2 785| 3444.5 786| 1.44 ± 0.28 787788| `Go` 789| 2720.3 ± 292.6 790| 2099.6 791| 4398.7 792| 3.15 ± 0.57 793794| `Scala (native)` 795| 2537.5 ± 389.6 796| 2051.2 797| 4220.6 798| 2.94 ± 0.62 799800| `Scala (GraalVM)` 801| 1733.0 ± 257.4 802| 1385.8 803| 3193.2 804| 2.01 ± 0.42 805806| `C++` 807| 19697.0 ± 1508.1 808| 17390.4 809| 25383.2 810| 22.83 ± 3.73 811|===812813=== Inheritance recursion814815> Note: No results for Go, slow benchmark, but only quick requested816817> Note: No results for C++, slow benchmark, but only quick requested818819.Source820[%collapsible]821====822[source,jsonnet]823----824825826827828829830831832833834835836837838839840local Fib = {841 n: 1,842 local outer = self,843 r: if self.n <= 1 then 1 else (Fib { n: outer.n - 1 }).r + (Fib { n: outer.n - 2 }).r,844};845846(Fib { n: 25 }).r847848----849====850851[cols="<,>,>,>,>"]852|===853| Command 854| Mean [ms] 855| Min [ms] 856| Max [ms] 857| Relative 858859| `Rust (current)` 860| 192.1 ± 6.2 861| 180.6 862| 204.7 863| 3.88 ± 0.17 864865| `Rust (current-experimental)` 866| 197.1 ± 8.0 867| 183.2 868| 212.7 869| 3.98 ± 0.20 870871| `Rust (release)` 872| 249.4 ± 10.5 873| 227.2 874| 270.4 875| 5.04 ± 0.26 876877| `Rust (alternative, rsjsonnet)` 878| 118.1 ± 1.8 879| 115.9 880| 124.3 881| 2.39 ± 0.08 882883| `Scala (native)` 884| 49.5 ± 1.5 885| 47.4 886| 55.5 887| 1.00 888889| `Scala (GraalVM)` 890| 62.6 ± 2.1 891| 58.8 892| 68.5 893| 1.27 ± 0.06 894|===895896=== Simple recursive call897898> Note: No results for Go, slow benchmark, but only quick requested899900.Source901[%collapsible]902====903[source,jsonnet]904----905906907908909910911912913914915916917918919920921local fibonacci(n) =922 if n <= 1 then923 1924 else925 fibonacci(n - 1) + fibonacci(n - 2);926927fibonacci(25)928929----930====931932[cols="<,>,>,>,>"]933|===934| Command 935| Mean [ms] 936| Min [ms] 937| Max [ms] 938| Relative 939940| `Rust (current)` 941| 34.5 ± 0.6 942| 33.3 943| 36.0 944| 1.81 ± 0.07 945946| `Rust (current-experimental)` 947| 32.8 ± 0.7 948| 31.7 949| 35.0 950| 1.73 ± 0.07 951952| `Rust (release)` 953| 42.8 ± 0.8 954| 41.8 955| 45.2 956| 2.25 ± 0.08 957958| `Rust (alternative, rsjsonnet)` 959| 40.5 ± 1.2 960| 38.9 961| 44.6 962| 2.13 ± 0.09 963964| `Scala (native)` 965| 19.0 ± 0.6 966| 17.6 967| 20.4 968| 1.00 969970| `Scala (GraalVM)` 971| 33.5 ± 10.1 972| 22.8 973| 54.3 974| 1.76 ± 0.54 975976| `C++` 977| 149.7 ± 27.2 978| 82.8 979| 175.4 980| 7.87 ± 1.45 981|===982983=== Foldl string concat984985> Note: No results for C++, slow benchmark, but only quick requested986987.Source988[%collapsible]989====990[source,jsonnet]991----992std.foldl(function(e, res) e + res, std.makeArray(20000, function(i) 'aaaaa'), '')993994----995====996997[cols="<,>,>,>,>"]998|===999| Command 1000| Mean [ms] 1001| Min [ms] 1002| Max [ms] 1003| Relative 10041005| `Rust (current)` 1006| 7.2 ± 1.6 1007| 4.2 1008| 14.4 1009| 1.00 10101011| `Rust (current-experimental)` 1012| 7.8 ± 1.5 1013| 4.4 1014| 12.4 1015| 1.08 ± 0.32 10161017| `Rust (release)` 1018| 9.0 ± 1.4 1019| 5.1 1020| 12.9 1021| 1.25 ± 0.34 10221023| `Rust (alternative, rsjsonnet)` 1024| 110.1 ± 13.4 1025| 96.0 1026| 143.0 1027| 15.29 ± 3.90 10281029| `Go` 1030| 4386.8 ± 587.0 1031| 3827.3 1032| 5908.8 1033| 609.22 ± 158.87 10341035| `Scala (native)` 1036| 438.7 ± 50.8 1037| 334.9 1038| 553.4 1039| 60.92 ± 15.35 10401041| `Scala (GraalVM)` 1042| 572.3 ± 59.1 1043| 485.1 1044| 737.3 1045| 79.48 ± 19.59 1046|===10471048=== Array sorts10491050> Note: No results for C++, slow benchmark, but only quick requested10511052.Source1053[%collapsible]1054====1055[source,jsonnet]1056----105710581059local reverse = std.reverse;1060local sort = std.sort;10611062true1063&& std.assertEqual(std.range(1, 500), sort(std.range(1, 500)))1064&& std.assertEqual(std.range(1, 1000), sort(std.range(1, 1000)))1065&& std.assertEqual(reverse(std.range(1, 1000)), sort(std.range(1, 1000), keyF=function(x) -x))1066&& std.assertEqual(std.range(1, 1000), sort(reverse(std.range(1, 1000))))1067&& std.assertEqual(std.makeArray(2000, function(i) std.floor((i + 2) / 2)), sort(std.range(1, 1000) + reverse(std.range(1, 1000))))10681069----1070====10711072[cols="<,>,>,>,>"]1073|===1074| Command 1075| Mean [ms] 1076| Min [ms] 1077| Max [ms] 1078| Relative 10791080| `Rust (current)` 1081| 1.6 ± 0.3 1082| 1.4 1083| 3.9 1084| 1.02 ± 0.23 10851086| `Rust (current-experimental)` 1087| 1.6 ± 0.3 1088| 1.3 1089| 3.8 1090| 1.00 10911092| `Rust (release)` 1093| 1.7 ± 0.3 1094| 1.4 1095| 4.1 1096| 1.08 ± 0.24 10971098| `Rust (alternative, rsjsonnet)` 1099| 3.6 ± 0.4 1100| 3.2 1101| 5.9 1102| 2.32 ± 0.45 11031104| `Go` 1105| 6.0 ± 0.7 1106| 5.2 1107| 12.1 1108| 3.82 ± 0.78 11091110| `Scala (native)` 1111| 4.5 ± 0.7 1112| 3.6 1113| 7.0 1114| 2.88 ± 0.63 11151116| `Scala (GraalVM)` 1117| 3.1 ± 0.5 1118| 2.4 1119| 6.7 1120| 1.95 ± 0.47 1121|===11221123=== Lazy array11241125> Note: No results for Go, slow benchmark, but only quick requested11261127.Source1128[%collapsible]1129====1130[source,jsonnet]1131----1132local f2(f) = function(x) f(f(x));1133local id(x) = x;11341135local slowId = std.makeArray(20, function(i) if i == 0 then id else f2(slowId[i - 1]));11361137slowId[15](42)11381139----1140====11411142[cols="<,>,>,>,>"]1143|===1144| Command 1145| Mean [ms] 1146| Min [ms] 1147| Max [ms] 1148| Relative 11491150| `Rust (current)` 1151| 23.8 ± 2.3 1152| 16.5 1153| 29.2 1154| 2.07 ± 0.28 11551156| `Rust (current-experimental)` 1157| 21.2 ± 2.4 1158| 14.4 1159| 27.0 1160| 1.84 ± 0.27 11611162| `Rust (release)` 1163| 48.1 ± 3.6 1164| 41.5 1165| 57.3 1166| 4.18 ± 0.50 11671168| `Rust (alternative, rsjsonnet)` 1169| 11.5 ± 1.1 1170| 9.8 1171| 15.0 1172| 1.00 11731174| `Scala (native)` 1175| 27.2 ± 3.8 1176| 21.2 1177| 39.1 1178| 2.36 ± 0.40 11791180| `Scala (GraalVM)` 1181| 25.7 ± 3.4 1182| 18.7 1183| 35.2 1184| 2.23 ± 0.36 11851186| `C++` 1187| 137.1 ± 11.6 1188| 122.3 1189| 178.7 1190| 11.91 ± 1.50 1191|===11921193=== Inheritance function recursion11941195> Note: No results for C++, slow benchmark, but only quick requested11961197.Source1198[%collapsible]1199====1200[source,jsonnet]1201----1202local fibnext = {1203 a: super.a + super.b,1204 b: super.a,1205};1206local fib(n) =1207 if n == 0 then1208 { a: 1, b: 1 }1209 else1210 fib(n - 1) + fibnext;12111212fib(25)12131214----1215====12161217[cols="<,>,>,>,>"]1218|===1219| Command 1220| Mean [µs] 1221| Min [µs] 1222| Max [µs] 1223| Relative 12241225| `Rust (current)` 1226| 853.7 ± 218.7 1227| 633.9 1228| 3225.6 1229| 1.04 ± 0.37 12301231| `Rust (current-experimental)` 1232| 840.1 ± 248.6 1233| 641.3 1234| 3157.4 1235| 1.02 ± 0.40 12361237| `Rust (release)` 1238| 821.1 ± 205.5 1239| 652.4 1240| 2766.4 1241| 1.00 12421243| `Rust (alternative, rsjsonnet)` 1244| 1490.8 ± 380.8 1245| 1037.0 1246| 3584.4 1247| 1.82 ± 0.65 12481249| `Go` 1250| 1538.2 ± 350.0 1251| 1237.3 1252| 4011.9 1253| 1.87 ± 0.63 12541255| `Scala (native)` 1256| 3067.2 ± 561.2 1257| 2169.7 1258| 5725.8 1259| 3.74 ± 1.16 12601261| `Scala (GraalVM)` 1262| 1995.8 ± 475.6 1263| 1436.2 1264| 5992.0 1265| 2.43 ± 0.84 1266|===12671268=== String strips12691270> Note: No results for C++, too slow, takes hours, skews results12711272.Source1273[%collapsible]1274====1275[source,jsonnet]1276----12771278local veryLongString = std.join('', std.repeat(['e'], 510));12791280std.assertEqual(std.stripChars(veryLongString + 'ok' + veryLongString, 'e'), 'ok') &&1281std.assertEqual(std.lstripChars(veryLongString + 'ok', 'e'), 'ok') &&1282std.assertEqual(std.rstripChars('ok' + veryLongString, 'e'), 'ok') &&12831284true12851286----1287====12881289[cols="<,>,>,>,>"]1290|===1291| Command 1292| Mean [µs] 1293| Min [µs] 1294| Max [µs] 1295| Relative 12961297| `Rust (current)` 1298| 818.6 ± 195.1 1299| 631.5 1300| 3139.1 1301| 1.00 13021303| `Rust (current-experimental)` 1304| 881.6 ± 266.1 1305| 638.7 1306| 3228.6 1307| 1.08 ± 0.41 13081309| `Rust (release)` 1310| 6745.2 ± 1361.0 1311| 5310.4 1312| 10538.1 1313| 8.24 ± 2.57 13141315| `Rust (alternative, rsjsonnet)` 1316| 1642.3 ± 431.3 1317| 1148.4 1318| 4036.4 1319| 2.01 ± 0.71 13201321| `Go` 1322| 9171.4 ± 1488.9 1323| 5882.7 1324| 13881.3 1325| 11.20 ± 3.23 13261327| `Scala (native)` 1328| 3513.3 ± 909.0 1329| 2382.5 1330| 6258.2 1331| 4.29 ± 1.51 13321333| `Scala (GraalVM)` 1334| 2989.2 ± 788.2 1335| 1705.8 1336| 6001.7 1337| 3.65 ± 1.30 1338|===13391340=== Big object13411342.Source1343[%collapsible]1344====1345[source,jsonnet]1346----13471348local n = 2000;13491350local objLocal(name, body) = 'local ' + name + ' = ' + body + ',';1351local objField(name, body) = name + ': ' + body + ',';13521353local allLocals =1354 std.makeArray(n, function(i) objLocal('l' + i, '1'));13551356local allFields =1357 std.makeArray(n, function(i) objField('f' + i, '2'));13581359local indent = ' ';1360local indentAndSeparate(s) = indent + s + '\n';13611362local objContents = std.map(indentAndSeparate, allLocals + allFields);13631364local objectBody = std.join('', objContents);1365'{\n' + objectBody + '}\n'13661367----1368====13691370[cols="<,>,>,>,>"]1371|===1372| Command 1373| Mean [ms] 1374| Min [ms] 1375| Max [ms] 1376| Relative 13771378| `Rust (current)` 1379| 1.2 ± 0.3 1380| 0.8 1381| 3.2 1382| 1.03 ± 0.38 13831384| `Rust (current-experimental)` 1385| 1.2 ± 0.3 1386| 0.8 1387| 3.4 1388| 1.00 13891390| `Rust (release)` 1391| 1.3 ± 0.3 1392| 0.9 1393| 4.0 1394| 1.12 ± 0.41 13951396| `Rust (alternative, rsjsonnet)` 1397| 1.5 ± 0.3 1398| 1.2 1399| 4.3 1400| 1.28 ± 0.41 14011402| `Go` 1403| 2.9 ± 0.3 1404| 2.4 1405| 5.1 1406| 2.49 ± 0.71 14071408| `Scala (native)` 1409| 4.7 ± 0.5 1410| 3.5 1411| 6.9 1412| 4.10 ± 1.15 14131414| `Scala (GraalVM)` 1415| 3.6 ± 0.4 1416| 2.8 1417| 6.0 1418| 3.10 ± 0.88 14191420| `C++` 1421| 18.9 ± 1.6 1422| 16.7 1423| 25.9 1424| 16.41 ± 4.49 1425|===14261427== Benchmarks from Go jsonnet (builtins)14281429=== std.base6414301431> Note: No results for Rust (alternative), slow benchmark, but only quick requested14321433> Note: No results for C++, too slow, takes hours, skews results14341435.Source1436[%collapsible]1437====1438[source,jsonnet]1439----1440{1441 foo: [1442 std.base64("Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Sed turpis tincidunt id aliquet risus. Eget mauris pharetra et ultrices neque ornare aenean euismod. Diam quis enim lobortis scelerisque fermentum. Varius duis at consectetur lorem donec massa sapien. Diam sit amet nisl suscipit adipiscing bibendum est ultricies integer. Lectus urna duis convallis convallis tellus. Nibh ipsum consequat nisl vel pretium lectus quam id leo. Feugiat in ante metus dictum at tempor commodo. Velit dignissim sodales ut eu sem integer. Dictum sit amet justo donec. Scelerisque mauris pellentesque pulvinar pellentesque habitant morbi tristique senectus. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Sed turpis tincidunt id aliquet risus. Eget mauris pharetra et ultrices neque ornare aenean euismod. Diam quis enim lobortis scelerisque fermentum. Varius duis at consectetur lorem donec massa sapien. Diam sit amet nisl suscipit adipiscing bibendum est ultricies integer. Lectus urna duis convallis convallis tellus. Nibh ipsum consequat nisl vel pretium lectus quam id leo. Feugiat in ante metus dictum at tempor commodo. Velit dignissim sodales ut eu sem integer. Dictum sit amet justo donec. Scelerisque mauris pellentesque pulvinar pellentesque habitant morbi tristique senectus. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Sed turpis tincidunt id aliquet risus. Eget mauris pharetra et ultrices neque ornare aenean euismod. Diam quis enim lobortis scelerisque fermentum. Varius duis at consectetur lorem donec massa sapien. Diam sit amet nisl suscipit adipiscing bibendum est ultricies integer. Lectus urna duis convallis convallis tellus. Nibh ipsum consequat nisl vel pretium lectus quam id leo. Feugiat in ante metus dictum at tempor commodo. Velit dignissim sodales ut eu sem integer. Dictum sit amet justo donec. Scelerisque mauris pellentesque pulvinar pellentesque habitant morbi tristique senectus.Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Sed turpis tincidunt id aliquet risus. Eget mauris pharetra et ultrices neque ornare aenean euismod. Diam quis enim lobortis scelerisque fermentum. Varius duis at consectetur lorem donec massa sapien. Diam sit amet nisl suscipit adipiscing bibendum est ultricies integer. Lectus urna duis convallis convallis tellus. Nibh ipsum consequat nisl vel pretium lectus quam id leo. Feugiat in ante metus dictum at tempor commodo. Velit dignissim sodales ut eu sem integer. Dictum sit amet justo donec. Scelerisque mauris pellentesque pulvinar pellentesque habitant morbi tristique senectus. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Sed turpis tincidunt id aliquet risus. Eget mauris pharetra et ultrices neque ornare aenean euismod. Diam quis enim lobortis scelerisque fermentum. Varius duis at consectetur lorem donec massa sapien. Diam sit amet nisl suscipit adipiscing bibendum est ultricies integer. Lectus urna duis convallis convallis tellus. Nibh ipsum consequat nisl vel pretium lectus quam id leo. Feugiat in ante metus dictum at tempor commodo. Velit dignissim sodales ut eu sem integer. Dictum sit amet justo donec. Scelerisque mauris pellentesque pulvinar pellentesque habitant morbi tristique senectus. Scelerisque mauris pellentesque pulvinar pellentesque habitant morbi tristique senectus. Scelerisque mauris pellentesque pulvinar pellentesque habitant morbi tristique senectus. Scelerisque mauris pellentesque pulvinar pellentesque habitant morbi tristique senectus. Scelerisque mauris pellentesque pulvinar pellentesque habitant morbi tristique senectus. Scelerisque mauris pellentesque pulvinar pellentesque habitant morbi tristique senectus.") for i in std.range(0,100)1443 ],1444}1445----1446====14471448[cols="<,>,>,>,>"]1449|===1450| Command 1451| Mean [ms] 1452| Min [ms] 1453| Max [ms] 1454| Relative 14551456| `Rust (current)` 1457| 1.8 ± 0.4 1458| 1.2 1459| 5.3 1460| 1.01 ± 0.41 14611462| `Rust (current-experimental)` 1463| 1.8 ± 0.6 1464| 1.2 1465| 5.1 1466| 1.00 14671468| `Rust (release)` 1469| 2.1 ± 0.7 1470| 1.3 1471| 6.0 1472| 1.18 ± 0.56 14731474| `Go` 1475| 9.2 ± 0.8 1476| 7.9 1477| 13.5 1478| 5.26 ± 1.78 14791480| `Scala (native)` 1481| 6.0 ± 1.0 1482| 4.4 1483| 10.5 1484| 3.39 ± 1.25 14851486| `Scala (GraalVM)` 1487| 3.9 ± 0.7 1488| 2.9 1489| 7.9 1490| 2.22 ± 0.84 1491|===14921493=== std.base64Decode14941495> Note: No results for Rust (alternative), slow benchmark, but only quick requested14961497> Note: No results for C++, slow benchmark, but only quick requested14981499.Source1500[%collapsible]1501====1502[source,jsonnet]1503----1504{1505 foo: [1506 std.base64Decode("TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdCwgc2VkIGRvIGVpdXNtb2QgdGVtcG9yIGluY2lkaWR1bnQgdXQgbGFib3JlIGV0IGRvbG9yZSBtYWduYSBhbGlxdWEuIFNlZCB0dXJwaXMgdGluY2lkdW50IGlkIGFsaXF1ZXQgcmlzdXMuIEVnZXQgbWF1cmlzIHBoYXJldHJhIGV0IHVsdHJpY2VzIG5lcXVlIG9ybmFyZSBhZW5lYW4gZXVpc21vZC4gRGlhbSBxdWlzIGVuaW0gbG9ib3J0aXMgc2NlbGVyaXNxdWUgZmVybWVudHVtLiBWYXJpdXMgZHVpcyBhdCBjb25zZWN0ZXR1ciBsb3JlbSBkb25lYyBtYXNzYSBzYXBpZW4uIERpYW0gc2l0IGFtZXQgbmlzbCBzdXNjaXBpdCBhZGlwaXNjaW5nIGJpYmVuZHVtIGVzdCB1bHRyaWNpZXMgaW50ZWdlci4gTGVjdHVzIHVybmEgZHVpcyBjb252YWxsaXMgY29udmFsbGlzIHRlbGx1cy4gTmliaCBpcHN1bSBjb25zZXF1YXQgbmlzbCB2ZWwgcHJldGl1bSBsZWN0dXMgcXVhbSBpZCBsZW8uIEZldWdpYXQgaW4gYW50ZSBtZXR1cyBkaWN0dW0gYXQgdGVtcG9yIGNvbW1vZG8uIFZlbGl0IGRpZ25pc3NpbSBzb2RhbGVzIHV0IGV1IHNlbSBpbnRlZ2VyLiBEaWN0dW0gc2l0IGFtZXQganVzdG8gZG9uZWMuIFNjZWxlcmlzcXVlIG1hdXJpcyBwZWxsZW50ZXNxdWUgcHVsdmluYXIgcGVsbGVudGVzcXVlIGhhYml0YW50IG1vcmJpIHRyaXN0aXF1ZSBzZW5lY3R1cy4gTG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdCwgc2VkIGRvIGVpdXNtb2QgdGVtcG9yIGluY2lkaWR1bnQgdXQgbGFib3JlIGV0IGRvbG9yZSBtYWduYSBhbGlxdWEuIFNlZCB0dXJwaXMgdGluY2lkdW50IGlkIGFsaXF1ZXQgcmlzdXMuIEVnZXQgbWF1cmlzIHBoYXJldHJhIGV0IHVsdHJpY2VzIG5lcXVlIG9ybmFyZSBhZW5lYW4gZXVpc21vZC4gRGlhbSBxdWlzIGVuaW0gbG9ib3J0aXMgc2NlbGVyaXNxdWUgZmVybWVudHVtLiBWYXJpdXMgZHVpcyBhdCBjb25zZWN0ZXR1ciBsb3JlbSBkb25lYyBtYXNzYSBzYXBpZW4uIERpYW0gc2l0IGFtZXQgbmlzbCBzdXNjaXBpdCBhZGlwaXNjaW5nIGJpYmVuZHVtIGVzdCB1bHRyaWNpZXMgaW50ZWdlci4gTGVjdHVzIHVybmEgZHVpcyBjb252YWxsaXMgY29udmFsbGlzIHRlbGx1cy4gTmliaCBpcHN1bSBjb25zZXF1YXQgbmlzbCB2ZWwgcHJldGl1bSBsZWN0dXMgcXVhbSBpZCBsZW8uIEZldWdpYXQgaW4gYW50ZSBtZXR1cyBkaWN0dW0gYXQgdGVtcG9yIGNvbW1vZG8uIFZlbGl0IGRpZ25pc3NpbSBzb2RhbGVzIHV0IGV1IHNlbSBpbnRlZ2VyLiBEaWN0dW0gc2l0IGFtZXQganVzdG8gZG9uZWMuIFNjZWxlcmlzcXVlIG1hdXJpcyBwZWxsZW50ZXNxdWUgcHVsdmluYXIgcGVsbGVudGVzcXVlIGhhYml0YW50IG1vcmJpIHRyaXN0aXF1ZSBzZW5lY3R1cy4gTG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdCwgc2VkIGRvIGVpdXNtb2QgdGVtcG9yIGluY2lkaWR1bnQgdXQgbGFib3JlIGV0IGRvbG9yZSBtYWduYSBhbGlxdWEuIFNlZCB0dXJwaXMgdGluY2lkdW50IGlkIGFsaXF1ZXQgcmlzdXMuIEVnZXQgbWF1cmlzIHBoYXJldHJhIGV0IHVsdHJpY2VzIG5lcXVlIG9ybmFyZSBhZW5lYW4gZXVpc21vZC4gRGlhbSBxdWlzIGVuaW0gbG9ib3J0aXMgc2NlbGVyaXNxdWUgZmVybWVudHVtLiBWYXJpdXMgZHVpcyBhdCBjb25zZWN0ZXR1ciBsb3JlbSBkb25lYyBtYXNzYSBzYXBpZW4uIERpYW0gc2l0IGFtZXQgbmlzbCBzdXNjaXBpdCBhZGlwaXNjaW5nIGJpYmVuZHVtIGVzdCB1bHRyaWNpZXMgaW50ZWdlci4gTGVjdHVzIHVybmEgZHVpcyBjb252YWxsaXMgY29udmFsbGlzIHRlbGx1cy4gTmliaCBpcHN1bSBjb25zZXF1YXQgbmlzbCB2ZWwgcHJldGl1bSBsZWN0dXMgcXVhbSBpZCBsZW8uIEZldWdpYXQgaW4gYW50ZSBtZXR1cyBkaWN0dW0gYXQgdGVtcG9yIGNvbW1vZG8uIFZlbGl0IGRpZ25pc3NpbSBzb2RhbGVzIHV0IGV1IHNlbSBpbnRlZ2VyLiBEaWN0dW0gc2l0IGFtZXQganVzdG8gZG9uZWMuIFNjZWxlcmlzcXVlIG1hdXJpcyBwZWxsZW50ZXNxdWUgcHVsdmluYXIgcGVsbGVudGVzcXVlIGhhYml0YW50IG1vcmJpIHRyaXN0aXF1ZSBzZW5lY3R1cy5Mb3JlbSBpcHN1bSBkb2xvciBzaXQgYW1ldCwgY29uc2VjdGV0dXIgYWRpcGlzY2luZyBlbGl0LCBzZWQgZG8gZWl1c21vZCB0ZW1wb3IgaW5jaWRpZHVudCB1dCBsYWJvcmUgZXQgZG9sb3JlIG1hZ25hIGFsaXF1YS4gU2VkIHR1cnBpcyB0aW5jaWR1bnQgaWQgYWxpcXVldCByaXN1cy4gRWdldCBtYXVyaXMgcGhhcmV0cmEgZXQgdWx0cmljZXMgbmVxdWUgb3JuYXJlIGFlbmVhbiBldWlzbW9kLiBEaWFtIHF1aXMgZW5pbSBsb2JvcnRpcyBzY2VsZXJpc3F1ZSBmZXJtZW50dW0uIFZhcml1cyBkdWlzIGF0IGNvbnNlY3RldHVyIGxvcmVtIGRvbmVjIG1hc3NhIHNhcGllbi4gRGlhbSBzaXQgYW1ldCBuaXNsIHN1c2NpcGl0IGFkaXBpc2NpbmcgYmliZW5kdW0gZXN0IHVsdHJpY2llcyBpbnRlZ2VyLiBMZWN0dXMgdXJuYSBkdWlzIGNvbnZhbGxpcyBjb252YWxsaXMgdGVsbHVzLiBOaWJoIGlwc3VtIGNvbnNlcXVhdCBuaXNsIHZlbCBwcmV0aXVtIGxlY3R1cyBxdWFtIGlkIGxlby4gRmV1Z2lhdCBpbiBhbnRlIG1ldHVzIGRpY3R1bSBhdCB0ZW1wb3IgY29tbW9kby4gVmVsaXQgZGlnbmlzc2ltIHNvZGFsZXMgdXQgZXUgc2VtIGludGVnZXIuIERpY3R1bSBzaXQgYW1ldCBqdXN0byBkb25lYy4gU2NlbGVyaXNxdWUgbWF1cmlzIHBlbGxlbnRlc3F1ZSBwdWx2aW5hciBwZWxsZW50ZXNxdWUgaGFiaXRhbnQgbW9yYmkgdHJpc3RpcXVlIHNlbmVjdHVzLiBMb3JlbSBpcHN1bSBkb2xvciBzaXQgYW1ldCwgY29uc2VjdGV0dXIgYWRpcGlzY2luZyBlbGl0LCBzZWQgZG8gZWl1c21vZCB0ZW1wb3IgaW5jaWRpZHVudCB1dCBsYWJvcmUgZXQgZG9sb3JlIG1hZ25hIGFsaXF1YS4gU2VkIHR1cnBpcyB0aW5jaWR1bnQgaWQgYWxpcXVldCByaXN1cy4gRWdldCBtYXVyaXMgcGhhcmV0cmEgZXQgdWx0cmljZXMgbmVxdWUgb3JuYXJlIGFlbmVhbiBldWlzbW9kLiBEaWFtIHF1aXMgZW5pbSBsb2JvcnRpcyBzY2VsZXJpc3F1ZSBmZXJtZW50dW0uIFZhcml1cyBkdWlzIGF0IGNvbnNlY3RldHVyIGxvcmVtIGRvbmVjIG1hc3NhIHNhcGllbi4gRGlhbSBzaXQgYW1ldCBuaXNsIHN1c2NpcGl0IGFkaXBpc2NpbmcgYmliZW5kdW0gZXN0IHVsdHJpY2llcyBpbnRlZ2VyLiBMZWN0dXMgdXJuYSBkdWlzIGNvbnZhbGxpcyBjb252YWxsaXMgdGVsbHVzLiBOaWJoIGlwc3VtIGNvbnNlcXVhdCBuaXNsIHZlbCBwcmV0aXVtIGxlY3R1cyBxdWFtIGlkIGxlby4gRmV1Z2lhdCBpbiBhbnRlIG1ldHVzIGRpY3R1bSBhdCB0ZW1wb3IgY29tbW9kby4gVmVsaXQgZGlnbmlzc2ltIHNvZGFsZXMgdXQgZXUgc2VtIGludGVnZXIuIERpY3R1bSBzaXQgYW1ldCBqdXN0byBkb25lYy4gU2NlbGVyaXNxdWUgbWF1cmlzIHBlbGxlbnRlc3F1ZSBwdWx2aW5hciBwZWxsZW50ZXNxdWUgaGFiaXRhbnQgbW9yYmkgdHJpc3RpcXVlIHNlbmVjdHVzLiBTY2VsZXJpc3F1ZSBtYXVyaXMgcGVsbGVudGVzcXVlIHB1bHZpbmFyIHBlbGxlbnRlc3F1ZSBoYWJpdGFudCBtb3JiaSB0cmlzdGlxdWUgc2VuZWN0dXMuIFNjZWxlcmlzcXVlIG1hdXJpcyBwZWxsZW50ZXNxdWUgcHVsdmluYXIgcGVsbGVudGVzcXVlIGhhYml0YW50IG1vcmJpIHRyaXN0aXF1ZSBzZW5lY3R1cy4gU2NlbGVyaXNxdWUgbWF1cmlzIHBlbGxlbnRlc3F1ZSBwdWx2aW5hciBwZWxsZW50ZXNxdWUgaGFiaXRhbnQgbW9yYmkgdHJpc3RpcXVlIHNlbmVjdHVzLiBTY2VsZXJpc3F1ZSBtYXVyaXMgcGVsbGVudGVzcXVlIHB1bHZpbmFyIHBlbGxlbnRlc3F1ZSBoYWJpdGFudCBtb3JiaSB0cmlzdGlxdWUgc2VuZWN0dXMuIFNjZWxlcmlzcXVlIG1hdXJpcyBwZWxsZW50ZXNxdWUgcHVsdmluYXIgcGVsbGVudGVzcXVlIGhhYml0YW50IG1vcmJpIHRyaXN0aXF1ZSBzZW5lY3R1cy4=") for i in std.range(0,100)1507 ],1508}1509----1510====15111512[cols="<,>,>,>,>"]1513|===1514| Command 1515| Mean [ms] 1516| Min [ms] 1517| Max [ms] 1518| Relative 15191520| `Rust (current)` 1521| 1.5 ± 0.4 1522| 1.1 1523| 4.4 1524| 1.00 15251526| `Rust (current-experimental)` 1527| 1.6 ± 0.5 1528| 1.1 1529| 5.0 1530| 1.07 ± 0.47 15311532| `Rust (release)` 1533| 2.0 ± 0.6 1534| 1.2 1535| 6.0 1536| 1.39 ± 0.58 15371538| `Go` 1539| 8.3 ± 0.8 1540| 6.9 1541| 11.9 1542| 5.65 ± 1.77 15431544| `Scala (native)` 1545| 5.0 ± 0.9 1546| 3.8 1547| 9.1 1548| 3.42 ± 1.18 15491550| `Scala (GraalVM)` 1551| 3.4 ± 0.7 1552| 2.6 1553| 7.4 1554| 2.30 ± 0.83 1555|===15561557=== std.base64DecodeBytes15581559> Note: No results for Rust (alternative), slow benchmark, but only quick requested15601561> Note: No results for Go, slow benchmark, but only quick requested15621563> Note: No results for C++, slow benchmark, but only quick requested15641565.Source1566[%collapsible]1567====1568[source,jsonnet]1569----1570{1571 foo: [1572 std.base64DecodeBytes("TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdCwgc2VkIGRvIGVpdXNtb2QgdGVtcG9yIGluY2lkaWR1bnQgdXQgbGFib3JlIGV0IGRvbG9yZSBtYWduYSBhbGlxdWEuIFNlZCB0dXJwaXMgdGluY2lkdW50IGlkIGFsaXF1ZXQgcmlzdXMuIEVnZXQgbWF1cmlzIHBoYXJldHJhIGV0IHVsdHJpY2VzIG5lcXVlIG9ybmFyZSBhZW5lYW4gZXVpc21vZC4gRGlhbSBxdWlzIGVuaW0gbG9ib3J0aXMgc2NlbGVyaXNxdWUgZmVybWVudHVtLiBWYXJpdXMgZHVpcyBhdCBjb25zZWN0ZXR1ciBsb3JlbSBkb25lYyBtYXNzYSBzYXBpZW4uIERpYW0gc2l0IGFtZXQgbmlzbCBzdXNjaXBpdCBhZGlwaXNjaW5nIGJpYmVuZHVtIGVzdCB1bHRyaWNpZXMgaW50ZWdlci4gTGVjdHVzIHVybmEgZHVpcyBjb252YWxsaXMgY29udmFsbGlzIHRlbGx1cy4gTmliaCBpcHN1bSBjb25zZXF1YXQgbmlzbCB2ZWwgcHJldGl1bSBsZWN0dXMgcXVhbSBpZCBsZW8uIEZldWdpYXQgaW4gYW50ZSBtZXR1cyBkaWN0dW0gYXQgdGVtcG9yIGNvbW1vZG8uIFZlbGl0IGRpZ25pc3NpbSBzb2RhbGVzIHV0IGV1IHNlbSBpbnRlZ2VyLiBEaWN0dW0gc2l0IGFtZXQganVzdG8gZG9uZWMuIFNjZWxlcmlzcXVlIG1hdXJpcyBwZWxsZW50ZXNxdWUgcHVsdmluYXIgcGVsbGVudGVzcXVlIGhhYml0YW50IG1vcmJpIHRyaXN0aXF1ZSBzZW5lY3R1cy4gTG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdCwgc2VkIGRvIGVpdXNtb2QgdGVtcG9yIGluY2lkaWR1bnQgdXQgbGFib3JlIGV0IGRvbG9yZSBtYWduYSBhbGlxdWEuIFNlZCB0dXJwaXMgdGluY2lkdW50IGlkIGFsaXF1ZXQgcmlzdXMuIEVnZXQgbWF1cmlzIHBoYXJldHJhIGV0IHVsdHJpY2VzIG5lcXVlIG9ybmFyZSBhZW5lYW4gZXVpc21vZC4gRGlhbSBxdWlzIGVuaW0gbG9ib3J0aXMgc2NlbGVyaXNxdWUgZmVybWVudHVtLiBWYXJpdXMgZHVpcyBhdCBjb25zZWN0ZXR1ciBsb3JlbSBkb25lYyBtYXNzYSBzYXBpZW4uIERpYW0gc2l0IGFtZXQgbmlzbCBzdXNjaXBpdCBhZGlwaXNjaW5nIGJpYmVuZHVtIGVzdCB1bHRyaWNpZXMgaW50ZWdlci4gTGVjdHVzIHVybmEgZHVpcyBjb252YWxsaXMgY29udmFsbGlzIHRlbGx1cy4gTmliaCBpcHN1bSBjb25zZXF1YXQgbmlzbCB2ZWwgcHJldGl1bSBsZWN0dXMgcXVhbSBpZCBsZW8uIEZldWdpYXQgaW4gYW50ZSBtZXR1cyBkaWN0dW0gYXQgdGVtcG9yIGNvbW1vZG8uIFZlbGl0IGRpZ25pc3NpbSBzb2RhbGVzIHV0IGV1IHNlbSBpbnRlZ2VyLiBEaWN0dW0gc2l0IGFtZXQganVzdG8gZG9uZWMuIFNjZWxlcmlzcXVlIG1hdXJpcyBwZWxsZW50ZXNxdWUgcHVsdmluYXIgcGVsbGVudGVzcXVlIGhhYml0YW50IG1vcmJpIHRyaXN0aXF1ZSBzZW5lY3R1cy4gTG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdCwgc2VkIGRvIGVpdXNtb2QgdGVtcG9yIGluY2lkaWR1bnQgdXQgbGFib3JlIGV0IGRvbG9yZSBtYWduYSBhbGlxdWEuIFNlZCB0dXJwaXMgdGluY2lkdW50IGlkIGFsaXF1ZXQgcmlzdXMuIEVnZXQgbWF1cmlzIHBoYXJldHJhIGV0IHVsdHJpY2VzIG5lcXVlIG9ybmFyZSBhZW5lYW4gZXVpc21vZC4gRGlhbSBxdWlzIGVuaW0gbG9ib3J0aXMgc2NlbGVyaXNxdWUgZmVybWVudHVtLiBWYXJpdXMgZHVpcyBhdCBjb25zZWN0ZXR1ciBsb3JlbSBkb25lYyBtYXNzYSBzYXBpZW4uIERpYW0gc2l0IGFtZXQgbmlzbCBzdXNjaXBpdCBhZGlwaXNjaW5nIGJpYmVuZHVtIGVzdCB1bHRyaWNpZXMgaW50ZWdlci4gTGVjdHVzIHVybmEgZHVpcyBjb252YWxsaXMgY29udmFsbGlzIHRlbGx1cy4gTmliaCBpcHN1bSBjb25zZXF1YXQgbmlzbCB2ZWwgcHJldGl1bSBsZWN0dXMgcXVhbSBpZCBsZW8uIEZldWdpYXQgaW4gYW50ZSBtZXR1cyBkaWN0dW0gYXQgdGVtcG9yIGNvbW1vZG8uIFZlbGl0IGRpZ25pc3NpbSBzb2RhbGVzIHV0IGV1IHNlbSBpbnRlZ2VyLiBEaWN0dW0gc2l0IGFtZXQganVzdG8gZG9uZWMuIFNjZWxlcmlzcXVlIG1hdXJpcyBwZWxsZW50ZXNxdWUgcHVsdmluYXIgcGVsbGVudGVzcXVlIGhhYml0YW50IG1vcmJpIHRyaXN0aXF1ZSBzZW5lY3R1cy5Mb3JlbSBpcHN1bSBkb2xvciBzaXQgYW1ldCwgY29uc2VjdGV0dXIgYWRpcGlzY2luZyBlbGl0LCBzZWQgZG8gZWl1c21vZCB0ZW1wb3IgaW5jaWRpZHVudCB1dCBsYWJvcmUgZXQgZG9sb3JlIG1hZ25hIGFsaXF1YS4gU2VkIHR1cnBpcyB0aW5jaWR1bnQgaWQgYWxpcXVldCByaXN1cy4gRWdldCBtYXVyaXMgcGhhcmV0cmEgZXQgdWx0cmljZXMgbmVxdWUgb3JuYXJlIGFlbmVhbiBldWlzbW9kLiBEaWFtIHF1aXMgZW5pbSBsb2JvcnRpcyBzY2VsZXJpc3F1ZSBmZXJtZW50dW0uIFZhcml1cyBkdWlzIGF0IGNvbnNlY3RldHVyIGxvcmVtIGRvbmVjIG1hc3NhIHNhcGllbi4gRGlhbSBzaXQgYW1ldCBuaXNsIHN1c2NpcGl0IGFkaXBpc2NpbmcgYmliZW5kdW0gZXN0IHVsdHJpY2llcyBpbnRlZ2VyLiBMZWN0dXMgdXJuYSBkdWlzIGNvbnZhbGxpcyBjb252YWxsaXMgdGVsbHVzLiBOaWJoIGlwc3VtIGNvbnNlcXVhdCBuaXNsIHZlbCBwcmV0aXVtIGxlY3R1cyBxdWFtIGlkIGxlby4gRmV1Z2lhdCBpbiBhbnRlIG1ldHVzIGRpY3R1bSBhdCB0ZW1wb3IgY29tbW9kby4gVmVsaXQgZGlnbmlzc2ltIHNvZGFsZXMgdXQgZXUgc2VtIGludGVnZXIuIERpY3R1bSBzaXQgYW1ldCBqdXN0byBkb25lYy4gU2NlbGVyaXNxdWUgbWF1cmlzIHBlbGxlbnRlc3F1ZSBwdWx2aW5hciBwZWxsZW50ZXNxdWUgaGFiaXRhbnQgbW9yYmkgdHJpc3RpcXVlIHNlbmVjdHVzLiBMb3JlbSBpcHN1bSBkb2xvciBzaXQgYW1ldCwgY29uc2VjdGV0dXIgYWRpcGlzY2luZyBlbGl0LCBzZWQgZG8gZWl1c21vZCB0ZW1wb3IgaW5jaWRpZHVudCB1dCBsYWJvcmUgZXQgZG9sb3JlIG1hZ25hIGFsaXF1YS4gU2VkIHR1cnBpcyB0aW5jaWR1bnQgaWQgYWxpcXVldCByaXN1cy4gRWdldCBtYXVyaXMgcGhhcmV0cmEgZXQgdWx0cmljZXMgbmVxdWUgb3JuYXJlIGFlbmVhbiBldWlzbW9kLiBEaWFtIHF1aXMgZW5pbSBsb2JvcnRpcyBzY2VsZXJpc3F1ZSBmZXJtZW50dW0uIFZhcml1cyBkdWlzIGF0IGNvbnNlY3RldHVyIGxvcmVtIGRvbmVjIG1hc3NhIHNhcGllbi4gRGlhbSBzaXQgYW1ldCBuaXNsIHN1c2NpcGl0IGFkaXBpc2NpbmcgYmliZW5kdW0gZXN0IHVsdHJpY2llcyBpbnRlZ2VyLiBMZWN0dXMgdXJuYSBkdWlzIGNvbnZhbGxpcyBjb252YWxsaXMgdGVsbHVzLiBOaWJoIGlwc3VtIGNvbnNlcXVhdCBuaXNsIHZlbCBwcmV0aXVtIGxlY3R1cyBxdWFtIGlkIGxlby4gRmV1Z2lhdCBpbiBhbnRlIG1ldHVzIGRpY3R1bSBhdCB0ZW1wb3IgY29tbW9kby4gVmVsaXQgZGlnbmlzc2ltIHNvZGFsZXMgdXQgZXUgc2VtIGludGVnZXIuIERpY3R1bSBzaXQgYW1ldCBqdXN0byBkb25lYy4gU2NlbGVyaXNxdWUgbWF1cmlzIHBlbGxlbnRlc3F1ZSBwdWx2aW5hciBwZWxsZW50ZXNxdWUgaGFiaXRhbnQgbW9yYmkgdHJpc3RpcXVlIHNlbmVjdHVzLiBTY2VsZXJpc3F1ZSBtYXVyaXMgcGVsbGVudGVzcXVlIHB1bHZpbmFyIHBlbGxlbnRlc3F1ZSBoYWJpdGFudCBtb3JiaSB0cmlzdGlxdWUgc2VuZWN0dXMuIFNjZWxlcmlzcXVlIG1hdXJpcyBwZWxsZW50ZXNxdWUgcHVsdmluYXIgcGVsbGVudGVzcXVlIGhhYml0YW50IG1vcmJpIHRyaXN0aXF1ZSBzZW5lY3R1cy4gU2NlbGVyaXNxdWUgbWF1cmlzIHBlbGxlbnRlc3F1ZSBwdWx2aW5hciBwZWxsZW50ZXNxdWUgaGFiaXRhbnQgbW9yYmkgdHJpc3RpcXVlIHNlbmVjdHVzLiBTY2VsZXJpc3F1ZSBtYXVyaXMgcGVsbGVudGVzcXVlIHB1bHZpbmFyIHBlbGxlbnRlc3F1ZSBoYWJpdGFudCBtb3JiaSB0cmlzdGlxdWUgc2VuZWN0dXMuIFNjZWxlcmlzcXVlIG1hdXJpcyBwZWxsZW50ZXNxdWUgcHVsdmluYXIgcGVsbGVudGVzcXVlIGhhYml0YW50IG1vcmJpIHRyaXN0aXF1ZSBzZW5lY3R1cy4=") for i in std.range(0,100)1573 ],1574}1575----1576====15771578[cols="<,>,>,>,>"]1579|===1580| Command 1581| Mean [ms] 1582| Min [ms] 1583| Max [ms] 1584| Relative 15851586| `Rust (current)` 1587| 23.9 ± 1.8 1588| 21.4 1589| 30.6 1590| 1.06 ± 0.13 15911592| `Rust (current-experimental)` 1593| 24.7 ± 2.1 1594| 21.9 1595| 30.8 1596| 1.10 ± 0.14 15971598| `Rust (release)` 1599| 22.5 ± 2.1 1600| 19.6 1601| 28.6 1602| 1.00 16031604| `Scala (native)` 1605| 42.1 ± 2.7 1606| 35.7 1607| 51.2 1608| 1.87 ± 0.21 16091610| `Scala (GraalVM)` 1611| 32.7 ± 2.1 1612| 28.2 1613| 37.4 1614| 1.45 ± 0.17 1615|===16161617=== std.base64 (byte array)16181619> Note: No results for Rust (alternative), slow benchmark, but only quick requested16201621> Note: No results for Go, slow benchmark, but only quick requested16221623> Note: No results for C++, slow benchmark, but only quick requested16241625.Source1626[%collapsible]1627====1628[source,jsonnet]1629----1630{1631 foo: [1632 std.base64([76,111,114,101,109,32,105,112,115,117,109,32,100,111,108,111,114,32,115,105,116,32,97,109,101,116,44,32,99,111,110,115,101,99,116,101,116,117,114,32,97,100,105,112,105,115,99,105,110,103,32,101,108,105,116,44,32,115,101,100,32,100,111,32,101,105,117,115,109,111,100,32,116,101,109,112,111,114,32,105,110,99,105,100,105,100,117,110,116,32,117,116,32,108,97,98,111,114,101,32,101,116,32,100,111,108,111,114,101,32,109,97,103,110,97,32,97,108,105,113,117,97,46,32,83,101,100,32,116,117,114,112,105,115,32,116,105,110,99,105,100,117,110,116,32,105,100,32,97,108,105,113,117,101,116,32,114,105,115,117,115,46,32,69,103,101,116,32,109,97,117,114,105,115,32,112,104,97,114,101,116,114,97,32,101,116,32,117,108,116,114,105,99,101,115,32,110,101,113,117,101,32,111,114,110,97,114,101,32,97,101,110,101,97,110,32,101,117,105,115,109,111,100,46,32,68,105,97,109,32,113,117,105,115,32,101,110,105,109,32,108,111,98,111,114,116,105,115,32,115,99,101,108,101,114,105,115,113,117,101,32,102,101,114,109,101,110,116,117,109,46,32,86,97,114,105,117,115,32,100,117,105,115,32,97,116,32,99,111,110,115,101,99,116,101,116,117,114,32,108,111,114,101,109,32,100,111,110,101,99,32,109,97,115,115,97,32,115,97,112,105,101,110,46,32,68,105,97,109,32,115,105,116,32,97,109,101,116,32,110,105,115,108,32,115,117,115,99,105,112,105,116,32,97,100,105,112,105,115,99,105,110,103,32,98,105,98,101,110,100,117,109,32,101,115,116,32,117,108,116,114,105,99,105,101,115,32,105,110,116,101,103,101,114,46,32,76,101,99,116,117,115,32,117,114,110,97,32,100,117,105,115,32,99,111,110,118,97,108,108,105,115,32,99,111,110,118,97,108,108,105,115,32,116,101,108,108,117,115,46,32,78,105,98,104,32,105,112,115,117,109,32,99,111,110,115,101,113,117,97,116,32,110,105,115,108,32,118,101,108,32,112,114,101,116,105,117,109,32,108,101,99,116,117,115,32,113,117,97,109,32,105,100,32,108,101,111,46,32,70,101,117,103,105,97,116,32,105,110,32,97,110,116,101,32,109,101,116,117,115,32,100,105,99,116,117,109,32,97,116,32,116,101,109,112,111,114,32,99,111,109,109,111,100,111,46,32,86,101,108,105,116,32,100,105,103,110,105,115,115,105,109,32,115,111,100,97,108,101,115,32,117,116,32,101,117,32,115,101,109,32,105,110,116,101,103,101,114,46,32,68,105,99,116,117,109,32,115,105,116,32,97,109,101,116,32,106,117,115,116,111,32,100,111,110,101,99,46,32,83,99,101,108,101,114,105,115,113,117,101,32,109,97,117,114,105,115,32,112,101,108,108,101,110,116,101,115,113,117,101,32,112,117,108,118,105,110,97,114,32,112,101,108,108,101,110,116,101,115,113,117,101,32,104,97,98,105,116,97,110,116,32,109,111,114,98,105,32,116,114,105,115,116,105,113,117,101,32,115,101,110,101,99,116,117,115,46,32,76,111,114,101,109,32,105,112,115,117,109,32,100,111,108,111,114,32,115,105,116,32,97,109,101,116,44,32,99,111,110,115,101,99,116,101,116,117,114,32,97,100,105,112,105,115,99,105,110,103,32,101,108,105,116,44,32,115,101,100,32,100,111,32,101,105,117,115,109,111,100,32,116,101,109,112,111,114,32,105,110,99,105,100,105,100,117,110,116,32,117,116,32,108,97,98,111,114,101,32,101,116,32,100,111,108,111,114,101,32,109,97,103,110,97,32,97,108,105,113,117,97,46,32,83,101,100,32,116,117,114,112,105,115,32,116,105,110,99,105,100,117,110,116,32,105,100,32,97,108,105,113,117,101,116,32,114,105,115,117,115,46,32,69,103,101,116,32,109,97,117,114,105,115,32,112,104,97,114,101,116,114,97,32,101,116,32,117,108,116,114,105,99,101,115,32,110,101,113,117,101,32,111,114,110,97,114,101,32,97,101,110,101,97,110,32,101,117,105,115,109,111,100,46,32,68,105,97,109,32,113,117,105,115,32,101,110,105,109,32,108,111,98,111,114,116,105,115,32,115,99,101,108,101,114,105,115,113,117,101,32,102,101,114,109,101,110,116,117,109,46,32,86,97,114,105,117,115,32,100,117,105,115,32,97,116,32,99,111,110,115,101,99,116,101,116,117,114,32,108,111,114,101,109,32,100,111,110,101,99,32,109,97,115,115,97,32,115,97,112,105,101,110,46,32,68,105,97,109,32,115,105,116,32,97,109,101,116,32,110,105,115,108,32,115,117,115,99,105,112,105,116,32,97,100,105,112,105,115,99,105,110,103,32,98,105,98,101,110,100,117,109,32,101,115,116,32,117,108,116,114,105,99,105,101,115,32,105,110,116,101,103,101,114,46,32,76,101,99,116,117,115,32,117,114,110,97,32,100,117,105,115,32,99,111,110,118,97,108,108,105,115,32,99,111,110,118,97,108,108,105,115,32,116,101,108,108,117,115,46,32,78,105,98,104,32,105,112,115,117,109,32,99,111,110,115,101,113,117,97,116,32,110,105,115,108,32,118,101,108,32,112,114,101,116,105,117,109,32,108,101,99,116,117,115,32,113,117,97,109,32,105,100,32,108,101,111,46,32,70,101,117,103,105,97,116,32,105,110,32,97,110,116,101,32,109,101,116,117,115,32,100,105,99,116,117,109,32,97,116,32,116,101,109,112,111,114,32,99,111,109,109,111,100,111,46,32,86,101,108,105,116,32,100,105,103,110,105,115,115,105,109,32,115,111,100,97,108,101,115,32,117,116,32,101,117,32,115,101,109,32,105,110,116,101,103,101,114,46,32,68,105,99,116,117,109,32,115,105,116,32,97,109,101,116,32,106,117,115,116,111,32,100,111,110,101,99,46,32,83,99,101,108,101,114,105,115,113,117,101,32,109,97,117,114,105,115,32,112,101,108,108,101,110,116,101,115,113,117,101,32,112,117,108,118,105,110,97,114,32,112,101,108,108,101,110,116,101,115,113,117,101,32,104,97,98,105,116,97,110,116,32,109,111,114,98,105,32,116,114,105,115,116,105,113,117,101,32,115,101,110,101,99,116,117,115,46,32,76,111,114,101,109,32,105,112,115,117,109,32,100,111,108,111,114,32,115,105,116,32,97,109,101,116,44,32,99,111,110,115,101,99,116,101,116,117,114,32,97,100,105,112,105,115,99,105,110,103,32,101,108,105,116,44,32,115,101,100,32,100,111,32,101,105,117,115,109,111,100,32,116,101,109,112,111,114,32,105,110,99,105,100,105,100,117,110,116,32,117,116,32,108,97,98,111,114,101,32,101,116,32,100,111,108,111,114,101,32,109,97,103,110,97,32,97,108,105,113,117,97,46,32,83,101,100,32,116,117,114,112,105,115,32,116,105,110,99,105,100,117,110,116,32,105,100,32,97,108,105,113,117,101,116,32,114,105,115,117,115,46,32,69,103,101,116,32,109,97,117,114,105,115,32,112,104,97,114,101,116,114,97,32,101,116,32,117,108,116,114,105,99,101,115,32,110,101,113,117,101,32,111,114,110,97,114,101,32,97,101,110,101,97,110,32,101,117,105,115,109,111,100,46,32,68,105,97,109,32,113,117,105,115,32,101,110,105,109,32,108,111,98,111,114,116,105,115,32,115,99,101,108,101,114,105,115,113,117,101,32,102,101,114,109,101,110,116,117,109,46,32,86,97,114,105,117,115,32,100,117,105,115,32,97,116,32,99,111,110,115,101,99,116,101,116,117,114,32,108,111,114,101,109,32,100,111,110,101,99,32,109,97,115,115,97,32,115,97,112,105,101,110,46,32,68,105,97,109,32,115,105,116,32,97,109,101,116,32,110,105,115,108,32,115,117,115,99,105,112,105,116,32,97,100,105,112,105,115,99,105,110,103,32,98,105,98,101,110,100,117,109,32,101,115,116,32,117,108,116,114,105,99,105,101,115,32,105,110,116,101,103,101,114,46,32,76,101,99,116,117,115,32,117,114,110,97,32,100,117,105,115,32,99,111,110,118,97,108,108,105,115,32,99,111,110,118,97,108,108,105,115,32,116,101,108,108,117,115,46,32,78,105,98,104,32,105,112,115,117,109,32,99,111,110,115,101,113,117,97,116,32,110,105,115,108,32,118,101,108,32,112,114,101,116,105,117,109,32,108,101,99,116,117,115,32,113,117,97,109,32,105,100,32,108,101,111,46,32,70,101,117,103,105,97,116,32,105,110,32,97,110,116,101,32,109,101,116,117,115,32,100,105,99,116,117,109,32,97,116,32,116,101,109,112,111,114,32,99,111,109,109,111,100,111,46,32,86,101,108,105,116,32,100,105,103,110,105,115,115,105,109,32,115,111,100,97,108,101,115,32,117,116,32,101,117,32,115,101,109,32,105,110,116,101,103,101,114,46,32,68,105,99,116,117,109,32,115,105,116,32,97,109,101,116,32,106,117,115,116,111,32,100,111,110,101,99,46,32,83,99,101,108,101,114,105,115,113,117,101,32,109,97,117,114,105,115,32,112,101,108,108,101,110,116,101,115,113,117,101,32,112,117,108,118,105,110,97,114,32,112,101,108,108,101,110,116,101,115,113,117,101,32,104,97,98,105,116,97,110,116,32,109,111,114,98,105,32,116,114,105,115,116,105,113,117,101,32,115,101,110,101,99,116,117,115,46,76,111,114,101,109,32,105,112,115,117,109,32,100,111,108,111,114,32,115,105,116,32,97,109,101,116,44,32,99,111,110,115,101,99,116,101,116,117,114,32,97,100,105,112,105,115,99,105,110,103,32,101,108,105,116,44,32,115,101,100,32,100,111,32,101,105,117,115,109,111,100,32,116,101,109,112,111,114,32,105,110,99,105,100,105,100,117,110,116,32,117,116,32,108,97,98,111,114,101,32,101,116,32,100,111,108,111,114,101,32,109,97,103,110,97,32,97,108,105,113,117,97,46,32,83,101,100,32,116,117,114,112,105,115,32,116,105,110,99,105,100,117,110,116,32,105,100,32,97,108,105,113,117,101,116,32,114,105,115,117,115,46,32,69,103,101,116,32,109,97,117,114,105,115,32,112,104,97,114,101,116,114,97,32,101,116,32,117,108,116,114,105,99,101,115,32,110,101,113,117,101,32,111,114,110,97,114,101,32,97,101,110,101,97,110,32,101,117,105,115,109,111,100,46,32,68,105,97,109,32,113,117,105,115,32,101,110,105,109,32,108,111,98,111,114,116,105,115,32,115,99,101,108,101,114,105,115,113,117,101,32,102,101,114,109,101,110,116,117,109,46,32,86,97,114,105,117,115,32,100,117,105,115,32,97,116,32,99,111,110,115,101,99,116,101,116,117,114,32,108,111,114,101,109,32,100,111,110,101,99,32,109,97,115,115,97,32,115,97,112,105,101,110,46,32,68,105,97,109,32,115,105,116,32,97,109,101,116,32,110,105,115,108,32,115,117,115,99,105,112,105,116,32,97,100,105,112,105,115,99,105,110,103,32,98,105,98,101,110,100,117,109,32,101,115,116,32,117,108,116,114,105,99,105,101,115,32,105,110,116,101,103,101,114,46,32,76,101,99,116,117,115,32,117,114,110,97,32,100,117,105,115,32,99,111,110,118,97,108,108,105,115,32,99,111,110,118,97,108,108,105,115,32,116,101,108,108,117,115,46,32,78,105,98,104,32,105,112,115,117,109,32,99,111,110,115,101,113,117,97,116,32,110,105,115,108,32,118,101,108,32,112,114,101,116,105,117,109,32,108,101,99,116,117,115,32,113,117,97,109,32,105,100,32,108,101,111,46,32,70,101,117,103,105,97,116,32,105,110,32,97,110,116,101,32,109,101,116,117,115,32,100,105,99,116,117,109,32,97,116,32,116,101,109,112,111,114,32,99,111,109,109,111,100,111,46,32,86,101,108,105,116,32,100,105,103,110,105,115,115,105,109,32,115,111,100,97,108,101,115,32,117,116,32,101,117,32,115,101,109,32,105,110,116,101,103,101,114,46,32,68,105,99,116,117,109,32,115,105,116,32,97,109,101,116,32,106,117,115,116,111,32,100,111,110,101,99,46,32,83,99,101,108,101,114,105,115,113,117,101,32,109,97,117,114,105,115,32,112,101,108,108,101,110,116,101,115,113,117,101,32,112,117,108,118,105,110,97,114,32,112,101,108,108,101,110,116,101,115,113,117,101,32,104,97,98,105,116,97,110,116,32,109,111,114,98,105,32,116,114,105,115,116,105,113,117,101,32,115,101,110,101,99,116,117,115,46,32,76,111,114,101,109,32,105,112,115,117,109,32,100,111,108,111,114,32,115,105,116,32,97,109,101,116,44,32,99,111,110,115,101,99,116,101,116,117,114,32,97,100,105,112,105,115,99,105,110,103,32,101,108,105,116,44,32,115,101,100,32,100,111,32,101,105,117,115,109,111,100,32,116,101,109,112,111,114,32,105,110,99,105,100,105,100,117,110,116,32,117,116,32,108,97,98,111,114,101,32,101,116,32,100,111,108,111,114,101,32,109,97,103,110,97,32,97,108,105,113,117,97,46,32,83,101,100,32,116,117,114,112,105,115,32,116,105,110,99,105,100,117,110,116,32,105,100,32,97,108,105,113,117,101,116,32,114,105,115,117,115,46,32,69,103,101,116,32,109,97,117,114,105,115,32,112,104,97,114,101,116,114,97,32,101,116,32,117,108,116,114,105,99,101,115,32,110,101,113,117,101,32,111,114,110,97,114,101,32,97,101,110,101,97,110,32,101,117,105,115,109,111,100,46,32,68,105,97,109,32,113,117,105,115,32,101,110,105,109,32,108,111,98,111,114,116,105,115,32,115,99,101,108,101,114,105,115,113,117,101,32,102,101,114,109,101,110,116,117,109,46,32,86,97,114,105,117,115,32,100,117,105,115,32,97,116,32,99,111,110,115,101,99,116,101,116,117,114,32,108,111,114,101,109,32,100,111,110,101,99,32,109,97,115,115,97,32,115,97,112,105,101,110,46,32,68,105,97,109,32,115,105,116,32,97,109,101,116,32,110,105,115,108,32,115,117,115,99,105,112,105,116,32,97,100,105,112,105,115,99,105,110,103,32,98,105,98,101,110,100,117,109,32,101,115,116,32,117,108,116,114,105,99,105,101,115,32,105,110,116,101,103,101,114,46,32,76,101,99,116,117,115,32,117,114,110,97,32,100,117,105,115,32,99,111,110,118,97,108,108,105,115,32,99,111,110,118,97,108,108,105,115,32,116,101,108,108,117,115,46,32,78,105,98,104,32,105,112,115,117,109,32,99,111,110,115,101,113,117,97,116,32,110,105,115,108,32,118,101,108,32,112,114,101,116,105,117,109,32,108,101,99,116,117,115,32,113,117,97,109,32,105,100,32,108,101,111,46,32,70,101,117,103,105,97,116,32,105,110,32,97,110,116,101,32,109,101,116,117,115,32,100,105,99,116,117,109,32,97,116,32,116,101,109,112,111,114,32,99,111,109,109,111,100,111,46,32,86,101,108,105,116,32,100,105,103,110,105,115,115,105,109,32,115,111,100,97,108,101,115,32,117,116,32,101,117,32,115,101,109,32,105,110,116,101,103,101,114,46,32,68,105,99,116,117,109,32,115,105,116,32,97,109,101,116,32,106,117,115,116,111,32,100,111,110,101,99,46,32,83,99,101,108,101,114,105,115,113,117,101,32,109,97,117,114,105,115,32,112,101,108,108,101,110,116,101,115,113,117,101,32,112,117,108,118,105,110,97,114,32,112,101,108,108,101,110,116,101,115,113,117,101,32,104,97,98,105,116,97,110,116,32,109,111,114,98,105,32,116,114,105,115,116,105,113,117,101,32,115,101,110,101,99,116,117,115,46,32,83,99,101,108,101,114,105,115,113,117,101,32,109,97,117,114,105,115,32,112,101,108,108,101,110,116,101,115,113,117,101,32,112,117,108,118,105,110,97,114,32,112,101,108,108,101,110,116,101,115,113,117,101,32,104,97,98,105,116,97,110,116,32,109,111,114,98,105,32,116,114,105,115,116,105,113,117,101,32,115,101,110,101,99,116,117,115,46,32,83,99,101,108,101,114,105,115,113,117,101,32,109,97,117,114,105,115,32,112,101,108,108,101,110,116,101,115,113,117,101,32,112,117,108,118,105,110,97,114,32,112,101,108,108,101,110,116,101,115,113,117,101,32,104,97,98,105,116,97,110,116,32,109,111,114,98,105,32,116,114,105,115,116,105,113,117,101,32,115,101,110,101,99,116,117,115,46,32,83,99,101,108,101,114,105,115,113,117,101,32,109,97,117,114,105,115,32,112,101,108,108,101,110,116,101,115,113,117,101,32,112,117,108,118,105,110,97,114,32,112,101,108,108,101,110,116,101,115,113,117,101,32,104,97,98,105,116,97,110,116,32,109,111,114,98,105,32,116,114,105,115,116,105,113,117,101,32,115,101,110,101,99,116,117,115,46,32,83,99,101,108,101,114,105,115,113,117,101,32,109,97,117,114,105,115,32,112,101,108,108,101,110,116,101,115,113,117,101,32,112,117,108,118,105,110,97,114,32,112,101,108,108,101,110,116,101,115,113,117,101,32,104,97,98,105,116,97,110,116,32,109,111,114,98,105,32,116,114,105,115,116,105,113,117,101,32,115,101,110,101,99,116,117,115,46,32,83,99,101,108,101,114,105,115,113,117,101,32,109,97,117,114,105,115,32,112,101,108,108,101,110,116,101,115,113,117,101,32,112,117,108,118,105,110,97,114,32,112,101,108,108,101,110,116,101,115,113,117,101,32,104,97,98,105,116,97,110,116,32,109,111,114,98,105,32,116,114,105,115,116,105,113,117,101,32,115,101,110,101,99,116,117,115]),for i in std.range(0,100)1633 ],1634}1635----1636====16371638[cols="<,>,>,>,>"]1639|===1640| Command 1641| Mean [ms] 1642| Min [ms] 1643| Max [ms] 1644| Relative 16451646| `Rust (current)` 1647| 19.1 ± 0.9 1648| 17.7 1649| 22.8 1650| 2.81 ± 0.44 16511652| `Rust (current-experimental)` 1653| 22.9 ± 1.3 1654| 20.4 1655| 27.2 1656| 3.36 ± 0.53 16571658| `Rust (release)` 1659| 17.4 ± 1.2 1660| 16.0 1661| 24.9 1662| 2.55 ± 0.42 16631664| `Scala (native)` 1665| 8.6 ± 1.2 1666| 6.3 1667| 14.4 1668| 1.27 ± 0.26 16691670| `Scala (GraalVM)` 1671| 6.8 ± 1.0 1672| 5.3 1673| 10.9 1674| 1.00 1675|===16761677=== std.foldl16781679.Source1680[%collapsible]1681====1682[source,jsonnet]1683----1684local input = std.makeArray(10000, function(i) 'xxxxx');16851686std.foldl(function(acc, value) acc + value, input, '')16871688----1689====16901691[cols="<,>,>,>,>"]1692|===1693| Command 1694| Mean [ms] 1695| Min [ms] 1696| Max [ms] 1697| Relative 16981699| `Rust (current)` 1700| 2.7 ± 0.3 1701| 2.3 1702| 5.2 1703| 1.03 ± 0.18 17041705| `Rust (current-experimental)` 1706| 2.6 ± 0.3 1707| 2.3 1708| 4.9 1709| 1.00 17101711| `Rust (release)` 1712| 2.8 ± 0.4 1713| 2.4 1714| 7.7 1715| 1.08 ± 0.19 17161717| `Rust (alternative, rsjsonnet)` 1718| 30.6 ± 3.0 1719| 23.3 1720| 39.1 1721| 11.84 ± 1.84 17221723| `Go` 1724| 1173.8 ± 18.4 1725| 1134.5 1726| 1210.5 1727| 454.70 ± 55.66 17281729| `Scala (native)` 1730| 83.5 ± 5.0 1731| 76.5 1732| 96.3 1733| 32.36 ± 4.38 17341735| `Scala (GraalVM)` 1736| 65.4 ± 4.0 1737| 55.9 1738| 74.7 1739| 25.35 ± 3.44 17401741| `C++` 1742| 187.7 ± 6.3 1743| 178.7 1744| 201.8 1745| 72.71 ± 9.16 1746|===17471748=== std.manifestJsonEx17491750> Note: No results for C++, slow benchmark, but only quick requested17511752.Source1753[%collapsible]1754====1755[source,jsonnet]1756----1757{1758 bar: {1759 prometheusOperator+: {1760 service+: {1761 spec+: {1762 ports: [1763 {1764 name: 'https',1765 port: 8443,1766 targetPort: 'https',1767 },1768 ],1769 },1770 },1771 serviceMonitor+: {1772 spec+: {1773 endpoints: [1774 {1775 port: 'https',1776 scheme: 'https',1777 honorLabels: true,1778 bearerTokenFile: '/var/run/secrets/kubernetes.io/serviceaccount/token',1779 tlsConfig: {1780 insecureSkipVerify: true,1781 },1782 },1783 ]1784 },1785 },1786 clusterRole+: {1787 rules+: [1788 {1789 apiGroups: ['authentication.k8s.io'],1790 resources: ['tokenreviews'],1791 verbs: ['create'],1792 },1793 {1794 apiGroups: ['authorization.k8s.io'],1795 resources: ['subjectaccessreviews'],1796 verbs: ['create'],1797 },1798 ],1799 },1800 }1801 },1802 foo: std.manifestJsonEx(self.bar, " ")1803}1804----1805====18061807[cols="<,>,>,>,>"]1808|===1809| Command 1810| Mean [µs] 1811| Min [µs] 1812| Max [µs] 1813| Relative 18141815| `Rust (current)` 1816| 843.6 ± 223.0 1817| 656.6 1818| 4127.4 1819| 1.04 ± 0.39 18201821| `Rust (current-experimental)` 1822| 813.0 ± 213.3 1823| 642.3 1824| 3413.8 1825| 1.00 18261827| `Rust (release)` 1828| 845.1 ± 218.6 1829| 663.7 1830| 3241.0 1831| 1.04 ± 0.38 18321833| `Rust (alternative, rsjsonnet)` 1834| 1282.1 ± 289.2 1835| 1019.9 1836| 3714.4 1837| 1.58 ± 0.55 18381839| `Go` 1840| 1601.1 ± 422.3 1841| 1237.9 1842| 5025.6 1843| 1.97 ± 0.73 18441845| `Scala (native)` 1846| 2750.4 ± 503.1 1847| 2134.1 1848| 5361.6 1849| 3.38 ± 1.08 18501851| `Scala (GraalVM)` 1852| 1897.5 ± 451.5 1853| 1485.7 1854| 5449.9 1855| 2.33 ± 0.83 1856|===18571858=== std.manifestTomlEx18591860> Note: No results for C++, slow benchmark, but only quick requested18611862.Source1863[%collapsible]1864====1865[source,jsonnet]1866----1867{1868 bar: {1869 prometheusOperator+: {1870 service+: {1871 spec+: {1872 ports: [1873 {1874 name: 'https',1875 port: 8443,1876 targetPort: 'https',1877 },1878 ],1879 },1880 },1881 serviceMonitor+: {1882 spec+: {1883 endpoints: [1884 {1885 port: 'https',1886 scheme: 'https',1887 honorLabels: true,1888 bearerTokenFile: '/var/run/secrets/kubernetes.io/serviceaccount/token',1889 tlsConfig: {1890 insecureSkipVerify: true,1891 },1892 },1893 ],1894 },1895 },1896 clusterRole+: {1897 rules+: [1898 {1899 apiGroups: ['authentication.k8s.io'],1900 resources: ['tokenreviews'],1901 verbs: ['create'],1902 },1903 {1904 apiGroups: ['authorization.k8s.io'],1905 resources: ['subjectaccessreviews'],1906 verbs: ['create'],1907 },1908 ],1909 },1910 },1911 },1912 nothing: std.manifestTomlEx(self.bar, ' '),1913}19141915----1916====19171918[cols="<,>,>,>,>"]1919|===1920| Command 1921| Mean [µs] 1922| Min [µs] 1923| Max [µs] 1924| Relative 19251926| `Rust (current)` 1927| 763.4 ± 191.9 1928| 633.3 1929| 3624.8 1930| 1.00 19311932| `Rust (current-experimental)` 1933| 827.8 ± 231.9 1934| 650.9 1935| 3128.1 1936| 1.08 ± 0.41 19371938| `Rust (release)` 1939| 852.5 ± 209.2 1940| 674.0 1941| 2880.1 1942| 1.12 ± 0.39 19431944| `Rust (alternative, rsjsonnet)` 1945| 1296.1 ± 278.3 1946| 1008.8 1947| 3817.0 1948| 1.70 ± 0.56 19491950| `Go` 1951| 1653.9 ± 379.9 1952| 1242.0 1953| 3968.9 1954| 2.17 ± 0.74 19551956| `Scala (native)` 1957| 2950.5 ± 521.5 1958| 2308.7 1959| 5281.5 1960| 3.86 ± 1.19 19611962| `Scala (GraalVM)` 1963| 1903.0 ± 402.9 1964| 1498.6 1965| 5037.9 1966| 2.49 ± 0.82 1967|===19681969=== std.parseInt19701971> Note: No results for C++, slow benchmark, but only quick requested19721973.Source1974[%collapsible]1975====1976[source,jsonnet]1977----1978{1979 foo: [1980 std.parseInt("-123949595") for i in std.range(0,100)1981 ],1982}1983----1984====19851986[cols="<,>,>,>,>"]1987|===1988| Command 1989| Mean [µs] 1990| Min [µs] 1991| Max [µs] 1992| Relative 19931994| `Rust (current)` 1995| 805.9 ± 184.3 1996| 620.1 1997| 2679.7 1998| 1.03 ± 0.31 19992000| `Rust (current-experimental)` 2001| 780.1 ± 147.8 2002| 639.4 2003| 2606.9 2004| 1.00 20052006| `Rust (release)` 2007| 803.9 ± 133.5 2008| 671.5 2009| 2839.0 2010| 1.03 ± 0.26 20112012| `Rust (alternative, rsjsonnet)` 2013| 1211.2 ± 169.4 2014| 1028.5 2015| 3194.9 2016| 1.55 ± 0.37 20172018| `Go` 2019| 1521.1 ± 292.6 2020| 1215.8 2021| 3432.6 2022| 1.95 ± 0.53 20232024| `Scala (native)` 2025| 2431.3 ± 379.6 2026| 2060.0 2027| 5090.0 2028| 3.12 ± 0.77 20292030| `Scala (GraalVM)` 2031| 1569.7 ± 263.7 2032| 1332.6 2033| 4578.6 2034| 2.01 ± 0.51 2035|===20362037=== std.reverse20382039> Note: No results for Go, slow benchmark, but only quick requested20402041> Note: No results for C++, slow benchmark, but only quick requested20422043.Source2044[%collapsible]2045====2046[source,jsonnet]2047----2048{2049 foo: [2050 std.reverse(std.range(0, 5000)) for i in std.range(0,100)2051 ],2052}2053----2054====20552056[cols="<,>,>,>,>"]2057|===2058| Command 2059| Mean [ms] 2060| Min [ms] 2061| Max [ms] 2062| Relative 20632064| `Rust (current)` 2065| 29.1 ± 2.0 2066| 26.3 2067| 37.5 2068| 1.04 ± 0.10 20692070| `Rust (current-experimental)` 2071| 31.0 ± 2.4 2072| 27.3 2073| 41.0 2074| 1.11 ± 0.12 20752076| `Rust (release)` 2077| 27.9 ± 2.0 2078| 24.7 2079| 34.1 2080| 1.00 20812082| `Rust (alternative, rsjsonnet)` 2083| 61.1 ± 2.8 2084| 55.2 2085| 67.2 2086| 2.19 ± 0.19 20872088| `Scala (native)` 2089| 54.8 ± 2.5 2090| 49.2 2091| 63.4 2092| 1.96 ± 0.17 20932094| `Scala (GraalVM)` 2095| 38.7 ± 1.9 2096| 35.4 2097| 43.7 2098| 1.39 ± 0.12 2099|===21002101=== std.substr21022103.Source2104[%collapsible]2105====2106[source,jsonnet]2107----2108{2109 foo: [2110 std.substr("Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Sed turpis tincidunt id aliquet risus. Eget mauris pharetra et ultrices neque ornare aenean euismod. Diam quis enim lobortis scelerisque fermentum. Varius duis at consectetur lorem donec massa sapien. Diam sit amet nisl suscipit adipiscing bibendum est ultricies integer. Lectus urna duis convallis convallis tellus. Nibh ipsum consequat nisl vel pretium lectus quam id leo. Feugiat in ante metus dictum at tempor commodo. Velit dignissim sodales ut eu sem integer. Dictum sit amet justo donec. Scelerisque mauris pellentesque pulvinar pellentesque habitant morbi tristique senectus. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Sed turpis tincidunt id aliquet risus. Eget mauris pharetra et ultrices neque ornare aenean euismod. Diam quis enim lobortis scelerisque fermentum. Varius duis at consectetur lorem donec massa sapien. Diam sit amet nisl suscipit adipiscing bibendum est ultricies integer. Lectus urna duis convallis convallis tellus. Nibh ipsum consequat nisl vel pretium lectus quam id leo. Feugiat in ante metus dictum at tempor commodo. Velit dignissim sodales ut eu sem integer. Dictum sit amet justo donec. Scelerisque mauris pellentesque pulvinar pellentesque habitant morbi tristique senectus. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Sed turpis tincidunt id aliquet risus. Eget mauris pharetra et ultrices neque ornare aenean euismod. Diam quis enim lobortis scelerisque fermentum. Varius duis at consectetur lorem donec massa sapien. Diam sit amet nisl suscipit adipiscing bibendum est ultricies integer. Lectus urna duis convallis convallis tellus. Nibh ipsum consequat nisl vel pretium lectus quam id leo. Feugiat in ante metus dictum at tempor commodo. Velit dignissim sodales ut eu sem integer. Dictum sit amet justo donec. Scelerisque mauris pellentesque pulvinar pellentesque habitant morbi tristique senectus.Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Sed turpis tincidunt id aliquet risus. Eget mauris pharetra et ultrices neque ornare aenean euismod. Diam quis enim lobortis scelerisque fermentum. Varius duis at consectetur lorem donec massa sapien. Diam sit amet nisl suscipit adipiscing bibendum est ultricies integer. Lectus urna duis convallis convallis tellus. Nibh ipsum consequat nisl vel pretium lectus quam id leo. Feugiat in ante metus dictum at tempor commodo. Velit dignissim sodales ut eu sem integer. Dictum sit amet justo donec. Scelerisque mauris pellentesque pulvinar pellentesque habitant morbi tristique senectus. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Sed turpis tincidunt id aliquet risus. Eget mauris pharetra et ultrices neque ornare aenean euismod. Diam quis enim lobortis scelerisque fermentum. Varius duis at consectetur lorem donec massa sapien. Diam sit amet nisl suscipit adipiscing bibendum est ultricies integer. Lectus urna duis convallis convallis tellus. Nibh ipsum consequat nisl vel pretium lectus quam id leo. Feugiat in ante metus dictum at tempor commodo. Velit dignissim sodales ut eu sem integer. Dictum sit amet justo donec. Scelerisque mauris pellentesque pulvinar pellentesque habitant morbi tristique senectus. Scelerisque mauris pellentesque pulvinar pellentesque habitant morbi tristique senectus. Scelerisque mauris pellentesque pulvinar pellentesque habitant morbi tristique senectus. Scelerisque mauris pellentesque pulvinar pellentesque habitant morbi tristique senectus. Scelerisque mauris pellentesque pulvinar pellentesque habitant morbi tristique senectus. Scelerisque mauris pellentesque pulvinar pellentesque habitant morbi tristique senectus. ", i, 800-i) for i in std.range(0,100)2111 ],2112}2113----2114====21152116[cols="<,>,>,>,>"]2117|===2118| Command 2119| Mean [µs] 2120| Min [µs] 2121| Max [µs] 2122| Relative 21232124| `Rust (current)` 2125| 962.2 ± 229.2 2126| 828.4 2127| 3431.0 2128| 1.00 ± 0.35 21292130| `Rust (current-experimental)` 2131| 958.4 ± 243.6 2132| 801.4 2133| 3611.0 2134| 1.00 21352136| `Rust (release)` 2137| 962.6 ± 168.6 2138| 848.0 2139| 4656.2 2140| 1.00 ± 0.31 21412142| `Rust (alternative, rsjsonnet)` 2143| 1510.8 ± 192.9 2144| 1341.7 2145| 3548.9 2146| 1.58 ± 0.45 21472148| `Go` 2149| 3403.4 ± 404.7 2150| 2843.4 2151| 6024.9 2152| 3.55 ± 1.00 21532154| `Scala (native)` 2155| 3267.8 ± 454.9 2156| 2645.9 2157| 5306.1 2158| 3.41 ± 0.99 21592160| `Scala (GraalVM)` 2161| 2195.9 ± 307.6 2162| 1846.1 2163| 4205.0 2164| 2.29 ± 0.66 21652166| `C++` 2167| 18430.8 ± 1082.9 2168| 16240.2 2169| 21665.0 2170| 19.23 ± 5.02 2171|===21722173=== Comparsion for array21742175> Note: No results for C++, too slow, takes hours, skews results21762177.Source2178[%collapsible]2179====2180[source,jsonnet]2181----2182local long_array = std.range(1, 1000000);2183long_array + [1] < long_array + [2]21842185----2186====21872188[cols="<,>,>,>,>"]2189|===2190| Command 2191| Mean [ms] 2192| Min [ms] 2193| Max [ms] 2194| Relative 21952196| `Rust (current)` 2197| 13.2 ± 0.6 2198| 12.4 2199| 16.6 2200| 1.01 ± 0.06 22012202| `Rust (current-experimental)` 2203| 13.1 ± 0.5 2204| 12.4 2205| 15.3 2206| 1.00 22072208| `Rust (release)` 2209| 17.9 ± 0.6 2210| 16.8 2211| 19.5 2212| 1.37 ± 0.07 22132214| `Rust (alternative, rsjsonnet)` 2215| 73.3 ± 6.3 2216| 56.7 2217| 88.2 2218| 5.61 ± 0.54 22192220| `Go` 2221| 85.8 ± 7.7 2222| 56.2 2223| 94.2 2224| 6.56 ± 0.65 22252226| `Scala (native)` 2227| 41.8 ± 3.9 2228| 32.2 2229| 51.5 2230| 3.20 ± 0.33 22312232| `Scala (GraalVM)` 2233| 68.7 ± 1.6 2234| 65.8 2235| 73.2 2236| 5.26 ± 0.25 2237|===22382239=== Comparsion for primitives22402241> Note: No results for Rust (alternative), slow benchmark, but only quick requested22422243> Note: No results for Go, slow benchmark, but only quick requested22442245> Note: No results for C++, can't run: uses up to 192GB of RAM22462247.Source2248[%collapsible]2249====2250[source,jsonnet]2251----2252([ i < j for i in std.range(1, 1000) for j in std.range(1, 1000)])22532254----2255====22562257[cols="<,>,>,>,>"]2258|===2259| Command 2260| Mean [ms] 2261| Min [ms] 2262| Max [ms] 2263| Relative 22642265| `Rust (current)` 2266| 90.3 ± 2.1 2267| 86.8 2268| 95.3 2269| 1.00 22702271| `Rust (current-experimental)` 2272| 97.9 ± 2.8 2273| 93.6 2274| 107.6 2275| 1.08 ± 0.04 22762277| `Rust (release)` 2278| 245.2 ± 6.2 2279| 230.5 2280| 256.4 2281| 2.72 ± 0.09 22822283| `Scala (native)` 2284| 224.5 ± 27.6 2285| 182.7 2286| 264.0 2287| 2.49 ± 0.31 22882289| `Scala (GraalVM)` 2290| 222.4 ± 4.1 2291| 215.6 2292| 231.6 2293| 2.46 ± 0.07 2294|===