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.217* Rust (alternative): rsjsonnet 2026-03-23 (27be31532180c611383ceb2b7f03193ab1253487)18* Rust: jrsonnet 0.5.0-pre9719====2021== Real world2223=== Graalvm CI2425> Note: No results for C++, takes longer than a hour2627[cols="<,>,>,>,>"]28|===29| Command 30| Mean [ms] 31| Min [ms] 32| Max [ms] 33| Relative 3435| `Rust` 36| 34.4 ± 1.2 37| 31.8 38| 37.3 39| 1.00 4041| `Rust (alternative, rsjsonnet)` 42| 68.5 ± 7.2 43| 54.3 44| 87.7 45| 1.99 ± 0.22 4647| `Go` 48| 600.3 ± 18.6 49| 566.1 50| 631.0 51| 17.47 ± 0.82 5253| `Scala (native)` 54| 69.6 ± 4.8 55| 56.6 56| 78.8 57| 2.03 ± 0.16 5859| `Scala (GraalVM)` 60| 65.1 ± 2.7 61| 56.9 62| 70.8 63| 1.90 ± 0.10 64|===6566=== Kube-prometheus manifests6768> Note: No results for C++, too slow, takes hours, skews results6970[cols="<,>,>,>,>"]71|===72| Command 73| Mean [ms] 74| Min [ms] 75| Max [ms] 76| Relative 7778| `Rust` 79| 43.6 ± 1.8 80| 38.5 81| 46.9 82| 1.00 8384| `Rust (alternative, rsjsonnet)` 85| 57.9 ± 2.6 86| 50.2 87| 64.5 88| 1.33 ± 0.08 8990| `Go` 91| 1068.4 ± 16.5 92| 1033.7 93| 1090.4 94| 24.52 ± 1.10 9596| `Scala (native)` 97| 204.6 ± 2.3 98| 201.8 99| 209.1 100| 4.70 ± 0.20 101102| `Scala (GraalVM)` 103| 183.7 ± 2.9 104| 179.0 105| 193.3 106| 4.22 ± 0.19 107|===108109== Benchmarks from C++ jsonnet (/perf_tests)110111=== Large string join112113.Source114[%collapsible]115====116[source,jsonnet]117----118{119 text: std.join(',', std.makeArray(76846, function(_) 'x')),120}121122----123====124125[cols="<,>,>,>,>"]126|===127| Command 128| Mean [ms] 129| Min [ms] 130| Max [ms] 131| Relative 132133| `Rust` 134| 2.6 ± 0.2 135| 2.3 136| 3.9 137| 1.00 138139| `Rust (alternative, rsjsonnet)` 140| 12.4 ± 1.7 141| 10.1 142| 19.5 143| 4.84 ± 0.78 144145| `Go` 146| 46.4 ± 2.9 147| 41.4 148| 55.9 149| 18.04 ± 1.90 150151| `Scala (native)` 152| 9.7 ± 0.9 153| 8.0 154| 13.9 155| 3.77 ± 0.47 156157| `Scala (GraalVM)` 158| 8.0 ± 0.6 159| 6.7 160| 10.7 161| 3.12 ± 0.35 162163| `C++` 164| 39.7 ± 2.9 165| 33.2 166| 48.3 167| 15.44 ± 1.74 168|===169170=== Large string template171172> Note: No results for Go, fails with os stack size exhausion173174> Note: No results for C++, too slow, takes hours, skews results175176[cols="<,>,>,>,>"]177|===178| Command 179| Mean [ms] 180| Min [ms] 181| Max [ms] 182| Relative 183184| `Rust` 185| 2.1 ± 0.2 186| 1.8 187| 3.2 188| 1.00 189190| `Rust (alternative, rsjsonnet)` 191| 3.3 ± 0.3 192| 2.9 193| 4.5 194| 1.56 ± 0.21 195196| `Scala (native)` 197| 14.5 ± 1.1 198| 12.2 199| 16.8 200| 6.91 ± 0.87 201202| `Scala (GraalVM)` 203| 13.9 ± 0.7 204| 12.0 205| 16.0 206| 6.63 ± 0.75 207|===208209=== Realistic 1210211> Note: No results for C++, too slow, takes hours, skews results212213.Source214[%collapsible]215====216[source,jsonnet]217----218local utils = {219 Func3(aaaaaaa, bbbbbbb, cccc)::220 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/%s/XXXXX/%s/XXXXXXXXXXXXXXX/%s'221 % [aaaaaaa, bbbbbbb, cccc],222};223224225local long_list = [226 '001xxxxxxxxxxxxxxx-xxx',227 '002xxxxxxxxxxxxxxxxxx-xxx',228 '003xxxxxxxxxxxxxxxx-xxxxxxx',229 '004xxxxxx-xxxxxx',230 '005xxxx-xxx-xxxx',231 '006xxx-xxx-xxxxxx',232 '007xxx-xxx-xxxx-xxxx',233 '008xxx-xxx-xxxx-xxxx-xxxxxxx',234 '009xxx-xxx-xxxxx-xxxx-xxxxxxx-xxxxxx',235 '010xxx-xxx-xxxx-xxxxxxx-xxxxxx-xxxxxxx',236 '011xxx-xxx-xxxxx-xxxxxxxx-xxxxxxx',237 '012xxx-xxx-xxxx-xxxxxxxx-xxxxxxx-xxxxxx',238 '013xxx-xxx-xxxx-xxxxxxxxxx',239 '014xxx-xxx-xxxxx-xxxxxx-xx',240 '015xxx-xxx-xxxxxx-xxxxxxx',241 '016xxx-xxx-xxxx-xxxxxxxx-xxxxx',242 '017xxx-xxx-xxxx-xxxxxxxxxxxxxxx',243 '018xxx-xxx-xxxx-xxxxxxxx-xxxxxxx-xxxxxxx',244 '019xxx-xxx-xxxx-xxxxxxxx-xx',245 '020xxx-xxx-xxxx-xxxxxxxxxxxxxxxx',246 '021xxx-xxx-xxxx-xxxxxxxx-xxxxxxxxxxxx-xxx',247 '022xxx-xxxx-xxxx-xxxx-xxxxxxx',248 '023xxx-xxxx-xxxx-xxx-xxxxxxx-xxxxxx-xxxxxxx',249 '024xxx-xxx-xxxx-xxx-xxxx-xxxx-xxx-xxxxxxxxx',250 '025xxx-xxxx-xxxx-xxxxxxxxx',251 '026xxx-xxx-xxxx-xxx-xxxxxxx',252 '027xxx-xxx-xxxx-xxx-xxxxxxx',253 '028xxx-xxx-xxxx-xxxxxxxxxx',254 '029xxx-xxx-xxxx-xxxxxx',255 '030xxx-xxx-xxxx-xxx-xxxxxxx',256 '031xxx-xxx-xxxx-xxx-xxxxxxxx',257 '032xxx-xxx-xxxxx-xxxxxxxxxxxx-xxxxxxx',258 '033xxx-xxx-xxxx-xxx-xxxx-xxxx',259 '034xxx-xxx-xxxx-xxx-xxxxxxxx-xxxxxxxx',260 '035xxx-xxx-xxxx-xxxxxxx',261 '036xxx-xxx-xxxx-xxxxxxxx-xxxxxxx',262 '037xxx-xxx-xxxx-xxxxxx',263 '038xxx-xxx-xxxx-xxxxxxxxxx',264 '039xxxx-xxx-xxxx-xxxxxx-xxxxxx-xxxxxxx',265 '040xxx-xxx-xxxx-xxxxxx-xxxxxxx',266 '041xxxx-xxx-xxxx-xxxxxx-xx',267 '042xxx-xxx-xxxx-xxxxxxxxxxx',268 '043xxx-xxx-xxxx-xxxxxxxxxxx-xxxxxxx',269 '044xxx-xxx-xxxx-xxxxxxx-xxx-xxxxxx',270 '045xxx-xxx-xxxx-xxxxxx-xxx-xxxxxx-xxx',271 '046xxx-xxx-xxxx-xxxxxx-xxx-xxxxxx-xxx',272 '047xxx-xxx-xxxx-xxxxxx-xxx-xxxxxx-xxxxxxx',273 '048xxx-xxx-xxxx-xxxxxx-xxx-xxxxxx-xxxxxxxx',274 '049xxx-xxx-xxxx-xxxxxx-xxx-xxxxxx-xxxxxxxxx',275 '050xxx-xxx-xxxxx-xxxxx-xxxxxxx',276 '051xxx-xxx-xxxx-xxxxx-xxxxxxxx-xxxxxx',277 '052xxx-xxx-xxxx-xxxxx-xx',278 '053xxx-xxx-xxxx-xxxx-xxxxxxx-xxx-xxxxxxx',279 '054xxx-xxx-xxxx-xxxx-xxxxxxx-xxx-xxxxxx',280 '055xxx-xxx-xxxx-xxx',281 '056xxx-xxx-xxxx-xxxxxxx-xxxxxxx',282 '057xxx-xxx-xxxx-xxxxxxx-xxx-xxxxxxx',283 '058xxx-xxx-xxxx-xxxxxxxxx-xxxxxx-xxxxxxx',284 '059xxx-xxx-xxxx-xx-xxxxxxxxxxx-xxxxx',285 '060xxx-xxx-xxxx-xxxxxxxxxxxxxx-xxxxxxx',286 '061xxx-xxx-xxxx-xxxxxxxx-xxxxxxx',287 '062xxx-xxx-xxxx-xxxxxxxxxxxxx-xxxxxxx',288 '063xxx-xxx-xxxx-xxxxxx-xxxxxxx',289 '064xxx-xxx-xxxxx-xxxxxx-xxxxxxx',290 '065xxx-xxx-xxxx-xxxxx-xxxxx',291 '066xxx-xxx-xxxx-xxxxx-xxxx',292 '067xxx-xxx-xxxx-xxxxxxxxxxxxxxxxx',293 '068xxx-xxx-xxxx-xxxxxxxx-xxxxx-xxx',294 '069xxx-xxx-xxxx-xxxxxxxx-xx-xxx-xxxxxxxx',295 '070xxx-xxx-xxxx-xxxxxxxx-xxxxxx-xxxxxxx',296 '071xxx-xxx-xxxx-xxxxxxxxxx',297 '072xxx-xxxx-xxxx-xxxxxxxxxxxxxxxx',298 '073xxx-xxx-xxxx-xxxxxx-xxxxxx-xxxxxxx',299 '074xxx-xxx-xxxx-xxxxxxx-xxxxxxxxxxxxx',300 '075xxx-xxx-xxxx-xxxxxxx-xxxxxxxxxxxxx-xxxxxxxxx',301 '076xxx-xxx-xxxx-xxxxxxxxxxxxx-xxxxxxx',302 '077xxx-xxx-xxxx-xxxxxxxxx-xxxxxxx-x2',303 '078xxx-xxx-xxxx-xxx',304 '079xxx-xxx-xxxx-xxxxxxxxxxxx',305 '080xxx-xxx-xxxx-xxxxxxxxx-xxxxxxxx',306 '081xxx-xxx-xxxx-xxxxxxxx-xxxxxxxxx',307 '082xxx-xxx-xxxx-xxxxxxxxx',308 '083xxx-xxx-xxxx-xxxxxxx',309 '084xxx-xxx-xxxx-xxxxxxx-xxxxxx',310 '085xxxx-xxx-xxxxxxx-xxxxx-xxxx',311 '086xxx-xxx-xxxxxxxx-xxxx-xxxxxxxxxx',312 '087xxx-xxx-xxxxxxx-xxxxxx-xxxxxxx',313 '088xxx-xxx-xxxxxxx-xxxxxxxx',314 '089xxx-xxx-xxxxxxxx-xxxxxxx',315 '090xxx-xxx-xxxxxxxx-xxxxxxx-xxxxxx',316 '091xxx-xxxx-xxxxxxxxxx',317 '092xxx-xxx-xxxxxx-xx',318 '093xxx-xxx-xxxxxxx',319 '094xxx-xxx-xxxxxxx-xxxxx',320 '095xxx-xxx-xxxxxxxxxx',321 '096xxx-xxx-xxxxxxxxxxxxxxx',322 '098xxx-xxx-xxxxxxxxxxxxxxxxx',323 '098xxx-xxx-xxxxxxxx-xxxxxxx-xxxxxxx',324 '099xxx-xxx-xxxxxxxx-xx',325 '100xxx-xxx-xxxx-xxxxxxxxxxx-xxxxxxx',326 '101xxx-xxxx-xxxxxxxxxxxxxxxx',327 '102xxx-xxx-xxxxxxxxxxxxxxxxxx',328 '103xxx-xxx-xxxxxxxx-xxxxxxxxxxxx-xxx',329 '104xxx-xxx-xxxx-xxxxxxx',330 '105xxx-xxx-xxx-xxxxxxx-xxxxxx-xxxxxxx',331 '106xxx-xxx-xxx-xxxx-xxxx-xxx-xxxxxxxxx',332 '107xxx-xxx-xxxxxxxxx',333 '108xxx-xxx-xxx-xxxxxxx',334 '109xxx-xxx-xxx-xxxxxxx',335 '110xxx-xxxx-xxxxx',336 '111xxx-xxx-xxx-xxxx-xxxx',337 '112xxx-xxx-xxx-xxxxxxx',338 '113xxx-xxx-xxx-xxxxxxx',339 '114xxx-xxx-xxxxxxxxxxxx-xxxxxxx',340 '115xxx-xxx-xxx-xxxx-xxxx',341 '116xxx-xxx-xxx-xxxxxxxx-xxxxxxxx',342 '117xxx-xxx-xxxxxxx',343 '118xxx-xxx-xxxxxxxx-xxxxxxx',344 '119xxx-xxx-xxxxxx',345 '120xxxx-xxx-xxxxxxxxxx',346 '121xxx-xxx-xxxxxx-xxxxxx-xxxxxxx',347 '122xxx-xxx-xxxxxx-xxxxxxx',348 '123xxx-xxx-xxxxxx-xx',349 '124xxxx-xxx-xxx-xxxx-xxxxxxx',350 '125xxx-xxx-xxxxxxxxxxx',351 '126xxx-xxx-xxxxxxxxxxx-xxxxxxx',352 '127xxx-xxx-xxxxxx-xxx-xxxxxx',353 '128xxx-xxx-xxxxxxxxxx',354 '129xxx-xxx-xxxxxxxxxx-xxx',355 '130xxx-xxx-xxxxx-xxxxxxx',356 '131xxx-xxx-xxxxxx-xxxxxxxx-xxx',357 '132xxx-xxx-xxxxx-xxxxxxxx-xxxxxx',358 '133xxx-xxx-xxxxx-xx',359 '134xxx-xxx-xxxx-xxxxxxx-xxx-xxxxxxx',360 '135xxx-xxx-xxxx-xxxxxxx-xxx-xxxxxx',361 '136xxx-xxx-xxxxxxxxxxxxxxx',362 '137xxx-xxx-xxx',363 '138xxx-xxx-xxxxxxx-xxxxxxx',364 '139xxx-xxx-xxxxxxx-xxx-xxxxxxx',365 '140xxx-xxx-xxxxxxxxx-xxxxxx-xxxxxxx',366 '141xxx-xxx-xxxxxxxxxx-xxxx-xxxxxxx',367 '142xxx-xxx-xx-xxxxxxxxxx-xxxxx',368 '143xxx-xxx-xxxxxxxxxxxxxx-xxxxxxx',369 '144xxx-xxx-xxxxxxxxxxxxxxxxx',370 '145xxx-xxx-xxxxxxxx-xxxxxxx',371 '146xxx-xxx-xxxxxxxxxxxxx-xxxxxxx',372 '147xxx-xxx-xxxxxxx-xxxxxxx',373 '148xxx-xxx-xxxxxx-xxxxxxx',374 '149xxx-xxx-xxxxx-xxxxx',375 '150xxx-xxx-xxxxx-xxxx',376 '151xxx-xxx-xxxxxxxxxxxxxxxxx',377 '152xxx-xxx-xxxxxxxxxxxxxxxxxxx',378 '153xxx-xxx-xxxxxxxxx-xxxxx-xxx',379 '154xxx-xxx-xxxxxxxx-xxxxx-xxxx-xxxx',380 '155xxx-xxx-xxxxxxxx-xxxxxxxxxxxx-xxxx',381 '156xxx-xxx-xxxxxxxx-xx-xxx-xxxxxxxx',382 '157xxx-xxx-xxxxxxxx-xxxxxx-xxxxxxx',383 '158xxx-xxx-xxxxxxxxxx',384 '159xxx-xxx-xxxx-xxxxxx',385 '160xxx-xxx-xxxxxxxxxx',386 '161xxx-xxx-xxxxxxxxxxxxx',387 '162xxx-xxx-xxxxxxxxxxxxxxxx',388 '163xxx-xxx-xxxxx-xxxxxx-xxxxxxx',389 '164xxx-xxx-xxxxxxx-xxxxxxxxxxxxx',390 '165xxx-xxx-xxxxxxxxxxxxxx-xxxxxxx',391 '166xxx-xxx-xxxxxxxxx-xxxxxxx-x2',392 '167xxx-xxx-xxx',393 '168xxx-xxx-xxxxxxxxxxxx',394 '169xxx-xxx-xxxxxxxxx-xxxxxxxx',395 '170xxx-xxx-xxxxxxxxx-xxx-xxxxxxx',396 '171xxx-xxx-xxxxxxxxx',397 '172xxx-xxxx-xxxxxxxxx',398 '173xxx-xxx',399 '174xxx-xxxxxx-xxxxxxx',400 '175xxx-xxxxxx-xxxxxx-xxxx',401 '176xxx-xxxxxx-xxxxx',402 '177xxx-xxxxx-xxxxxxxx',403 '178xxx-xxxxxx',404 '179xxx-xxxxxxx-xxxx',405 '180xxx-xxxxxxx-xxxx-xxxx',406 '181xxx-xxxxxxx-xxxx-xxxxxxx',407 '182xxx-xxxxxxx-xxxx-xxxxxxxxxxxxxxx',408 '183xxx-xxxxxxxx-xxxx-xxxxx',409 '184xxx-xxxxxxx-xxxx-xxxxxxx',410 '185xxx-xxxxxxx-xxxx-xxxxxxxx-xxxxxxx',411 '186xxx-xxxxxxx-xxxx-xxx',412 '187xxx-xxxxxxx-xxxx-xxxxxxx-xxx-xxxxxxx',413 '188xxx-xxxxxxx-xxxx-xxxxxxxxxxxxxx-xxxxxxx',414 '189xxx-xxxxxxxx-xxxx-xxxxxxxxxxxxxxxxx',415 '190xxx-xxxxxxx-xxxx-xxxxx-xxxxxx-xxxxxxx',416 '191xxx-xxxxxxx-xxxxxxxxxx',417 '192xxx-xxxxxxx-xxxxxxx',418 '193xxx-xxxxxxx-xxxxxxxxxxxxxxx',419 '194xxx-xxxxxxx-xxxxx',420 '195xxx-xxxxxxx-xxxxxxx',421 '196xxx-xxxxxxx-xxxxxxxx-xxxxxxx',422 '197xxx-xxxxxxx-xxx',423 '198xxx-xxxxxxx-xxxxxxx-xxx-xxxxxxx',424 '199xxx-xxxxxxx-xxxxxxxxxxxxxx-xxxxxxx',425 '200xxx-xxxxxxxx-xxxxxxxxxxxxxxxxx',426 '201xxx-xxxxxxx-xxxxx-xxxxxx-xxxxxxx',427 '202xxx-xxx',428 '203xxx-xxx-xxxxxx',429 '204xxxxxxxxx-xxx',430 '205xxxxxxxxxxx-xxx',431 '206xxxxxxxxx-xxxxxxx',432 '207xxxx-xxxxxx-xxxxxxxxxxx-xxxxx1',433 '208xxxx-xxxxxxxx-xxxxxxxx-xxxxx1',434 '209xxxx-xxxxxxx-xxxxxxx-xxxxx1',435 '209xxxx-xxxxxxx-xxxxxxx-xxxxx2',436 '210xxxx-xxxx-xxxxxxx-xxxxx1',437 '211xxxx-xxxxx-xxxxxxxx1-xxxxx1',438 '212xxxx-xxxx-xxxxxxxx2-xxxxx1',439 '213xxxx-xxxx-xxxxxxx1-xxxxx1',440 '214xxxx-xxxx-xxxxxxx2-xxxxx1',441 '215xxxxxxxxx-xxxxxx',442 '216xxxxxxxxx-xxxxxxx',443 '217xxxxxxxxx-xxxx',444];445446{447 'yyyyyyyyy': {448 local Func3(z, n) = utils.Func3('yyyyyyyyy', z, n),449450 global: {451 [n]: {452 members: [453 Func3(z, '%s-gggg-%s-%s' % [n, z, suffix]),454 for z in ['ooooooo-a', 'ooooooo-b', 'ooooooo-c',455 'ooooooo-a', 'ooooooo-b', 'ooooooo-c']456 for suffix in ['a', 'b', 'c']457 ],458 }459 for n in long_list460 },461 },462}463464----465====466467[cols="<,>,>,>,>"]468|===469| Command 470| Mean [ms] 471| Min [ms] 472| Max [ms] 473| Relative 474475| `Rust` 476| 5.9 ± 0.4 477| 5.4 478| 7.4 479| 1.00 480481| `Rust (alternative, rsjsonnet)` 482| 7.8 ± 0.4 483| 7.1 484| 9.2 485| 1.31 ± 0.11 486487| `Go` 488| 3158.3 ± 65.5 489| 3011.3 490| 3245.6 491| 531.91 ± 35.10 492493| `Scala (native)` 494| 12.7 ± 0.9 495| 10.6 496| 15.9 497| 2.15 ± 0.21 498499| `Scala (GraalVM)` 500| 13.8 ± 0.8 501| 11.7 502| 17.2 503| 2.32 ± 0.20 504|===505506=== Realistic 2507508> Note: No results for C++, too slow, takes hours, skews results509510.Source511[%collapsible]512====513[source,jsonnet]514----515local rfc3339(timestamp) = '1970-01-01T00:00:00Z';516517local name1(a, b, c) =518 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%sBBBBBBB%sCCCCCCCCCCC%s'519 % [a, b, c];520521local name2(x) =522 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX%s' % x;523524local T1 = 'PPPPPPPPPPPPPPPPPPPPPPP';525local T2 = 'QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ';526527local LOCATIONS = [528 'europe-west1-b',529 'europe-west1-c',530 'europe-west1-d',531 'europe-west2-a',532 'europe-west2-b',533 'europe-west2-c',534 'europe-west3-a',535 'europe-west3-b',536 'europe-west3-c',537 'europe-west4-a',538 'europe-west4-b',539 'europe-west4-c',540 'us-central1-a',541 'us-central1-b',542 'us-central1-c',543 'us-central1-f',544 'us-east1-b',545 'us-east1-c',546 'us-east1-d',547 'us-east4-a',548 'us-east4-b',549 'us-east4-c',550 'us-west1-a',551 'us-west1-b',552 'us-west1-c',553];554555556557function(558 timestamp=0,559 x='xxxxxxxxxxxxxxxxxxx',560 prefix='prefix',561 num1=50,562 count=25,563 offset=0,564)565 local rfc_timestamp = rfc3339(timestamp);566567 local func1(i) =568 local location = LOCATIONS[i % std.length(LOCATIONS)];569 [570 local name = '%s-%000d-%000d' % [prefix, i, j];571 {572 field_zz1: rfc_timestamp,573 fie_z2: {574 field_z3: name1(x, location, name),575 field_zzzzzzzzzz4: name2(x),576 field_zzz5: [name],577 field_z6: T1,578 field_z7: location,579 fi_8: '???',580 fiel_z9: '99',581 },582 }583 for j in std.range(0, num1 - 1)584 ];585586 local func2(i) =587 local location = LOCATIONS[i % std.length(LOCATIONS)];588 local all = [589 name1(x, location, '%s-%000d-%000d' % [prefix, i, j])590 for j in std.range(0, num1 - 1)591 ];592 [593 {594 field_yy1: rfc_timestamp,595 field_yyyyy2: 'EEEE',596 field_yyyyy3: {597 field_y4: T2,598 field_yyyyyyy5: p,599 field_yyyyyyy6: q,600 },601 }602 for p in all603 for q in all604 if p != q605 ];606607608 {609 field_x1: '-----',610 field_xxxxxxxxxxxxxxxx2: std.join([], [611 func1(offset * count + i)612 for i in std.range(0, count - 1)613 ]),614 field_xxxxxxxxxxxxxxxxxxxxxx3: std.join([], [615 func2(offset * count + i)616 for i in std.range(0, count - 1)617 ]),618 }619620621----622====623624[cols="<,>,>,>,>"]625|===626| Command 627| Mean [ms] 628| Min [ms] 629| Max [ms] 630| Relative 631632| `Rust` 633| 120.9 ± 3.5 634| 114.0 635| 127.1 636| 1.00 637638| `Rust (alternative, rsjsonnet)` 639| 163.4 ± 3.8 640| 154.4 641| 170.6 642| 1.35 ± 0.05 643644| `Go` 645| 3160.3 ± 54.6 646| 3034.7 647| 3242.9 648| 26.15 ± 0.87 649650| `Scala (native)` 651| 417.8 ± 4.2 652| 405.6 653| 426.0 654| 3.46 ± 0.10 655656| `Scala (GraalVM)` 657| 409.1 ± 4.5 658| 401.8 659| 421.4 660| 3.39 ± 0.10 661|===662663== Benchmarks from C++ jsonnet (/benchmarks)664665=== Tail call666667.Source668[%collapsible]669====670[source,jsonnet]671----672673674675676677678679680681682683684685686687688local sum(x) =689 if x == 0 then690 0691 else692 x + sum(x - 1);693sum(300)694695----696====697698[cols="<,>,>,>,>"]699|===700| Command 701| Mean [µs] 702| Min [µs] 703| Max [µs] 704| Relative 705706| `Rust` 707| 865.2 ± 106.0 708| 723.0 709| 1544.2 710| 1.00 711712| `Rust (alternative, rsjsonnet)` 713| 1200.9 ± 144.0 714| 1030.4 715| 2238.5 716| 1.39 ± 0.24 717718| `Go` 719| 2559.0 ± 187.5 720| 2033.0 721| 3289.3 722| 2.96 ± 0.42 723724| `Scala (native)` 725| 2406.8 ± 227.0 726| 2030.4 727| 3547.3 728| 2.78 ± 0.43 729730| `Scala (GraalVM)` 731| 1858.1 ± 184.4 732| 1434.9 733| 2770.1 734| 2.15 ± 0.34 735736| `C++` 737| 18460.1 ± 1115.1 738| 16827.0 739| 22068.8 740| 21.34 ± 2.91 741|===742743=== Inheritance recursion744745.Source746[%collapsible]747====748[source,jsonnet]749----750751752753754755756757758759760761762763764765766local Fib = {767 n: 1,768 local outer = self,769 r: if self.n <= 1 then 1 else (Fib { n: outer.n - 1 }).r + (Fib { n: outer.n - 2 }).r,770};771772(Fib { n: 25 }).r773774----775====776777[cols="<,>,>,>,>"]778|===779| Command 780| Mean [ms] 781| Min [ms] 782| Max [ms] 783| Relative 784785| `Rust` 786| 160.1 ± 2.0 787| 155.9 788| 163.7 789| 3.43 ± 0.10 790791| `Rust (alternative, rsjsonnet)` 792| 115.6 ± 1.6 793| 113.5 794| 119.3 795| 2.48 ± 0.07 796797| `Go` 798| 444.7 ± 8.6 799| 429.2 800| 467.9 801| 9.52 ± 0.31 802803| `Scala (native)` 804| 46.7 ± 1.2 805| 44.3 806| 50.2 807| 1.00 808809| `Scala (GraalVM)` 810| 58.3 ± 1.6 811| 55.1 812| 61.5 813| 1.25 ± 0.05 814815| `C++` 816| 1216.9 ± 9.0 817| 1204.7 818| 1237.2 819| 26.06 ± 0.69 820|===821822=== Simple recursive call823824.Source825[%collapsible]826====827[source,jsonnet]828----829830831832833834835836837838839840841842843844845local fibonacci(n) =846 if n <= 1 then847 1848 else849 fibonacci(n - 1) + fibonacci(n - 2);850851fibonacci(25)852853----854====855856[cols="<,>,>,>,>"]857|===858| Command 859| Mean [ms] 860| Min [ms] 861| Max [ms] 862| Relative 863864| `Rust` 865| 35.8 ± 0.7 866| 34.1 867| 37.5 868| 1.99 ± 0.10 869870| `Rust (alternative, rsjsonnet)` 871| 39.9 ± 1.6 872| 37.6 873| 48.9 874| 2.22 ± 0.13 875876| `Go` 877| 194.3 ± 4.2 878| 187.4 879| 205.0 880| 10.81 ± 0.54 881882| `Scala (native)` 883| 18.0 ± 0.8 884| 16.5 885| 20.6 886| 1.00 887888| `Scala (GraalVM)` 889| 25.2 ± 0.9 890| 23.2 891| 28.4 892| 1.40 ± 0.08 893894| `C++` 895| 78.8 ± 1.5 896| 74.9 897| 82.1 898| 4.38 ± 0.21 899|===900901=== Foldl string concat902903.Source904[%collapsible]905====906[source,jsonnet]907----908std.foldl(function(e, res) e + res, std.makeArray(20000, function(i) 'aaaaa'), '')909910----911====912913[cols="<,>,>,>,>"]914|===915| Command 916| Mean [ms] 917| Min [ms] 918| Max [ms] 919| Relative 920921| `Rust` 922| 3.7 ± 0.3 923| 3.4 924| 5.0 925| 1.00 926927| `Rust (alternative, rsjsonnet)` 928| 96.0 ± 1.7 929| 94.2 930| 99.7 931| 25.82 ± 2.05 932933| `Go` 934| 4076.3 ± 32.7 935| 4016.9 936| 4129.6 937| 1096.62 ± 85.35 938939| `Scala (native)` 940| 328.6 ± 33.7 941| 267.8 942| 406.5 943| 88.40 ± 11.37 944945| `Scala (GraalVM)` 946| 420.9 ± 10.7 947| 387.9 948| 436.4 949| 113.22 ± 9.23 950951| `C++` 952| 564.6 ± 6.1 953| 551.0 954| 575.6 955| 151.90 ± 11.88 956|===957958=== Array sorts959960.Source961[%collapsible]962====963[source,jsonnet]964----965966967local reverse = std.reverse;968local sort = std.sort;969970true971&& std.assertEqual(std.range(1, 500), sort(std.range(1, 500)))972&& std.assertEqual(std.range(1, 1000), sort(std.range(1, 1000)))973&& std.assertEqual(reverse(std.range(1, 1000)), sort(std.range(1, 1000), keyF=function(x) -x))974&& std.assertEqual(std.range(1, 1000), sort(reverse(std.range(1, 1000))))975&& std.assertEqual(std.makeArray(2000, function(i) std.floor((i + 2) / 2)), sort(std.range(1, 1000) + reverse(std.range(1, 1000))))976977----978====979980[cols="<,>,>,>,>"]981|===982| Command 983| Mean [ms] 984| Min [ms] 985| Max [ms] 986| Relative 987988| `Rust` 989| 1.3 ± 0.1 990| 1.2 991| 2.3 992| 1.00 993994| `Rust (alternative, rsjsonnet)` 995| 3.4 ± 0.2 996| 3.1 997| 5.5 998| 2.52 ± 0.30 9991000| `Go` 1001| 5.4 ± 0.3 1002| 4.8 1003| 6.5 1004| 4.05 ± 0.43 10051006| `Scala (native)` 1007| 4.2 ± 0.4 1008| 3.5 1009| 5.8 1010| 3.09 ± 0.41 10111012| `Scala (GraalVM)` 1013| 3.0 ± 0.3 1014| 2.4 1015| 5.1 1016| 2.21 ± 0.30 10171018| `C++` 1019| 2057.1 ± 19.0 1020| 2020.1 1021| 2093.3 1022| 1531.53 ± 146.37 1023|===10241025=== Lazy array10261027.Source1028[%collapsible]1029====1030[source,jsonnet]1031----1032local f2(f) = function(x) f(f(x));1033local id(x) = x;10341035local slowId = std.makeArray(20, function(i) if i == 0 then id else f2(slowId[i - 1]));10361037slowId[15](42)10381039----1040====10411042[cols="<,>,>,>,>"]1043|===1044| Command 1045| Mean [ms] 1046| Min [ms] 1047| Max [ms] 1048| Relative 10491050| `Rust` 1051| 54.8 ± 6.6 1052| 42.7 1053| 65.5 1054| 5.12 ± 0.72 10551056| `Rust (alternative, rsjsonnet)` 1057| 10.7 ± 0.8 1058| 9.6 1059| 14.7 1060| 1.00 10611062| `Go` 1063| 385.8 ± 8.2 1064| 373.7 1065| 402.5 1066| 36.03 ± 2.72 10671068| `Scala (native)` 1069| 19.3 ± 1.4 1070| 15.9 1071| 22.1 1072| 1.81 ± 0.18 10731074| `Scala (GraalVM)` 1075| 18.5 ± 1.4 1076| 14.1 1077| 21.2 1078| 1.72 ± 0.18 10791080| `C++` 1081| 103.5 ± 2.5 1082| 99.3 1083| 109.7 1084| 9.67 ± 0.74 1085|===10861087=== Inheritance function recursion10881089.Source1090[%collapsible]1091====1092[source,jsonnet]1093----1094local fibnext = {1095 a: super.a + super.b,1096 b: super.a,1097};1098local fib(n) =1099 if n == 0 then1100 { a: 1, b: 1 }1101 else1102 fib(n - 1) + fibnext;11031104fib(25)11051106----1107====11081109[cols="<,>,>,>,>"]1110|===1111| Command 1112| Mean [µs] 1113| Min [µs] 1114| Max [µs] 1115| Relative 11161117| `Rust` 1118| 743.5 ± 89.5 1119| 625.2 1120| 1784.7 1121| 1.00 11221123| `Rust (alternative, rsjsonnet)` 1124| 1180.2 ± 144.6 1125| 1017.7 1126| 2210.2 1127| 1.59 ± 0.27 11281129| `Go` 1130| 1414.3 ± 71.8 1131| 1174.2 1132| 2001.0 1133| 1.90 ± 0.25 11341135| `Scala (native)` 1136| 2394.1 ± 237.9 1137| 2011.3 1138| 4013.8 1139| 3.22 ± 0.50 11401141| `Scala (GraalVM)` 1142| 1814.9 ± 205.1 1143| 1439.8 1144| 2826.0 1145| 2.44 ± 0.40 11461147| `C++` 1148| 789224.2 ± 7732.9 1149| 768789.6 1150| 805741.8 1151| 1061.50 ± 128.22 1152|===11531154=== String strips11551156> Note: No results for C++, too slow, takes hours, skews results11571158.Source1159[%collapsible]1160====1161[source,jsonnet]1162----11631164local veryLongString = std.join('', std.repeat(['e'], 510));11651166std.assertEqual(std.stripChars(veryLongString + 'ok' + veryLongString, 'e'), 'ok') &&1167std.assertEqual(std.lstripChars(veryLongString + 'ok', 'e'), 'ok') &&1168std.assertEqual(std.rstripChars('ok' + veryLongString, 'e'), 'ok') &&11691170true11711172----1173====11741175[cols="<,>,>,>,>"]1176|===1177| Command 1178| Mean [µs] 1179| Min [µs] 1180| Max [µs] 1181| Relative 11821183| `Rust` 1184| 751.5 ± 98.9 1185| 625.9 1186| 1451.6 1187| 1.00 11881189| `Rust (alternative, rsjsonnet)` 1190| 1182.3 ± 147.4 1191| 1018.3 1192| 2328.8 1193| 1.57 ± 0.29 11941195| `Go` 1196| 5375.9 ± 293.0 1197| 4843.7 1198| 6930.0 1199| 7.15 ± 1.02 12001201| `Scala (native)` 1202| 2377.2 ± 226.5 1203| 2029.3 1204| 3675.7 1205| 3.16 ± 0.51 12061207| `Scala (GraalVM)` 1208| 1884.6 ± 188.5 1209| 1486.8 1210| 3105.8 1211| 2.51 ± 0.41 1212|===12131214=== Big object12151216.Source1217[%collapsible]1218====1219[source,jsonnet]1220----12211222local n = 2000;12231224local objLocal(name, body) = 'local ' + name + ' = ' + body + ',';1225local objField(name, body) = name + ': ' + body + ',';12261227local allLocals =1228 std.makeArray(n, function(i) objLocal('l' + i, '1'));12291230local allFields =1231 std.makeArray(n, function(i) objField('f' + i, '2'));12321233local indent = ' ';1234local indentAndSeparate(s) = indent + s + '\n';12351236local objContents = std.map(indentAndSeparate, allLocals + allFields);12371238local objectBody = std.join('', objContents);1239'{\n' + objectBody + '}\n'12401241----1242====12431244[cols="<,>,>,>,>"]1245|===1246| Command 1247| Mean [µs] 1248| Min [µs] 1249| Max [µs] 1250| Relative 12511252| `Rust` 1253| 839.2 ± 97.2 1254| 704.3 1255| 1562.2 1256| 1.00 12571258| `Rust (alternative, rsjsonnet)` 1259| 1312.8 ± 146.1 1260| 1129.8 1261| 2440.5 1262| 1.56 ± 0.25 12631264| `Go` 1265| 2544.5 ± 118.7 1266| 2262.5 1267| 3078.4 1268| 3.03 ± 0.38 12691270| `Scala (native)` 1271| 3756.8 ± 386.3 1272| 3205.7 1273| 5865.4 1274| 4.48 ± 0.69 12751276| `Scala (GraalVM)` 1277| 3035.7 ± 269.8 1278| 2498.4 1279| 4461.3 1280| 3.62 ± 0.53 12811282| `C++` 1283| 16199.6 ± 864.3 1284| 14763.2 1285| 19331.2 1286| 19.30 ± 2.46 1287|===12881289== Benchmarks from Go jsonnet (builtins)12901291=== std.base6412921293> Note: No results for C++, too slow, takes hours, skews results12941295.Source1296[%collapsible]1297====1298[source,jsonnet]1299----1300{1301 foo: [1302 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)1303 ],1304}1305----1306====13071308[cols="<,>,>,>,>"]1309|===1310| Command 1311| Mean [ms] 1312| Min [ms] 1313| Max [ms] 1314| Relative 13151316| `Rust` 1317| 1.2 ± 0.1 1318| 1.1 1319| 2.4 1320| 1.00 13211322| `Rust (alternative, rsjsonnet)` 1323| 2.3 ± 0.2 1324| 2.1 1325| 3.5 1326| 1.89 ± 0.27 13271328| `Go` 1329| 8.1 ± 0.4 1330| 7.4 1331| 9.8 1332| 6.54 ± 0.79 13331334| `Scala (native)` 1335| 4.8 ± 0.4 1336| 4.1 1337| 6.6 1338| 3.89 ± 0.56 13391340| `Scala (GraalVM)` 1341| 3.5 ± 0.3 1342| 2.9 1343| 4.6 1344| 2.83 ± 0.38 1345|===13461347=== std.base64Decode13481349.Source1350[%collapsible]1351====1352[source,jsonnet]1353----1354{1355 foo: [1356 std.base64Decode("TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdCwgc2VkIGRvIGVpdXNtb2QgdGVtcG9yIGluY2lkaWR1bnQgdXQgbGFib3JlIGV0IGRvbG9yZSBtYWduYSBhbGlxdWEuIFNlZCB0dXJwaXMgdGluY2lkdW50IGlkIGFsaXF1ZXQgcmlzdXMuIEVnZXQgbWF1cmlzIHBoYXJldHJhIGV0IHVsdHJpY2VzIG5lcXVlIG9ybmFyZSBhZW5lYW4gZXVpc21vZC4gRGlhbSBxdWlzIGVuaW0gbG9ib3J0aXMgc2NlbGVyaXNxdWUgZmVybWVudHVtLiBWYXJpdXMgZHVpcyBhdCBjb25zZWN0ZXR1ciBsb3JlbSBkb25lYyBtYXNzYSBzYXBpZW4uIERpYW0gc2l0IGFtZXQgbmlzbCBzdXNjaXBpdCBhZGlwaXNjaW5nIGJpYmVuZHVtIGVzdCB1bHRyaWNpZXMgaW50ZWdlci4gTGVjdHVzIHVybmEgZHVpcyBjb252YWxsaXMgY29udmFsbGlzIHRlbGx1cy4gTmliaCBpcHN1bSBjb25zZXF1YXQgbmlzbCB2ZWwgcHJldGl1bSBsZWN0dXMgcXVhbSBpZCBsZW8uIEZldWdpYXQgaW4gYW50ZSBtZXR1cyBkaWN0dW0gYXQgdGVtcG9yIGNvbW1vZG8uIFZlbGl0IGRpZ25pc3NpbSBzb2RhbGVzIHV0IGV1IHNlbSBpbnRlZ2VyLiBEaWN0dW0gc2l0IGFtZXQganVzdG8gZG9uZWMuIFNjZWxlcmlzcXVlIG1hdXJpcyBwZWxsZW50ZXNxdWUgcHVsdmluYXIgcGVsbGVudGVzcXVlIGhhYml0YW50IG1vcmJpIHRyaXN0aXF1ZSBzZW5lY3R1cy4gTG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdCwgc2VkIGRvIGVpdXNtb2QgdGVtcG9yIGluY2lkaWR1bnQgdXQgbGFib3JlIGV0IGRvbG9yZSBtYWduYSBhbGlxdWEuIFNlZCB0dXJwaXMgdGluY2lkdW50IGlkIGFsaXF1ZXQgcmlzdXMuIEVnZXQgbWF1cmlzIHBoYXJldHJhIGV0IHVsdHJpY2VzIG5lcXVlIG9ybmFyZSBhZW5lYW4gZXVpc21vZC4gRGlhbSBxdWlzIGVuaW0gbG9ib3J0aXMgc2NlbGVyaXNxdWUgZmVybWVudHVtLiBWYXJpdXMgZHVpcyBhdCBjb25zZWN0ZXR1ciBsb3JlbSBkb25lYyBtYXNzYSBzYXBpZW4uIERpYW0gc2l0IGFtZXQgbmlzbCBzdXNjaXBpdCBhZGlwaXNjaW5nIGJpYmVuZHVtIGVzdCB1bHRyaWNpZXMgaW50ZWdlci4gTGVjdHVzIHVybmEgZHVpcyBjb252YWxsaXMgY29udmFsbGlzIHRlbGx1cy4gTmliaCBpcHN1bSBjb25zZXF1YXQgbmlzbCB2ZWwgcHJldGl1bSBsZWN0dXMgcXVhbSBpZCBsZW8uIEZldWdpYXQgaW4gYW50ZSBtZXR1cyBkaWN0dW0gYXQgdGVtcG9yIGNvbW1vZG8uIFZlbGl0IGRpZ25pc3NpbSBzb2RhbGVzIHV0IGV1IHNlbSBpbnRlZ2VyLiBEaWN0dW0gc2l0IGFtZXQganVzdG8gZG9uZWMuIFNjZWxlcmlzcXVlIG1hdXJpcyBwZWxsZW50ZXNxdWUgcHVsdmluYXIgcGVsbGVudGVzcXVlIGhhYml0YW50IG1vcmJpIHRyaXN0aXF1ZSBzZW5lY3R1cy4gTG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdCwgc2VkIGRvIGVpdXNtb2QgdGVtcG9yIGluY2lkaWR1bnQgdXQgbGFib3JlIGV0IGRvbG9yZSBtYWduYSBhbGlxdWEuIFNlZCB0dXJwaXMgdGluY2lkdW50IGlkIGFsaXF1ZXQgcmlzdXMuIEVnZXQgbWF1cmlzIHBoYXJldHJhIGV0IHVsdHJpY2VzIG5lcXVlIG9ybmFyZSBhZW5lYW4gZXVpc21vZC4gRGlhbSBxdWlzIGVuaW0gbG9ib3J0aXMgc2NlbGVyaXNxdWUgZmVybWVudHVtLiBWYXJpdXMgZHVpcyBhdCBjb25zZWN0ZXR1ciBsb3JlbSBkb25lYyBtYXNzYSBzYXBpZW4uIERpYW0gc2l0IGFtZXQgbmlzbCBzdXNjaXBpdCBhZGlwaXNjaW5nIGJpYmVuZHVtIGVzdCB1bHRyaWNpZXMgaW50ZWdlci4gTGVjdHVzIHVybmEgZHVpcyBjb252YWxsaXMgY29udmFsbGlzIHRlbGx1cy4gTmliaCBpcHN1bSBjb25zZXF1YXQgbmlzbCB2ZWwgcHJldGl1bSBsZWN0dXMgcXVhbSBpZCBsZW8uIEZldWdpYXQgaW4gYW50ZSBtZXR1cyBkaWN0dW0gYXQgdGVtcG9yIGNvbW1vZG8uIFZlbGl0IGRpZ25pc3NpbSBzb2RhbGVzIHV0IGV1IHNlbSBpbnRlZ2VyLiBEaWN0dW0gc2l0IGFtZXQganVzdG8gZG9uZWMuIFNjZWxlcmlzcXVlIG1hdXJpcyBwZWxsZW50ZXNxdWUgcHVsdmluYXIgcGVsbGVudGVzcXVlIGhhYml0YW50IG1vcmJpIHRyaXN0aXF1ZSBzZW5lY3R1cy5Mb3JlbSBpcHN1bSBkb2xvciBzaXQgYW1ldCwgY29uc2VjdGV0dXIgYWRpcGlzY2luZyBlbGl0LCBzZWQgZG8gZWl1c21vZCB0ZW1wb3IgaW5jaWRpZHVudCB1dCBsYWJvcmUgZXQgZG9sb3JlIG1hZ25hIGFsaXF1YS4gU2VkIHR1cnBpcyB0aW5jaWR1bnQgaWQgYWxpcXVldCByaXN1cy4gRWdldCBtYXVyaXMgcGhhcmV0cmEgZXQgdWx0cmljZXMgbmVxdWUgb3JuYXJlIGFlbmVhbiBldWlzbW9kLiBEaWFtIHF1aXMgZW5pbSBsb2JvcnRpcyBzY2VsZXJpc3F1ZSBmZXJtZW50dW0uIFZhcml1cyBkdWlzIGF0IGNvbnNlY3RldHVyIGxvcmVtIGRvbmVjIG1hc3NhIHNhcGllbi4gRGlhbSBzaXQgYW1ldCBuaXNsIHN1c2NpcGl0IGFkaXBpc2NpbmcgYmliZW5kdW0gZXN0IHVsdHJpY2llcyBpbnRlZ2VyLiBMZWN0dXMgdXJuYSBkdWlzIGNvbnZhbGxpcyBjb252YWxsaXMgdGVsbHVzLiBOaWJoIGlwc3VtIGNvbnNlcXVhdCBuaXNsIHZlbCBwcmV0aXVtIGxlY3R1cyBxdWFtIGlkIGxlby4gRmV1Z2lhdCBpbiBhbnRlIG1ldHVzIGRpY3R1bSBhdCB0ZW1wb3IgY29tbW9kby4gVmVsaXQgZGlnbmlzc2ltIHNvZGFsZXMgdXQgZXUgc2VtIGludGVnZXIuIERpY3R1bSBzaXQgYW1ldCBqdXN0byBkb25lYy4gU2NlbGVyaXNxdWUgbWF1cmlzIHBlbGxlbnRlc3F1ZSBwdWx2aW5hciBwZWxsZW50ZXNxdWUgaGFiaXRhbnQgbW9yYmkgdHJpc3RpcXVlIHNlbmVjdHVzLiBMb3JlbSBpcHN1bSBkb2xvciBzaXQgYW1ldCwgY29uc2VjdGV0dXIgYWRpcGlzY2luZyBlbGl0LCBzZWQgZG8gZWl1c21vZCB0ZW1wb3IgaW5jaWRpZHVudCB1dCBsYWJvcmUgZXQgZG9sb3JlIG1hZ25hIGFsaXF1YS4gU2VkIHR1cnBpcyB0aW5jaWR1bnQgaWQgYWxpcXVldCByaXN1cy4gRWdldCBtYXVyaXMgcGhhcmV0cmEgZXQgdWx0cmljZXMgbmVxdWUgb3JuYXJlIGFlbmVhbiBldWlzbW9kLiBEaWFtIHF1aXMgZW5pbSBsb2JvcnRpcyBzY2VsZXJpc3F1ZSBmZXJtZW50dW0uIFZhcml1cyBkdWlzIGF0IGNvbnNlY3RldHVyIGxvcmVtIGRvbmVjIG1hc3NhIHNhcGllbi4gRGlhbSBzaXQgYW1ldCBuaXNsIHN1c2NpcGl0IGFkaXBpc2NpbmcgYmliZW5kdW0gZXN0IHVsdHJpY2llcyBpbnRlZ2VyLiBMZWN0dXMgdXJuYSBkdWlzIGNvbnZhbGxpcyBjb252YWxsaXMgdGVsbHVzLiBOaWJoIGlwc3VtIGNvbnNlcXVhdCBuaXNsIHZlbCBwcmV0aXVtIGxlY3R1cyBxdWFtIGlkIGxlby4gRmV1Z2lhdCBpbiBhbnRlIG1ldHVzIGRpY3R1bSBhdCB0ZW1wb3IgY29tbW9kby4gVmVsaXQgZGlnbmlzc2ltIHNvZGFsZXMgdXQgZXUgc2VtIGludGVnZXIuIERpY3R1bSBzaXQgYW1ldCBqdXN0byBkb25lYy4gU2NlbGVyaXNxdWUgbWF1cmlzIHBlbGxlbnRlc3F1ZSBwdWx2aW5hciBwZWxsZW50ZXNxdWUgaGFiaXRhbnQgbW9yYmkgdHJpc3RpcXVlIHNlbmVjdHVzLiBTY2VsZXJpc3F1ZSBtYXVyaXMgcGVsbGVudGVzcXVlIHB1bHZpbmFyIHBlbGxlbnRlc3F1ZSBoYWJpdGFudCBtb3JiaSB0cmlzdGlxdWUgc2VuZWN0dXMuIFNjZWxlcmlzcXVlIG1hdXJpcyBwZWxsZW50ZXNxdWUgcHVsdmluYXIgcGVsbGVudGVzcXVlIGhhYml0YW50IG1vcmJpIHRyaXN0aXF1ZSBzZW5lY3R1cy4gU2NlbGVyaXNxdWUgbWF1cmlzIHBlbGxlbnRlc3F1ZSBwdWx2aW5hciBwZWxsZW50ZXNxdWUgaGFiaXRhbnQgbW9yYmkgdHJpc3RpcXVlIHNlbmVjdHVzLiBTY2VsZXJpc3F1ZSBtYXVyaXMgcGVsbGVudGVzcXVlIHB1bHZpbmFyIHBlbGxlbnRlc3F1ZSBoYWJpdGFudCBtb3JiaSB0cmlzdGlxdWUgc2VuZWN0dXMuIFNjZWxlcmlzcXVlIG1hdXJpcyBwZWxsZW50ZXNxdWUgcHVsdmluYXIgcGVsbGVudGVzcXVlIGhhYml0YW50IG1vcmJpIHRyaXN0aXF1ZSBzZW5lY3R1cy4=") for i in std.range(0,100)1357 ],1358}1359----1360====13611362[cols="<,>,>,>,>"]1363|===1364| Command 1365| Mean [ms] 1366| Min [ms] 1367| Max [ms] 1368| Relative 13691370| `Rust` 1371| 1.2 ± 0.1 1372| 1.1 1373| 2.2 1374| 1.00 13751376| `Rust (alternative, rsjsonnet)` 1377| 2.8 ± 0.2 1378| 2.6 1379| 4.1 1380| 2.37 ± 0.32 13811382| `Go` 1383| 7.4 ± 0.4 1384| 6.8 1385| 10.5 1386| 6.21 ± 0.77 13871388| `Scala (native)` 1389| 4.2 ± 0.4 1390| 3.6 1391| 5.6 1392| 3.57 ± 0.52 13931394| `Scala (GraalVM)` 1395| 3.1 ± 0.2 1396| 2.5 1397| 4.2 1398| 2.58 ± 0.36 13991400| `C++` 1401| 4819.0 ± 22.8 1402| 4775.1 1403| 4863.2 1404| 4068.77 ± 454.41 1405|===14061407=== std.base64DecodeBytes14081409.Source1410[%collapsible]1411====1412[source,jsonnet]1413----1414{1415 foo: [1416 std.base64DecodeBytes("TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdCwgc2VkIGRvIGVpdXNtb2QgdGVtcG9yIGluY2lkaWR1bnQgdXQgbGFib3JlIGV0IGRvbG9yZSBtYWduYSBhbGlxdWEuIFNlZCB0dXJwaXMgdGluY2lkdW50IGlkIGFsaXF1ZXQgcmlzdXMuIEVnZXQgbWF1cmlzIHBoYXJldHJhIGV0IHVsdHJpY2VzIG5lcXVlIG9ybmFyZSBhZW5lYW4gZXVpc21vZC4gRGlhbSBxdWlzIGVuaW0gbG9ib3J0aXMgc2NlbGVyaXNxdWUgZmVybWVudHVtLiBWYXJpdXMgZHVpcyBhdCBjb25zZWN0ZXR1ciBsb3JlbSBkb25lYyBtYXNzYSBzYXBpZW4uIERpYW0gc2l0IGFtZXQgbmlzbCBzdXNjaXBpdCBhZGlwaXNjaW5nIGJpYmVuZHVtIGVzdCB1bHRyaWNpZXMgaW50ZWdlci4gTGVjdHVzIHVybmEgZHVpcyBjb252YWxsaXMgY29udmFsbGlzIHRlbGx1cy4gTmliaCBpcHN1bSBjb25zZXF1YXQgbmlzbCB2ZWwgcHJldGl1bSBsZWN0dXMgcXVhbSBpZCBsZW8uIEZldWdpYXQgaW4gYW50ZSBtZXR1cyBkaWN0dW0gYXQgdGVtcG9yIGNvbW1vZG8uIFZlbGl0IGRpZ25pc3NpbSBzb2RhbGVzIHV0IGV1IHNlbSBpbnRlZ2VyLiBEaWN0dW0gc2l0IGFtZXQganVzdG8gZG9uZWMuIFNjZWxlcmlzcXVlIG1hdXJpcyBwZWxsZW50ZXNxdWUgcHVsdmluYXIgcGVsbGVudGVzcXVlIGhhYml0YW50IG1vcmJpIHRyaXN0aXF1ZSBzZW5lY3R1cy4gTG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdCwgc2VkIGRvIGVpdXNtb2QgdGVtcG9yIGluY2lkaWR1bnQgdXQgbGFib3JlIGV0IGRvbG9yZSBtYWduYSBhbGlxdWEuIFNlZCB0dXJwaXMgdGluY2lkdW50IGlkIGFsaXF1ZXQgcmlzdXMuIEVnZXQgbWF1cmlzIHBoYXJldHJhIGV0IHVsdHJpY2VzIG5lcXVlIG9ybmFyZSBhZW5lYW4gZXVpc21vZC4gRGlhbSBxdWlzIGVuaW0gbG9ib3J0aXMgc2NlbGVyaXNxdWUgZmVybWVudHVtLiBWYXJpdXMgZHVpcyBhdCBjb25zZWN0ZXR1ciBsb3JlbSBkb25lYyBtYXNzYSBzYXBpZW4uIERpYW0gc2l0IGFtZXQgbmlzbCBzdXNjaXBpdCBhZGlwaXNjaW5nIGJpYmVuZHVtIGVzdCB1bHRyaWNpZXMgaW50ZWdlci4gTGVjdHVzIHVybmEgZHVpcyBjb252YWxsaXMgY29udmFsbGlzIHRlbGx1cy4gTmliaCBpcHN1bSBjb25zZXF1YXQgbmlzbCB2ZWwgcHJldGl1bSBsZWN0dXMgcXVhbSBpZCBsZW8uIEZldWdpYXQgaW4gYW50ZSBtZXR1cyBkaWN0dW0gYXQgdGVtcG9yIGNvbW1vZG8uIFZlbGl0IGRpZ25pc3NpbSBzb2RhbGVzIHV0IGV1IHNlbSBpbnRlZ2VyLiBEaWN0dW0gc2l0IGFtZXQganVzdG8gZG9uZWMuIFNjZWxlcmlzcXVlIG1hdXJpcyBwZWxsZW50ZXNxdWUgcHVsdmluYXIgcGVsbGVudGVzcXVlIGhhYml0YW50IG1vcmJpIHRyaXN0aXF1ZSBzZW5lY3R1cy4gTG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdCwgc2VkIGRvIGVpdXNtb2QgdGVtcG9yIGluY2lkaWR1bnQgdXQgbGFib3JlIGV0IGRvbG9yZSBtYWduYSBhbGlxdWEuIFNlZCB0dXJwaXMgdGluY2lkdW50IGlkIGFsaXF1ZXQgcmlzdXMuIEVnZXQgbWF1cmlzIHBoYXJldHJhIGV0IHVsdHJpY2VzIG5lcXVlIG9ybmFyZSBhZW5lYW4gZXVpc21vZC4gRGlhbSBxdWlzIGVuaW0gbG9ib3J0aXMgc2NlbGVyaXNxdWUgZmVybWVudHVtLiBWYXJpdXMgZHVpcyBhdCBjb25zZWN0ZXR1ciBsb3JlbSBkb25lYyBtYXNzYSBzYXBpZW4uIERpYW0gc2l0IGFtZXQgbmlzbCBzdXNjaXBpdCBhZGlwaXNjaW5nIGJpYmVuZHVtIGVzdCB1bHRyaWNpZXMgaW50ZWdlci4gTGVjdHVzIHVybmEgZHVpcyBjb252YWxsaXMgY29udmFsbGlzIHRlbGx1cy4gTmliaCBpcHN1bSBjb25zZXF1YXQgbmlzbCB2ZWwgcHJldGl1bSBsZWN0dXMgcXVhbSBpZCBsZW8uIEZldWdpYXQgaW4gYW50ZSBtZXR1cyBkaWN0dW0gYXQgdGVtcG9yIGNvbW1vZG8uIFZlbGl0IGRpZ25pc3NpbSBzb2RhbGVzIHV0IGV1IHNlbSBpbnRlZ2VyLiBEaWN0dW0gc2l0IGFtZXQganVzdG8gZG9uZWMuIFNjZWxlcmlzcXVlIG1hdXJpcyBwZWxsZW50ZXNxdWUgcHVsdmluYXIgcGVsbGVudGVzcXVlIGhhYml0YW50IG1vcmJpIHRyaXN0aXF1ZSBzZW5lY3R1cy5Mb3JlbSBpcHN1bSBkb2xvciBzaXQgYW1ldCwgY29uc2VjdGV0dXIgYWRpcGlzY2luZyBlbGl0LCBzZWQgZG8gZWl1c21vZCB0ZW1wb3IgaW5jaWRpZHVudCB1dCBsYWJvcmUgZXQgZG9sb3JlIG1hZ25hIGFsaXF1YS4gU2VkIHR1cnBpcyB0aW5jaWR1bnQgaWQgYWxpcXVldCByaXN1cy4gRWdldCBtYXVyaXMgcGhhcmV0cmEgZXQgdWx0cmljZXMgbmVxdWUgb3JuYXJlIGFlbmVhbiBldWlzbW9kLiBEaWFtIHF1aXMgZW5pbSBsb2JvcnRpcyBzY2VsZXJpc3F1ZSBmZXJtZW50dW0uIFZhcml1cyBkdWlzIGF0IGNvbnNlY3RldHVyIGxvcmVtIGRvbmVjIG1hc3NhIHNhcGllbi4gRGlhbSBzaXQgYW1ldCBuaXNsIHN1c2NpcGl0IGFkaXBpc2NpbmcgYmliZW5kdW0gZXN0IHVsdHJpY2llcyBpbnRlZ2VyLiBMZWN0dXMgdXJuYSBkdWlzIGNvbnZhbGxpcyBjb252YWxsaXMgdGVsbHVzLiBOaWJoIGlwc3VtIGNvbnNlcXVhdCBuaXNsIHZlbCBwcmV0aXVtIGxlY3R1cyBxdWFtIGlkIGxlby4gRmV1Z2lhdCBpbiBhbnRlIG1ldHVzIGRpY3R1bSBhdCB0ZW1wb3IgY29tbW9kby4gVmVsaXQgZGlnbmlzc2ltIHNvZGFsZXMgdXQgZXUgc2VtIGludGVnZXIuIERpY3R1bSBzaXQgYW1ldCBqdXN0byBkb25lYy4gU2NlbGVyaXNxdWUgbWF1cmlzIHBlbGxlbnRlc3F1ZSBwdWx2aW5hciBwZWxsZW50ZXNxdWUgaGFiaXRhbnQgbW9yYmkgdHJpc3RpcXVlIHNlbmVjdHVzLiBMb3JlbSBpcHN1bSBkb2xvciBzaXQgYW1ldCwgY29uc2VjdGV0dXIgYWRpcGlzY2luZyBlbGl0LCBzZWQgZG8gZWl1c21vZCB0ZW1wb3IgaW5jaWRpZHVudCB1dCBsYWJvcmUgZXQgZG9sb3JlIG1hZ25hIGFsaXF1YS4gU2VkIHR1cnBpcyB0aW5jaWR1bnQgaWQgYWxpcXVldCByaXN1cy4gRWdldCBtYXVyaXMgcGhhcmV0cmEgZXQgdWx0cmljZXMgbmVxdWUgb3JuYXJlIGFlbmVhbiBldWlzbW9kLiBEaWFtIHF1aXMgZW5pbSBsb2JvcnRpcyBzY2VsZXJpc3F1ZSBmZXJtZW50dW0uIFZhcml1cyBkdWlzIGF0IGNvbnNlY3RldHVyIGxvcmVtIGRvbmVjIG1hc3NhIHNhcGllbi4gRGlhbSBzaXQgYW1ldCBuaXNsIHN1c2NpcGl0IGFkaXBpc2NpbmcgYmliZW5kdW0gZXN0IHVsdHJpY2llcyBpbnRlZ2VyLiBMZWN0dXMgdXJuYSBkdWlzIGNvbnZhbGxpcyBjb252YWxsaXMgdGVsbHVzLiBOaWJoIGlwc3VtIGNvbnNlcXVhdCBuaXNsIHZlbCBwcmV0aXVtIGxlY3R1cyBxdWFtIGlkIGxlby4gRmV1Z2lhdCBpbiBhbnRlIG1ldHVzIGRpY3R1bSBhdCB0ZW1wb3IgY29tbW9kby4gVmVsaXQgZGlnbmlzc2ltIHNvZGFsZXMgdXQgZXUgc2VtIGludGVnZXIuIERpY3R1bSBzaXQgYW1ldCBqdXN0byBkb25lYy4gU2NlbGVyaXNxdWUgbWF1cmlzIHBlbGxlbnRlc3F1ZSBwdWx2aW5hciBwZWxsZW50ZXNxdWUgaGFiaXRhbnQgbW9yYmkgdHJpc3RpcXVlIHNlbmVjdHVzLiBTY2VsZXJpc3F1ZSBtYXVyaXMgcGVsbGVudGVzcXVlIHB1bHZpbmFyIHBlbGxlbnRlc3F1ZSBoYWJpdGFudCBtb3JiaSB0cmlzdGlxdWUgc2VuZWN0dXMuIFNjZWxlcmlzcXVlIG1hdXJpcyBwZWxsZW50ZXNxdWUgcHVsdmluYXIgcGVsbGVudGVzcXVlIGhhYml0YW50IG1vcmJpIHRyaXN0aXF1ZSBzZW5lY3R1cy4gU2NlbGVyaXNxdWUgbWF1cmlzIHBlbGxlbnRlc3F1ZSBwdWx2aW5hciBwZWxsZW50ZXNxdWUgaGFiaXRhbnQgbW9yYmkgdHJpc3RpcXVlIHNlbmVjdHVzLiBTY2VsZXJpc3F1ZSBtYXVyaXMgcGVsbGVudGVzcXVlIHB1bHZpbmFyIHBlbGxlbnRlc3F1ZSBoYWJpdGFudCBtb3JiaSB0cmlzdGlxdWUgc2VuZWN0dXMuIFNjZWxlcmlzcXVlIG1hdXJpcyBwZWxsZW50ZXNxdWUgcHVsdmluYXIgcGVsbGVudGVzcXVlIGhhYml0YW50IG1vcmJpIHRyaXN0aXF1ZSBzZW5lY3R1cy4=") for i in std.range(0,100)1417 ],1418}1419----1420====14211422[cols="<,>,>,>,>"]1423|===1424| Command 1425| Mean [ms] 1426| Min [ms] 1427| Max [ms] 1428| Relative 14291430| `Rust` 1431| 19.2 ± 0.9 1432| 17.5 1433| 23.8 1434| 1.00 14351436| `Rust (alternative, rsjsonnet)` 1437| 44.5 ± 2.2 1438| 41.1 1439| 48.9 1440| 2.32 ± 0.16 14411442| `Go` 1443| 115.3 ± 2.5 1444| 111.0 1445| 120.1 1446| 6.01 ± 0.32 14471448| `Scala (native)` 1449| 37.2 ± 2.2 1450| 32.0 1451| 41.6 1452| 1.94 ± 0.15 14531454| `Scala (GraalVM)` 1455| 28.7 ± 0.9 1456| 27.2 1457| 31.4 1458| 1.49 ± 0.09 14591460| `C++` 1461| 4643.4 ± 18.6 1462| 4612.8 1463| 4678.5 1464| 242.13 ± 11.89 1465|===14661467=== std.base64 (byte array)14681469.Source1470[%collapsible]1471====1472[source,jsonnet]1473----1474{1475 foo: [1476 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)1477 ],1478}1479----1480====14811482[cols="<,>,>,>,>"]1483|===1484| Command 1485| Mean [ms] 1486| Min [ms] 1487| Max [ms] 1488| Relative 14891490| `Rust` 1491| 15.6 ± 0.5 1492| 14.8 1493| 17.3 1494| 2.48 ± 0.16 14951496| `Rust (alternative, rsjsonnet)` 1497| 14.3 ± 0.5 1498| 13.3 1499| 15.6 1500| 2.26 ± 0.15 15011502| `Go` 1503| 63.8 ± 2.8 1504| 57.3 1505| 69.1 1506| 10.10 ± 0.74 15071508| `Scala (native)` 1509| 7.1 ± 0.6 1510| 6.1 1511| 8.9 1512| 1.12 ± 0.11 15131514| `Scala (GraalVM)` 1515| 6.3 ± 0.4 1516| 5.5 1517| 7.7 1518| 1.00 15191520| `C++` 1521| 7040.2 ± 47.1 1522| 6967.5 1523| 7138.0 1524| 1114.18 ± 64.89 1525|===15261527=== std.foldl15281529.Source1530[%collapsible]1531====1532[source,jsonnet]1533----1534local input = std.makeArray(10000, function(i) 'xxxxx');15351536std.foldl(function(acc, value) acc + value, input, '')15371538----1539====15401541[cols="<,>,>,>,>"]1542|===1543| Command 1544| Mean [ms] 1545| Min [ms] 1546| Max [ms] 1547| Relative 15481549| `Rust` 1550| 2.2 ± 0.2 1551| 2.0 1552| 3.4 1553| 1.00 15541555| `Rust (alternative, rsjsonnet)` 1556| 26.7 ± 1.8 1557| 22.5 1558| 31.0 1559| 12.07 ± 1.31 15601561| `Go` 1562| 1043.0 ± 18.2 1563| 1007.5 1564| 1076.2 1565| 470.67 ± 40.53 15661567| `Scala (native)` 1568| 80.0 ± 4.1 1569| 72.6 1570| 87.4 1571| 36.11 ± 3.55 15721573| `Scala (GraalVM)` 1574| 55.4 ± 4.5 1575| 44.3 1576| 63.8 1577| 24.98 ± 2.93 15781579| `C++` 1580| 167.7 ± 3.2 1581| 161.3 1582| 173.6 1583| 75.67 ± 6.55 1584|===15851586=== std.manifestJsonEx15871588.Source1589[%collapsible]1590====1591[source,jsonnet]1592----1593{1594 bar: {1595 prometheusOperator+: {1596 service+: {1597 spec+: {1598 ports: [1599 {1600 name: 'https',1601 port: 8443,1602 targetPort: 'https',1603 },1604 ],1605 },1606 },1607 serviceMonitor+: {1608 spec+: {1609 endpoints: [1610 {1611 port: 'https',1612 scheme: 'https',1613 honorLabels: true,1614 bearerTokenFile: '/var/run/secrets/kubernetes.io/serviceaccount/token',1615 tlsConfig: {1616 insecureSkipVerify: true,1617 },1618 },1619 ]1620 },1621 },1622 clusterRole+: {1623 rules+: [1624 {1625 apiGroups: ['authentication.k8s.io'],1626 resources: ['tokenreviews'],1627 verbs: ['create'],1628 },1629 {1630 apiGroups: ['authorization.k8s.io'],1631 resources: ['subjectaccessreviews'],1632 verbs: ['create'],1633 },1634 ],1635 },1636 }1637 },1638 foo: std.manifestJsonEx(self.bar, " ")1639}1640----1641====16421643[cols="<,>,>,>,>"]1644|===1645| Command 1646| Mean [µs] 1647| Min [µs] 1648| Max [µs] 1649| Relative 16501651| `Rust` 1652| 748.5 ± 89.4 1653| 618.9 1654| 1457.9 1655| 1.00 16561657| `Rust (alternative, rsjsonnet)` 1658| 1173.6 ± 132.1 1659| 1020.2 1660| 2213.3 1661| 1.57 ± 0.26 16621663| `Go` 1664| 1426.9 ± 76.1 1665| 1206.5 1666| 2024.4 1667| 1.91 ± 0.25 16681669| `Scala (native)` 1670| 2443.6 ± 215.6 1671| 2080.3 1672| 3535.8 1673| 3.26 ± 0.48 16741675| `Scala (GraalVM)` 1676| 1867.9 ± 187.6 1677| 1510.0 1678| 2727.7 1679| 2.50 ± 0.39 16801681| `C++` 1682| 56868.5 ± 1565.7 1683| 53376.4 1684| 59440.7 1685| 75.97 ± 9.32 1686|===16871688=== std.manifestTomlEx16891690.Source1691[%collapsible]1692====1693[source,jsonnet]1694----1695{1696 bar: {1697 prometheusOperator+: {1698 service+: {1699 spec+: {1700 ports: [1701 {1702 name: 'https',1703 port: 8443,1704 targetPort: 'https',1705 },1706 ],1707 },1708 },1709 serviceMonitor+: {1710 spec+: {1711 endpoints: [1712 {1713 port: 'https',1714 scheme: 'https',1715 honorLabels: true,1716 bearerTokenFile: '/var/run/secrets/kubernetes.io/serviceaccount/token',1717 tlsConfig: {1718 insecureSkipVerify: true,1719 },1720 },1721 ],1722 },1723 },1724 clusterRole+: {1725 rules+: [1726 {1727 apiGroups: ['authentication.k8s.io'],1728 resources: ['tokenreviews'],1729 verbs: ['create'],1730 },1731 {1732 apiGroups: ['authorization.k8s.io'],1733 resources: ['subjectaccessreviews'],1734 verbs: ['create'],1735 },1736 ],1737 },1738 },1739 },1740 nothing: std.manifestTomlEx(self.bar, ' '),1741}17421743----1744====17451746[cols="<,>,>,>,>"]1747|===1748| Command 1749| Mean [µs] 1750| Min [µs] 1751| Max [µs] 1752| Relative 17531754| `Rust` 1755| 750.5 ± 92.9 1756| 624.9 1757| 1531.7 1758| 1.00 17591760| `Rust (alternative, rsjsonnet)` 1761| 1190.8 ± 141.6 1762| 1007.4 1763| 2224.5 1764| 1.59 ± 0.27 17651766| `Go` 1767| 1427.7 ± 82.5 1768| 1217.9 1769| 1923.1 1770| 1.90 ± 0.26 17711772| `Scala (native)` 1773| 2558.8 ± 258.8 1774| 2168.4 1775| 3590.2 1776| 3.41 ± 0.54 17771778| `Scala (GraalVM)` 1779| 1940.1 ± 185.3 1780| 1568.4 1781| 3078.2 1782| 2.59 ± 0.40 17831784| `C++` 1785| 519148.2 ± 5114.2 1786| 512290.7 1787| 527415.7 1788| 691.74 ± 85.90 1789|===17901791=== std.parseInt17921793.Source1794[%collapsible]1795====1796[source,jsonnet]1797----1798{1799 foo: [1800 std.parseInt("-123949595") for i in std.range(0,100)1801 ],1802}1803----1804====18051806[cols="<,>,>,>,>"]1807|===1808| Command 1809| Mean [µs] 1810| Min [µs] 1811| Max [µs] 1812| Relative 18131814| `Rust` 1815| 771.7 ± 99.3 1816| 633.6 1817| 1465.7 1818| 1.00 18191820| `Rust (alternative, rsjsonnet)` 1821| 1177.7 ± 135.4 1822| 1030.0 1823| 2068.3 1824| 1.53 ± 0.26 18251826| `Go` 1827| 1398.2 ± 78.8 1828| 1203.3 1829| 1922.2 1830| 1.81 ± 0.25 18311832| `Scala (native)` 1833| 2383.6 ± 227.4 1834| 2008.7 1835| 3848.0 1836| 3.09 ± 0.49 18371838| `Scala (GraalVM)` 1839| 1809.3 ± 167.6 1840| 1430.0 1841| 2685.7 1842| 2.34 ± 0.37 18431844| `C++` 1845| 53474.0 ± 1377.1 1846| 50862.9 1847| 56321.0 1848| 69.30 ± 9.10 1849|===18501851=== std.reverse18521853.Source1854[%collapsible]1855====1856[source,jsonnet]1857----1858{1859 foo: [1860 std.reverse(std.range(0, 5000)) for i in std.range(0,100)1861 ],1862}1863----1864====18651866[cols="<,>,>,>,>"]1867|===1868| Command 1869| Mean [ms] 1870| Min [ms] 1871| Max [ms] 1872| Relative 18731874| `Rust` 1875| 24.5 ± 1.1 1876| 22.5 1877| 27.5 1878| 1.00 18791880| `Rust (alternative, rsjsonnet)` 1881| 54.6 ± 2.3 1882| 51.0 1883| 63.3 1884| 2.23 ± 0.13 18851886| `Go` 1887| 138.8 ± 2.4 1888| 136.2 1889| 145.1 1890| 5.67 ± 0.27 18911892| `Scala (native)` 1893| 44.1 ± 2.4 1894| 38.2 1895| 47.7 1896| 1.80 ± 0.13 18971898| `Scala (GraalVM)` 1899| 36.0 ± 1.3 1900| 32.5 1901| 38.7 1902| 1.47 ± 0.08 19031904| `C++` 1905| 339.8 ± 2.1 1906| 336.1 1907| 344.3 1908| 13.88 ± 0.61 1909|===19101911=== std.substr19121913.Source1914[%collapsible]1915====1916[source,jsonnet]1917----1918{1919 foo: [1920 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)1921 ],1922}1923----1924====19251926[cols="<,>,>,>,>"]1927|===1928| Command 1929| Mean [µs] 1930| Min [µs] 1931| Max [µs] 1932| Relative 19331934| `Rust` 1935| 917.8 ± 100.9 1936| 786.2 1937| 1720.6 1938| 1.00 19391940| `Rust (alternative, rsjsonnet)` 1941| 1542.7 ± 165.7 1942| 1356.8 1943| 2708.1 1944| 1.68 ± 0.26 19451946| `Go` 1947| 3294.1 ± 238.4 1948| 2784.6 1949| 4146.2 1950| 3.59 ± 0.47 19511952| `Scala (native)` 1953| 2991.7 ± 287.0 1954| 2557.2 1955| 4080.4 1956| 3.26 ± 0.48 19571958| `Scala (GraalVM)` 1959| 2261.4 ± 199.8 1960| 1831.2 1961| 3287.4 1962| 2.46 ± 0.35 19631964| `C++` 1965| 16726.5 ± 994.8 1966| 15091.1 1967| 19537.3 1968| 18.22 ± 2.28 1969|===19701971=== Comparsion for array19721973> Note: No results for C++, too slow, takes hours, skews results19741975.Source1976[%collapsible]1977====1978[source,jsonnet]1979----1980local long_array = std.range(1, 1000000);1981long_array + [1] < long_array + [2]19821983----1984====19851986[cols="<,>,>,>,>"]1987|===1988| Command 1989| Mean [ms] 1990| Min [ms] 1991| Max [ms] 1992| Relative 19931994| `Rust` 1995| 10.0 ± 0.5 1996| 9.3 1997| 12.6 1998| 1.00 19992000| `Rust (alternative, rsjsonnet)` 2001| 70.6 ± 4.8 2002| 54.7 2003| 81.3 2004| 7.05 ± 0.60 20052006| `Go` 2007| 77.3 ± 7.5 2008| 54.9 2009| 87.4 2010| 7.72 ± 0.84 20112012| `Scala (native)` 2013| 39.1 ± 2.6 2014| 30.4 2015| 42.7 2016| 3.90 ± 0.33 20172018| `Scala (GraalVM)` 2019| 64.3 ± 2.1 2020| 60.7 2021| 70.2 2022| 6.42 ± 0.38 2023|===20242025=== Comparsion for primitives20262027> Note: No results for C++, can't run: uses up to 192GB of RAM20282029.Source2030[%collapsible]2031====2032[source,jsonnet]2033----2034([ i < j for i in std.range(1, 1000) for j in std.range(1, 1000)])20352036----2037====20382039[cols="<,>,>,>,>"]2040|===2041| Command 2042| Mean [ms] 2043| Min [ms] 2044| Max [ms] 2045| Relative 20462047| `Rust` 2048| 218.1 ± 4.4 2049| 206.9 2050| 227.4 2051| 1.25 ± 0.04 20522053| `Rust (alternative, rsjsonnet)` 2054| 432.2 ± 7.4 2055| 426.2 2056| 458.6 2057| 2.47 ± 0.08 20582059| `Go` 2060| 892.8 ± 25.8 2061| 860.6 2062| 992.0 2063| 5.11 ± 0.20 20642065| `Scala (native)` 2066| 174.8 ± 4.6 2067| 168.1 2068| 183.7 2069| 1.00 20702071| `Scala (GraalVM)` 2072| 204.1 ± 4.6 2073| 198.9 2074| 221.1 2075| 1.17 ± 0.04 2076|===