git.delta.rocks / jrsonnet / refs/commits / 2e0b0304a98d

difftreelog

source

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