git.delta.rocks / jrsonnet / refs/commits / b42af5c9a266

difftreelog

source

docs/benchmarks.adoc65.7 KiBrenderedsourcehistory
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];554555556// The return value is a function to allow it to be parameterized.557function(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----672/*673Copyright 2015 Google Inc. All rights reserved.674675Licensed under the Apache License, Version 2.0 (the "License");676you may not use this file except in compliance with the License.677You may obtain a copy of the License at678679    http://www.apache.org/licenses/LICENSE-2.0680681Unless required by applicable law or agreed to in writing, software682distributed under the License is distributed on an "AS IS" BASIS,683WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.684See the License for the specific language governing permissions and685limitations under the License.686*/687688local 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----750/*751Copyright 2015 Google Inc. All rights reserved.752753Licensed under the Apache License, Version 2.0 (the "License");754you may not use this file except in compliance with the License.755You may obtain a copy of the License at756757    http://www.apache.org/licenses/LICENSE-2.0758759Unless required by applicable law or agreed to in writing, software760distributed under the License is distributed on an "AS IS" BASIS,761WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.762See the License for the specific language governing permissions and763limitations under the License.764*/765766local 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----829/*830Copyright 2015 Google Inc. All rights reserved.831832Licensed under the Apache License, Version 2.0 (the "License");833you may not use this file except in compliance with the License.834You may obtain a copy of the License at835836    http://www.apache.org/licenses/LICENSE-2.0837838Unless required by applicable law or agreed to in writing, software839distributed under the License is distributed on an "AS IS" BASIS,840WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.841See the License for the specific language governing permissions and842limitations under the License.843*/844845local 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----965// A benchmark for builtin sort966967local 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----1163// This string must be longer than max stack frames1164local 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----1221// Generator source1222local 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|===