From e653aa902fcf0d54814c3726d91626b48b209f44 Mon Sep 17 00:00:00 2001 From: Alexander Slesarev Date: Fri, 23 Sep 2022 23:49:04 -0600 Subject: [PATCH] Maintenance update 09-23-22 and follow-up on #424 (#425) --- README.md | 584 ++++++++++++++++++------------------ common/commands.mk | 13 +- docker/Dockerfile | 65 ++-- docker/apt.pkgs | 48 ++- json/Makefile | 4 +- matmul/java-nd4j/Maven.list | 8 +- matmul/matmul_d_lubeck.d | 1 + primes/Makefile | 2 +- primes/primes.nim | 10 +- 9 files changed, 367 insertions(+), 368 deletions(-) diff --git a/README.md b/README.md index 60116ef2..d55e80e1 100644 --- a/README.md +++ b/README.md @@ -50,7 +50,7 @@ The measured values are: All values are presented as: `median`±`median absolute deviation`. -UPDATE: 2022-05-30 +UPDATE: 2022-09-23 # Test Cases @@ -68,98 +68,98 @@ Supports two mode: | Language | Time, s | Memory, MiB | Energy, J | | :----------------------- | -----------------------: | ------------------------------------------------: | -------------------------: | -| Racket (Syntax Objects) | 1.294±0.001 | 104.83±00.98 + 0.00±00.00 | 47.02±00.02 | -| C++/g++ | 1.317±0.000 | 1.65±00.00 + 0.00±00.00 | 52.77±00.08 | -| Rust | 1.589±0.001 | 2.12±00.03 + 0.00±00.00 | 63.57±00.08 | -| D/ldc2 | 1.655±0.000 | 3.21±00.03 + 0.00±00.00 | 66.25±00.07 | -| Java | 1.655±0.001 | 37.33±00.46 + 0.90±00.37 | 64.58±00.05 | -| D/gdc | 1.660±0.000 | 7.49±00.02 + 0.00±00.00 | 67.55±00.71 | -| C/clang | 1.663±0.000 | 0.69±00.03 + 0.00±00.00 | 64.54±00.06 | -| C/gcc | 1.667±0.000 | 0.71±00.00 + 0.00±00.00 | 64.71±00.06 | -| Kotlin/JVM | 1.677±0.006 | 40.74±00.11 + 0.42±00.16 | 65.50±00.18 | -| C++/clang++ | 1.691±0.000 | 1.48±00.01 + 0.00±00.00 | 64.32±00.73 | -| Zig | 1.747±0.000 | 0.70±00.00 + 0.00±00.00 | 68.20±00.38 | -| F#/.NET Core | 1.896±0.000 | 37.86±00.09 + 0.54±00.00 | 76.35±00.41 | -| C#/.NET Core | 1.902±0.000 | 33.85±00.29 + 0.00±00.00 | 76.27±00.19 | -| Go | 1.904±0.000 | 2.79±00.08 + 0.00±00.00 | 72.13±00.49 | -| OCaml | 1.912±0.000 | 2.71±00.02 + 2.30±00.03 | 85.13±00.36 | -| Chez Scheme | 1.923±0.001 | 24.91±00.08 + 4.40±00.02 | 79.48±00.05 | -| Nim/gcc | 1.976±0.000 | 2.02±00.02 + 0.00±00.00 | 78.82±00.74 | -| Racket | 2.012±0.010 | 93.21±00.51 + 0.00±00.00 | 81.10±00.77 | -| Vala/gcc | 2.090±0.001 | 4.25±00.05 + 0.00±00.00 | 77.06±00.85 | -| Nim/clang | 2.100±0.002 | 2.43±00.05 + 0.00±00.00 | 81.52±00.15 | -| Go/gccgo | 2.172±0.000 | 24.55±00.10 + 0.00±00.00 | 86.43±00.27 | -| Vala/clang | 2.262±0.000 | 4.26±00.07 + 0.00±00.00 | 82.35±00.19 | -| V/gcc | 2.340±0.000 | 0.66±00.00 + 0.00±00.00 | 87.35±00.63 | -| Crystal | 2.384±0.000 | 3.46±00.01 + 0.00±00.00 | 95.11±00.44 | -| MLton | 2.608±0.000 | 0.80±00.03 + 1.01±00.03 | 102.87±00.28 | -| C#/Mono | 2.685±0.001 | 24.99±00.13 + 0.00±00.00 | 107.58±00.08 | -| V/clang | 2.967±0.019 | 0.66±00.00 + 0.00±00.00 | 115.67±00.92 | -| Haskell (MArray) | 3.165±0.001 | 4.18±00.04 + 3.97±00.00 | 131.78±00.77 | -| Scala | 3.222±0.023 | 66.15±00.25 + 141.06±00.32 | 133.08±00.82 | -| D/dmd | 3.267±0.000 | 3.76±00.01 + 0.00±00.00 | 122.89±00.09 | -| Julia | 3.565±0.001 | 208.86±00.13 + 0.99±00.03 | 134.35±00.18 | -| Node.js | 4.016±0.002 | 37.68±00.02 + 0.85±00.08 | 161.03±00.35 | -| Swift | 5.415±0.000 | 13.76±00.14 + 0.00±00.00 | 200.89±02.89 | -| Lua/luajit | 6.492±0.008 | 2.41±00.04 + 0.00±00.00 | 259.77±00.54 | -| Ruby/truffleruby | 7.352±0.037 | 291.61±00.77 + 396.22±08.35 | 347.59±02.47 | -| Ruby/truffleruby (--jvm) | 8.767±0.078 | 376.87±16.30 + 458.33±29.58 | 430.85±06.14 | -| Python/pypy | 12.207±0.065 | 65.14±00.02 + 29.65±00.03 | 512.74±00.94 | -| Haskell | 13.368±0.019 | 4.31±00.04 + 3.97±00.00 | 595.87±04.15 | -| Ruby (--jit) | 39.635±0.156 | 270.95±00.02 + 0.02±00.00 | 1618.92±08.59 | -| Elixir | 43.913±0.156 | 70.50±00.34 + 0.00±00.00 | 2011.98±10.43 | -| Lua | 50.617±0.073 | 2.30±00.02 + 0.00±00.00 | 1941.25±23.16 | -| Ruby/jruby | 78.965±0.799 | 183.82±00.75 + 83.58±00.83 | 3500.74±39.03 | -| Ruby | 85.918±0.486 | 14.41±00.03 + 0.00±00.00 | 3615.58±32.78 | -| Python | 185.860±1.077 | 10.63±00.00 + 0.00±00.00 | 7415.67±57.06 | -| Tcl (FP) | 239.705±1.971 | 4.56±00.03 + 0.00±00.00 | 10232.99±120.09 | -| Perl | 324.279±3.019 | 7.06±00.05 + 0.00±00.00 | 12967.03±121.22 | -| Tcl (OOP) | 492.812±2.162 | 4.55±00.08 + 0.00±00.00 | 20801.83±165.07 | +| Racket (Syntax Objects) | 1.293±0.001 | 111.65±00.71 + 0.00±00.00 | 46.98±00.02 | +| C++/g++ | 1.317±0.000 | 1.82±00.02 + 0.00±00.00 | 52.72±00.17 | +| Rust | 1.543±0.000 | 0.93±00.01 + 0.00±00.00 | 61.72±00.13 | +| Java | 1.653±0.003 | 38.82±00.08 + 0.52±00.07 | 64.26±00.17 | +| D/ldc2 | 1.659±0.002 | 3.01±00.02 + 0.00±00.00 | 66.27±00.17 | +| D/gdc | 1.661±0.000 | 6.55±00.04 + 0.00±00.00 | 68.36±00.15 | +| C/gcc | 1.667±0.000 | 0.88±00.01 + 0.00±00.00 | 64.53±00.04 | +| C/clang | 1.670±0.001 | 0.89±00.01 + 0.00±00.00 | 64.75±00.07 | +| Kotlin/JVM | 1.685±0.004 | 41.48±00.18 + 0.52±00.16 | 65.51±00.18 | +| C++/clang++ | 1.738±0.000 | 1.65±00.03 + 0.00±00.00 | 67.30±00.08 | +| Zig | 1.747±0.001 | 0.92±00.02 + 0.00±00.00 | 68.37±00.55 | +| C#/.NET Core | 1.902±0.001 | 33.90±00.25 + 0.00±00.00 | 76.15±00.25 | +| Go | 1.905±0.000 | 2.98±00.07 + 0.00±00.00 | 73.64±00.17 | +| OCaml | 1.911±0.000 | 2.94±00.02 + 1.98±00.00 | 86.49±01.35 | +| Chez Scheme | 1.922±0.001 | 24.78±00.04 + 4.44±00.04 | 79.39±00.12 | +| F#/.NET Core | 1.947±0.000 | 37.85±00.03 + 0.56±00.00 | 77.86±00.20 | +| Nim/gcc | 1.962±0.000 | 2.01±00.04 + 0.00±00.00 | 76.63±00.69 | +| Racket | 1.986±0.019 | 92.88±00.44 + 0.00±00.00 | 80.21±01.03 | +| Vala/gcc | 2.090±0.000 | 4.24±00.09 + 0.00±00.00 | 78.05±00.32 | +| Nim/clang | 2.112±0.001 | 2.31±00.01 + 0.00±00.00 | 82.20±00.51 | +| Go/gccgo | 2.176±0.001 | 24.42±00.04 + 0.00±00.00 | 85.13±00.93 | +| Vala/clang | 2.266±0.000 | 4.32±00.08 + 0.00±00.00 | 84.95±00.07 | +| V/gcc | 2.277±0.000 | 1.84±00.05 + 0.00±00.00 | 85.30±00.16 | +| Crystal | 2.389±0.003 | 3.00±00.01 + 0.00±00.00 | 95.36±00.43 | +| Julia | 2.594±0.010 | 224.45±00.16 + 0.82±00.05 | 101.61±00.91 | +| MLton | 2.608±0.000 | 0.96±00.02 + 0.90±00.11 | 102.94±00.56 | +| C#/Mono | 2.686±0.001 | 24.89±00.04 + 0.00±00.00 | 107.21±00.13 | +| V/clang | 2.735±0.002 | 1.84±00.09 + 0.00±00.00 | 109.52±00.55 | +| Scala | 3.230±0.009 | 67.12±00.09 + 140.81±00.29 | 133.10±00.69 | +| D/dmd | 3.267±0.000 | 3.55±00.04 + 0.00±00.00 | 126.05±00.33 | +| Haskell (MArray) | 3.847±0.001 | 5.87±00.03 + 4.72±00.00 | 154.08±00.43 | +| Node.js | 4.154±0.004 | 40.49±00.05 + 2.16±00.09 | 165.56±00.43 | +| Swift | 5.443±0.000 | 13.80±00.06 + 0.00±00.00 | 203.97±00.37 | +| Lua/luajit | 6.484±0.015 | 2.50±00.03 + 0.00±00.00 | 258.91±00.55 | +| Ruby/truffleruby | 7.494±0.115 | 297.28±00.54 + 325.55±13.94 | 359.91±05.75 | +| Ruby/truffleruby (--jvm) | 8.155±0.067 | 352.85±06.71 + 467.10±19.50 | 392.34±02.92 | +| Python/pypy | 12.188±0.033 | 64.54±00.19 + 30.13±00.10 | 508.85±01.68 | +| Haskell | 15.028±0.010 | 3.85±00.03 + 7.19±00.04 | 679.80±08.07 | +| Ruby (--jit) | 40.868±0.197 | 270.47±00.06 + 0.29±00.04 | 1629.77±07.26 | +| Elixir | 43.616±0.243 | 71.01±00.79 + 0.00±00.00 | 1985.56±21.21 | +| Lua | 50.967±0.319 | 2.30±00.02 + 0.00±00.00 | 1955.29±18.53 | +| Ruby/jruby | 79.375±0.729 | 184.40±01.19 + 85.06±01.03 | 3537.33±31.99 | +| Ruby | 86.488±0.104 | 13.93±00.05 + 0.00±00.00 | 3604.94±19.73 | +| Python | 196.223±1.810 | 10.42±00.06 + 0.00±00.00 | 7843.33±119.79 | +| Tcl (FP) | 270.436±1.400 | 3.93±00.09 + 0.00±00.00 | 11307.54±134.33 | +| Perl | 327.444±1.656 | 6.86±00.09 + 0.00±00.00 | 13065.18±71.67 | +| Tcl (OOP) | 523.177±2.973 | 3.94±00.07 + 0.00±00.00 | 22061.79±158.35 | ### mandel.b [Mandel in Brainfuck](brainfuck/mandel.b) -| Language | Time, s | Memory, MiB | Energy, J | -| :----------------------- | -----------------------: | ------------------------------------------------: | ------------------------: | -| C++/g++ | 10.461±0.014 | 1.65±00.00 + 2.34±00.05 | 429.24±01.97 | -| Racket (Syntax Objects) | 14.090±0.116 | 105.24±00.45 + 72.57±00.64 | 563.20±06.84 | -| C/gcc | 14.203±0.011 | 0.68±00.03 + 1.05±00.02 | 561.03±02.60 | -| Kotlin/JVM | 14.337±0.030 | 40.77±00.09 + 1.00±00.14 | 580.64±03.91 | -| V/gcc | 14.519±0.017 | 0.72±00.00 + 2.08±00.05 | 589.11±05.55 | -| C++/clang++ | 14.656±0.009 | 1.50±00.02 + 2.09±00.02 | 588.07±01.37 | -| Rust | 14.823±0.008 | 2.17±00.04 + 0.25±00.00 | 593.32±00.71 | -| D/ldc2 | 14.864±0.019 | 3.20±00.03 + 0.77±00.00 | 598.33±02.87 | -| D/gdc | 15.138±0.015 | 7.47±00.03 + 0.77±00.00 | 640.93±01.15 | -| C/clang | 15.431±0.010 | 0.69±00.03 + 1.05±00.04 | 644.66±01.57 | -| Zig | 16.222±0.009 | 0.70±00.00 + 1.61±00.01 | 669.85±04.37 | -| Go | 17.065±0.259 | 3.34±00.11 + 1.26±00.00 | 674.90±08.80 | -| Swift | 18.068±0.088 | 14.62±00.06 + 0.00±00.00 | 734.16±06.70 | -| Java | 18.283±0.012 | 37.81±00.06 + 1.29±00.13 | 732.18±00.83 | -| Vala/gcc | 18.498±0.004 | 4.09±00.05 + 2.04±00.02 | 694.48±01.06 | -| C#/.NET Core | 18.529±0.008 | 34.13±00.07 + 0.83±00.01 | 751.34±04.79 | -| Crystal | 19.010±0.215 | 3.46±00.01 + 0.38±00.02 | 778.36±08.01 | -| Nim/clang | 19.309±0.305 | 2.43±00.04 + 0.57±00.00 | 784.15±16.13 | -| Vala/clang | 19.913±0.003 | 4.08±00.02 + 2.05±00.06 | 770.85±00.76 | -| Go/gccgo | 20.039±0.013 | 24.59±00.05 + 1.27±00.00 | 845.96±02.65 | -| Nim/gcc | 21.108±0.569 | 1.95±00.01 + 0.51±00.00 | 854.87±21.62 | -| Scala | 21.395±0.016 | 66.24±00.05 + 141.19±00.08 | 883.73±05.55 | -| V/clang | 22.592±0.064 | 0.66±00.00 + 1.89±00.03 | 931.66±02.36 | -| OCaml | 26.203±0.017 | 3.48±00.02 + 8.08±03.91 | 1247.53±12.44 | -| Chez Scheme | 26.997±0.052 | 25.38±00.05 + 3.92±00.01 | 1180.81±03.40 | -| C#/Mono | 31.357±0.018 | 25.04±00.06 + 0.83±00.00 | 1331.72±01.53 | -| Node.js | 31.704±0.292 | 37.65±00.06 + 5.37±00.02 | 1317.45±17.77 | -| Lua/luajit | 35.127±0.069 | 2.42±00.01 + 0.50±00.00 | 1408.43±04.07 | -| Racket | 36.927±0.067 | 92.66±00.27 + 0.00±00.00 | 1636.94±08.74 | -| D/dmd | 37.471±0.015 | 3.76±00.01 + 0.77±00.00 | 1377.33±08.82 | -| F#/.NET Core | 38.358±0.052 | 37.99±00.04 + 2.08±00.00 | 1587.43±03.20 | -| MLton | 44.833±0.049 | 1.59±00.04 + 4.11±00.00 | 1945.45±09.66 | -| Python/pypy | 48.373±0.180 | 64.76±00.06 + 30.07±00.03 | 2068.90±24.04 | -| Haskell (MArray) | 49.631±0.622 | 4.12±00.02 + 5.83±00.00 | 2120.11±20.32 | -| Julia | 64.532±0.078 | 209.49±00.10 + 0.97±00.08 | 2486.31±13.12 | -| Ruby/truffleruby (--jvm) | 78.552±1.319 | 398.37±13.36 + 440.08±26.60 | 3295.51±37.63 | -| Ruby/truffleruby | 83.372±0.453 | 291.66±00.26 + 251.66±23.69 | 3567.05±19.14 | -| Haskell | 186.042±2.425 | 4.34±00.04 + 29.24±00.00 | 8142.94±109.17 | +| Language | Time, s | Memory, MiB | Energy, J | +| :----------------------- | -----------------------: | ------------------------------------------------: | -----------------------: | +| C++/g++ | 10.468±0.023 | 1.80±00.02 + 2.24±00.02 | 420.90±01.56 | +| Racket (Syntax Objects) | 13.780±0.048 | 111.45±00.23 + 67.60±00.23 | 550.03±02.02 | +| C/gcc | 14.200±0.006 | 0.88±00.03 + 0.87±00.03 | 560.07±04.35 | +| Kotlin/JVM | 14.292±0.005 | 41.54±00.18 + 1.45±00.21 | 586.01±00.99 | +| V/gcc | 14.450±0.014 | 2.22±00.05 + 0.77±00.00 | 577.29±00.51 | +| Rust | 14.787±0.016 | 0.92±00.01 + 1.36±00.06 | 577.08±03.69 | +| D/ldc2 | 14.924±0.016 | 2.94±00.01 + 0.88±00.02 | 595.92±00.62 | +| C++/clang++ | 15.012±0.015 | 1.65±00.02 + 1.93±00.03 | 605.63±03.12 | +| C/clang | 15.122±0.013 | 0.90±00.02 + 0.90±00.00 | 647.01±03.97 | +| D/gdc | 15.238±0.081 | 6.56±00.03 + 1.46±00.03 | 636.13±04.29 | +| Go | 16.157±0.020 | 3.20±00.28 + 1.27±00.00 | 630.11±03.88 | +| Zig | 16.239±0.020 | 0.92±00.01 + 1.31±00.00 | 658.86±05.07 | +| Java | 18.294±0.023 | 37.71±00.35 + 1.88±00.36 | 730.92±00.72 | +| Vala/gcc | 18.477±0.005 | 4.20±00.03 + 1.77±00.04 | 691.66±00.34 | +| C#/.NET Core | 18.540±0.014 | 34.15±00.06 + 0.83±00.01 | 740.52±01.15 | +| Swift | 18.784±0.259 | 14.69±00.05 + 0.00±00.00 | 759.12±07.38 | +| Go/gccgo | 19.905±0.008 | 24.46±00.03 + 1.27±00.00 | 832.05±07.20 | +| Vala/clang | 20.240±0.005 | 4.20±00.06 + 1.73±00.08 | 783.19±00.73 | +| Scala | 20.996±0.005 | 68.20±00.10 + 141.33±00.29 | 877.97±01.76 | +| V/clang | 21.510±0.078 | 1.85±00.10 + 1.15±00.09 | 895.32±04.49 | +| Crystal | 21.595±0.016 | 2.98±00.01 + 0.69±00.05 | 860.94±02.42 | +| Nim/gcc | 22.723±0.079 | 1.98±00.02 + 0.52±00.00 | 924.02±07.74 | +| Nim/clang | 25.539±0.346 | 2.26±00.01 + 0.57±00.00 | 1016.20±13.25 | +| OCaml | 26.225±0.042 | 3.45±00.03 + 3.79±00.09 | 1240.48±07.92 | +| Chez Scheme | 26.957±0.030 | 25.36±00.02 + 3.93±00.02 | 1185.16±06.29 | +| Julia | 29.496±0.070 | 224.62±00.21 + 0.70±00.02 | 1123.15±08.96 | +| Node.js | 29.634±1.152 | 40.57±00.07 + 5.37±00.00 | 1250.41±55.67 | +| C#/Mono | 31.506±0.033 | 24.90±00.04 + 0.82±00.00 | 1336.77±01.87 | +| Lua/luajit | 35.074±0.035 | 2.44±00.02 + 0.44±00.00 | 1399.61±01.60 | +| Racket | 36.947±0.162 | 92.71±00.16 + 0.00±00.00 | 1628.73±10.79 | +| Haskell (MArray) | 37.326±0.013 | 5.67±00.03 + 6.11±00.00 | 1513.15±08.31 | +| D/dmd | 37.466±0.010 | 3.45±00.03 + 1.00±00.03 | 1356.90±00.40 | +| F#/.NET Core | 38.363±0.057 | 37.86±00.05 + 2.10±00.01 | 1573.80±03.64 | +| MLton | 44.875±0.023 | 1.30±00.33 + 4.40±00.28 | 1941.05±19.16 | +| Python/pypy | 48.764±0.207 | 64.23±00.13 + 30.59±00.09 | 2076.08±25.96 | +| Ruby/truffleruby (--jvm) | 80.275±0.588 | 353.40±01.09 + 500.07±40.27 | 3327.63±27.96 | +| Ruby/truffleruby | 81.176±0.481 | 298.34±00.74 + 257.92±09.34 | 3973.50±42.02 | +| Haskell | 186.181±0.556 | 5.58±00.06 + 30.55±00.00 | 8151.90±99.97 | ## Base64 @@ -169,45 +169,45 @@ Testing base64 encoding/decoding of the large blob into the newly allocated buff | Language | Time, s | Memory, MiB | Energy, J | | :------------------------ | ----------------------: | ------------------------------------------------: | ----------------------: | -| C/clang (aklomp) | 0.100±0.001 | 2.04±00.04 + 0.00±00.00 | 4.73±00.07 | -| C/gcc (aklomp) | 0.101±0.000 | 2.09±00.02 + 0.00±00.00 | 4.80±00.05 | -| Rust | 0.969±0.000 | 2.58±00.03 + 0.01±00.00 | 39.56±00.22 | -| V/clang | 0.995±0.001 | 1.91±00.02 + 0.00±00.00 | 37.66±00.14 | -| C/clang | 0.997±0.000 | 2.01±00.04 + 0.00±00.00 | 37.14±00.36 | -| C/gcc | 1.012±0.000 | 2.05±00.04 + 0.00±00.00 | 37.95±00.09 | -| Nim/clang | 1.024±0.001 | 2.82±00.03 + 4.44±00.00 | 41.08±00.18 | -| D/ldc2 | 1.074±0.003 | 3.58±00.03 + 3.58±00.00 | 45.02±00.50 | -| Nim/gcc | 1.081±0.002 | 2.31±00.03 + 4.44±00.06 | 42.48±00.56 | -| V/gcc | 1.092±0.000 | 1.63±00.01 + 0.44±00.04 | 42.03±00.17 | -| Crystal | 1.154±0.002 | 3.95±00.01 + 1.17±00.02 | 51.11±00.15 | -| Ruby (--jit) | 1.326±0.001 | 271.35±00.02 + 66.67±00.01 | 52.24±00.23 | -| Ruby | 1.336±0.002 | 14.83±00.01 + 58.68±00.04 | 52.41±00.27 | -| Java | 1.511±0.008 | 38.37±00.06 + 258.46±28.01 | 61.39±00.49 | -| Scala | 1.562±0.005 | 64.37±00.18 + 315.74±04.03 | 67.26±01.06 | -| Vala/gcc | 1.563±0.001 | 5.49±00.03 + 0.44±00.08 | 61.08±00.51 | -| Vala/clang | 1.563±0.001 | 5.60±00.04 + 0.30±00.03 | 60.93±00.56 | -| Kotlin/JVM | 1.635±0.007 | 40.46±00.12 + 263.10±18.51 | 69.46±01.12 | -| C++/clang++ (libcrypto) | 1.725±0.005 | 4.46±00.05 + 0.68±00.06 | 68.58±00.43 | -| C++/g++ (libcrypto) | 1.726±0.004 | 5.12±00.09 + 0.68±00.06 | 68.44±00.24 | -| Perl (MIME::Base64) | 1.779±0.014 | 14.86±00.04 + 0.07±00.00 | 70.08±00.39 | -| Go | 1.852±0.001 | 4.07±00.06 + 4.57±00.38 | 78.91±00.38 | -| PHP | 2.015±0.022 | 17.09±00.09 + 0.00±00.00 | 81.94±00.93 | -| Python | 2.115±0.002 | 10.41±00.06 + 0.18±00.00 | 78.44±00.28 | -| Node.js | 2.234±0.003 | 36.96±00.03 + 39.88±00.01 | 90.04±00.67 | -| D/gdc | 2.645±0.001 | 7.62±00.02 + 3.91±00.00 | 114.17±00.89 | -| D/dmd | 2.736±0.001 | 4.04±00.02 + 3.36±00.00 | 118.22±00.86 | -| Zig | 3.062±0.001 | 1.47±00.01 + 0.31±00.00 | 122.30±00.82 | -| F#/.NET Core | 3.130±0.065 | 38.63±00.03 + 18.63±01.03 | 117.75±01.18 | -| Python/pypy | 3.580±0.002 | 65.49±00.10 + 30.62±00.15 | 155.88±01.19 | -| Go/gccgo | 3.716±0.007 | 25.42±00.09 + 7.60±00.21 | 167.47±00.66 | -| C#/.NET Core | 3.748±0.081 | 34.49±00.06 + 20.71±03.36 | 137.05±01.81 | -| Tcl | 3.993±0.005 | 5.09±00.02 + 0.16±00.00 | 160.32±00.37 | -| C#/Mono | 4.698±0.019 | 25.75±00.07 + 18.71±00.09 | 194.78±00.66 | -| Ruby/truffleruby (--jvm) | 5.090±0.008 | 343.44±03.17 + 242.66±37.11 | 247.93±01.44 | -| Julia | 5.095±0.007 | 228.19±00.26 + 62.22±00.04 | 190.73±02.14 | -| Ruby/jruby | 10.597±0.088 | 182.58±00.94 + 77.53±03.02 | 422.40±02.95 | -| Perl (MIME::Base64::Perl) | 13.988±0.057 | 16.16±00.09 + 0.22±00.03 | 575.68±03.73 | -| Ruby/truffleruby | 17.438±0.022 | 281.42±00.63 + 235.47±06.16 | 701.31±05.07 | +| C/gcc (aklomp) | 0.101±0.000 | 2.10±00.02 + 0.00±00.00 | 4.83±00.05 | +| C/clang (aklomp) | 0.101±0.000 | 2.16±00.01 + 0.00±00.00 | 4.81±00.05 | +| Rust | 0.970±0.000 | 2.38±00.03 + 0.12±00.01 | 39.54±00.34 | +| C/clang | 0.997±0.000 | 2.09±00.02 + 0.00±00.00 | 37.34±00.26 | +| C/gcc | 1.010±0.000 | 2.11±00.03 + 0.00±00.00 | 37.86±00.12 | +| D/ldc2 | 1.042±0.001 | 3.09±00.04 + 3.96±00.01 | 43.46±00.77 | +| Nim/gcc | 1.081±0.001 | 1.63±00.05 + 5.39±00.05 | 42.90±00.19 | +| Nim/clang | 1.094±0.001 | 1.90±00.04 + 5.29±00.03 | 43.77±00.20 | +| V/clang | 1.160±0.007 | 2.36±00.03 + 1.29±00.15 | 47.30±00.49 | +| Crystal | 1.181±0.002 | 3.49±00.04 + 1.45±00.01 | 52.75±00.34 | +| V/gcc | 1.205±0.003 | 2.37±00.03 + 1.24±00.03 | 49.50±00.32 | +| Ruby (--jit) | 1.384±0.001 | 270.92±00.07 + 67.47±00.05 | 53.89±00.29 | +| Ruby | 1.389±0.001 | 14.63±00.02 + 58.67±00.03 | 53.74±00.10 | +| Java | 1.520±0.012 | 39.39±00.04 + 262.48±23.42 | 62.01±00.87 | +| Scala | 1.603±0.003 | 65.19±00.12 + 326.86±15.35 | 68.76±00.66 | +| Kotlin/JVM | 1.635±0.002 | 42.55±00.07 + 249.61±00.86 | 69.68±00.77 | +| Vala/gcc | 1.643±0.001 | 5.46±00.04 + 0.19±00.04 | 63.47±00.70 | +| Vala/clang | 1.643±0.001 | 5.46±00.04 + 0.22±00.05 | 62.97±00.40 | +| C++/clang++ (libcrypto) | 1.715±0.002 | 5.10±00.11 + 0.65±00.03 | 69.12±00.99 | +| C++/g++ (libcrypto) | 1.715±0.004 | 5.64±00.07 + 0.66±00.03 | 69.34±00.49 | +| Node.js | 1.743±0.006 | 40.76±00.04 + 38.86±00.02 | 70.15±00.65 | +| Perl (MIME::Base64) | 1.791±0.000 | 14.70±00.08 + 0.16±00.03 | 70.22±00.07 | +| Go | 1.875±0.002 | 4.22±00.05 + 3.92±00.05 | 80.99±00.49 | +| PHP | 2.093±0.017 | 17.79±00.03 + 0.00±00.00 | 84.17±00.78 | +| D/gdc | 2.442±0.003 | 7.52±00.07 + 3.35±00.00 | 108.08±00.52 | +| D/dmd | 2.739±0.001 | 3.60±00.12 + 3.85±00.05 | 119.70±00.68 | +| Python | 2.837±0.002 | 10.36±00.03 + 0.55±00.06 | 112.86±00.30 | +| Zig | 3.067±0.002 | 1.45±00.04 + 0.00±00.00 | 122.43±00.62 | +| F#/.NET Core | 3.202±0.052 | 38.62±00.06 + 18.68±00.71 | 120.67±01.23 | +| Python/pypy | 3.581±0.002 | 64.67±00.11 + 31.23±00.04 | 156.54±00.94 | +| Tcl | 3.685±0.078 | 5.12±00.06 + 0.00±00.00 | 149.06±01.75 | +| Go/gccgo | 3.720±0.002 | 25.62±00.20 + 7.71±00.17 | 168.84±00.90 | +| C#/.NET Core | 3.726±0.053 | 34.67±00.08 + 19.67±01.47 | 137.24±01.33 | +| C#/Mono | 4.692±0.014 | 25.71±00.08 + 18.74±00.03 | 193.29±01.07 | +| Julia | 5.023±0.004 | 244.56±00.09 + 42.28±00.09 | 188.22±02.10 | +| Ruby/truffleruby (--jvm) | 5.072±0.012 | 347.27±07.42 + 168.12±27.78 | 234.49±01.53 | +| Ruby/jruby | 10.519±0.026 | 182.81±02.29 + 80.63±02.65 | 420.63±01.57 | +| Perl (MIME::Base64::Perl) | 13.790±0.053 | 16.12±00.07 + 0.31±00.04 | 573.08±04.60 | +| Ruby/truffleruby | 16.232±0.006 | 295.77±00.95 + 232.04±04.13 | 647.25±03.84 | ## Json @@ -228,80 +228,80 @@ have some inaccuracies in number parsing: | Language | Time, s | Memory, MiB | Energy, J | | :---------------------------------- | ----------------------: | -------------------------------------------------: | -----------------------: | -| C++/g++ (simdjson On-Demand) | 0.067±0.000 | 113.45±00.09 + 59.81±00.00 | 2.78±00.03 | -| C++/clang++ (simdjson On-Demand) | 0.068±0.000 | 112.55±00.07 + 60.36±00.06 | 2.83±00.01 | -| C++/clang++ (DAW JSON Link NoCheck) | 0.077±0.000 | 112.44±00.03 + 0.00±00.00 | 3.14±00.01 | -| C++/g++ (DAW JSON Link NoCheck) | 0.079±0.000 | 113.19±00.03 + 0.00±00.00 | 3.16±00.02 | -| C++/g++ (DAW JSON Link) | 0.087±0.000 | 113.22±00.07 + 0.00±00.00 | 3.58±00.03 | -| C++/clang++ (DAW JSON Link) | 0.089±0.000 | 112.44±00.02 + 0.00±00.00 | 3.67±00.04 | -| Rust (Serde Custom) | 0.107±0.000 | 111.99±00.05 + 0.00±00.00 | 4.56±00.02 | -| Rust (Serde Typed) | 0.112±0.000 | 111.97±00.07 + 12.03±00.00 | 4.72±00.01 | -| C++/g++ (gason) | 0.133±0.000 | 113.14±00.05 + 96.80±00.06 | 5.28±00.03 | -| C++/clang++ (simdjson DOM) | 0.136±0.001 | 112.48±00.03 + 177.15±00.06 | 5.79±00.03 | -| C++/g++ (simdjson DOM) | 0.138±0.000 | 113.01±00.09 + 176.39±00.19 | 5.88±00.01 | -| D/ldc2 (Mir Asdf DOM) | 0.146±0.000 | 112.73±00.04 + 61.27±00.03 | 6.09±00.02 | -| C++/clang++ (gason) | 0.149±0.000 | 112.48±00.03 + 96.97±00.06 | 6.02±00.01 | -| C++/g++ (RapidJSON) | 0.167±0.000 | 113.26±00.05 + 126.54±00.42 | 6.93±00.04 | -| C++/clang++ (RapidJSON) | 0.221±0.000 | 112.45±00.00 + 129.02±00.04 | 8.98±00.04 | -| D/ldc2 (Mir Amazon's Ion DOM) | 0.231±0.000 | 112.72±00.05 + 80.80±00.00 | 9.50±00.02 | -| C++/g++ (RapidJSON Precise) | 0.246±0.000 | 113.24±00.03 + 128.82±00.06 | 10.41±00.10 | -| C++/g++ (Boost.JSON) | 0.394±0.000 | 113.22±00.03 + 435.88±00.04 | 16.44±00.13 | -| Nim/clang (jsony) | 0.399±0.000 | 112.16±00.02 + 42.34±00.03 | 16.95±00.22 | -| C++/g++ (RapidJSON SAX) | 0.404±0.001 | 112.96±00.04 + 0.00±00.00 | 16.68±00.07 | -| C++/clang++ (RapidJSON Precise) | 0.410±0.000 | 112.47±00.03 + 129.01±00.02 | 16.63±00.05 | -| C++/clang++ (Boost.JSON) | 0.413±0.000 | 112.44±00.00 + 436.25±00.06 | 17.23±00.20 | -| Nim/gcc (jsony) | 0.422±0.000 | 111.72±00.03 + 42.28±00.00 | 18.09±00.12 | -| C++/g++ (RapidJSON SAX Precise) | 0.450±0.001 | 112.96±00.01 + 0.00±00.00 | 19.34±00.09 | -| C++/clang++ (RapidJSON SAX) | 0.496±0.000 | 194.69±00.00 + 0.00±00.00 | 19.89±00.05 | -| Go (jsoniter) | 0.519±0.002 | 230.86±00.02 + 1.07±00.04 | 21.80±00.07 | -| Node.js | 0.548±0.003 | 147.87±00.07 + 188.65±00.28 | 25.00±00.14 | -| Java (DSL-JSON) | 0.621±0.015 | 258.17±00.07 + 138.46±00.77 | 32.18±00.99 | -| Rust (Serde Untyped) | 0.633±0.001 | 111.90±00.03 + 840.05±00.03 | 25.50±00.07 | -| V/clang | 0.635±0.001 | 111.23±00.05 + 496.21±00.00 | 26.63±00.29 | -| V/gcc | 0.635±0.001 | 111.25±00.02 + 496.12±00.03 | 26.51±00.25 | -| C++/clang++ (RapidJSON SAX Precise) | 0.658±0.001 | 194.71±00.03 + 0.00±00.00 | 26.74±00.12 | -| Python/pypy | 0.678±0.001 | 285.59±00.03 + 124.88±00.00 | 29.23±00.13 | -| Crystal (Pull) | 0.688±0.002 | 113.86±00.02 + 18.18±00.02 | 30.53±00.29 | -| Crystal (Schema) | 0.694±0.002 | 113.84±00.00 + 48.57±00.04 | 30.58±00.36 | -| Julia (JSON3) | 0.744±0.004 | 378.93±00.36 + 378.85±00.20 | 30.54±00.32 | -| C#/.NET Core (System.Text.Json) | 0.759±0.002 | 479.31±00.03 + 138.58±00.03 | 33.20±00.31 | -| Zig | 0.769±0.001 | 110.75±00.01 + 12.18±00.00 | 30.36±00.06 | -| Perl (Cpanel::JSON::XS) | 0.833±0.005 | 125.42±00.05 + 402.78±00.06 | 34.78±00.29 | -| Go | 0.855±0.001 | 117.10±00.06 + 79.79±00.11 | 35.57±00.01 | -| Nim/clang (Packedjson) | 0.929±0.000 | 112.50±00.02 + 294.16±00.00 | 38.21±00.10 | -| Crystal | 0.937±0.010 | 113.88±00.01 + 392.00±00.01 | 42.07±00.33 | -| PHP | 0.984±0.001 | 126.43±00.10 + 682.01±00.00 | 41.13±00.11 | -| Nim/gcc (Packedjson) | 1.010±0.000 | 112.00±00.04 + 294.16±00.00 | 41.38±00.17 | -| C++/clang++ (json-c) | 1.203±0.007 | 112.72±00.03 + 1216.17±00.04 | 50.96±00.27 | -| C++/g++ (json-c) | 1.208±0.009 | 113.28±00.10 + 1215.96±00.03 | 50.54±00.57 | -| Clojure | 1.217±0.014 | 450.12±06.93 + 535.88±48.40 | 64.53±00.76 | -| C++/clang++ (Nlohmann) | 1.253±0.002 | 112.62±00.04 + 360.14±00.02 | 53.05±00.28 | -| Go/gccgo | 1.263±0.003 | 139.06±00.07 + 83.52±00.15 | 52.29±00.14 | -| C#/.NET Core | 1.294±0.016 | 487.04±00.06 + 294.45±00.04 | 56.51±00.63 | -| Nim/clang | 1.315±0.002 | 112.34±00.12 + 925.29±00.10 | 54.34±00.27 | -| Nim/gcc | 1.349±0.002 | 111.95±00.09 + 919.68±00.06 | 56.49±00.36 | -| CPython (UltraJSON) | 1.440±0.003 | 121.97±00.01 + 543.94±02.33 | 53.47±00.22 | -| Ruby (--jit) | 1.465±0.002 | 381.01±00.02 + 262.87±00.01 | 61.51±00.41 | -| Ruby | 1.471±0.007 | 124.42±00.03 + 262.85±00.01 | 62.65±00.34 | -| C++/g++ (Nlohmann) | 1.476±0.005 | 113.25±00.04 + 447.92±00.04 | 60.35±00.21 | -| Python | 1.520±0.003 | 120.41±00.01 + 374.96±00.00 | 59.77±00.14 | -| F#/.NET Core (System.Text.Json) | 1.802±0.005 | 486.98±00.15 + 384.58±12.24 | 79.04±00.74 | -| Scala (uPickle) | 1.849±0.011 | 291.27±00.18 + 665.30±48.68 | 90.05±00.57 | -| Ruby (YAJL) | 1.983±0.025 | 124.21±00.01 + 282.40±00.00 | 83.42±01.05 | -| D/ldc2 | 2.085±0.003 | 113.15±00.02 + 680.09±00.02 | 86.06±00.41 | -| C#/Mono | 2.293±0.021 | 252.49±00.14 + 31.58±00.02 | 96.48±01.08 | -| Haskell | 2.688±0.004 | 115.95±00.03 + 716.91±00.26 | 108.80±00.08 | -| Rust (jq) | 2.791±0.006 | 113.65±00.07 + 778.76±00.90 | 115.54±00.54 | -| Ruby/jruby | 3.113±0.027 | 442.08±03.76 + 933.59±104.90 | 157.63±03.53 | -| C++/clang++ (Boost.PropertyTree) | 3.126±0.003 | 194.87±00.02 + 1232.87±00.01 | 129.76±00.70 | -| C++/g++ (Boost.PropertyTree) | 3.338±0.006 | 113.14±00.03 + 1440.12±00.02 | 135.06±00.77 | -| D/gdc | 3.681±0.009 | 117.28±00.03 + 680.72±00.08 | 157.65±00.82 | -| Vala/gcc | 3.897±0.009 | 114.69±00.01 + 940.84±00.03 | 165.64±00.87 | -| Vala/clang | 4.031±0.009 | 114.69±00.03 + 876.74±00.02 | 170.91±00.96 | -| D/dmd | 4.524±0.007 | 113.67±00.02 + 680.09±00.02 | 182.17±00.86 | -| Perl (JSON::Tiny) | 9.756±0.035 | 125.79±00.04 + 528.88±00.06 | 422.50±03.92 | -| Ruby/truffleruby (--jvm) | 16.470±0.253 | 461.41±25.16 + 2492.61±30.69 | 1069.49±16.47 | -| Ruby/truffleruby | 22.345±0.910 | 417.31±01.29 + 2336.16±85.83 | 1080.54±36.02 | +| C++/g++ (simdjson On-Demand) | 0.066±0.000 | 112.99±00.03 + 60.31±00.07 | 2.73±00.01 | +| C++/clang++ (simdjson On-Demand) | 0.067±0.000 | 112.43±00.04 + 60.36±00.00 | 2.77±00.02 | +| C++/clang++ (DAW JSON Link NoCheck) | 0.070±0.001 | 112.39±00.06 + 0.00±00.00 | 2.94±00.04 | +| C++/g++ (DAW JSON Link NoCheck) | 0.080±0.000 | 113.28±00.02 + 0.00±00.00 | 3.23±00.03 | +| C++/g++ (DAW JSON Link) | 0.081±0.000 | 113.21±00.08 + 0.00±00.00 | 3.41±00.02 | +| C++/clang++ (DAW JSON Link) | 0.096±0.000 | 112.46±00.03 + 0.00±00.00 | 3.93±00.01 | +| Rust (Serde Custom) | 0.106±0.000 | 111.64±00.02 + 0.00±00.00 | 4.42±00.04 | +| Rust (Serde Typed) | 0.107±0.000 | 111.64±00.02 + 11.52±00.08 | 4.48±00.03 | +| C++/g++ (gason) | 0.132±0.000 | 113.06±00.11 + 96.85±00.06 | 5.23±00.01 | +| C++/g++ (simdjson DOM) | 0.139±0.000 | 113.21±00.24 + 175.85±00.23 | 5.92±00.03 | +| C++/clang++ (gason) | 0.143±0.000 | 112.40±00.06 + 96.97±00.06 | 5.82±00.03 | +| D/ldc2 (Mir Asdf DOM) | 0.145±0.000 | 112.66±00.02 + 61.26±00.01 | 6.03±00.02 | +| C++/clang++ (simdjson DOM) | 0.146±0.000 | 112.47±00.03 + 177.15±00.00 | 6.27±00.02 | +| C++/g++ (RapidJSON) | 0.166±0.000 | 113.32±00.02 + 127.47±00.30 | 7.05±00.07 | +| C++/clang++ (RapidJSON) | 0.235±0.000 | 112.36±00.07 + 129.04±00.05 | 9.77±00.03 | +| D/ldc2 (Mir Amazon's Ion DOM) | 0.236±0.000 | 112.79±00.03 + 80.70±00.00 | 9.81±00.06 | +| C++/g++ (RapidJSON Precise) | 0.244±0.000 | 113.29±00.02 + 128.82±00.05 | 10.24±00.08 | +| C++/clang++ (RapidJSON Precise) | 0.314±0.000 | 112.47±00.04 + 129.00±00.03 | 13.49±00.06 | +| C++/g++ (Boost.JSON) | 0.396±0.000 | 113.32±00.04 + 435.82±00.06 | 16.56±00.02 | +| C++/g++ (RapidJSON SAX) | 0.404±0.001 | 113.05±00.01 + 0.00±00.00 | 16.62±00.05 | +| Nim/clang (jsony) | 0.414±0.000 | 111.40±00.04 + 42.97±00.11 | 17.73±00.19 | +| C++/clang++ (Boost.JSON) | 0.418±0.001 | 112.46±00.05 + 436.25±00.06 | 17.59±00.14 | +| Nim/gcc (jsony) | 0.422±0.000 | 111.10±00.04 + 42.84±00.14 | 17.75±00.15 | +| C++/g++ (RapidJSON SAX Precise) | 0.448±0.000 | 113.07±00.01 + 0.00±00.00 | 19.27±00.06 | +| Go (jsoniter) | 0.520±0.002 | 231.00±00.12 + 1.24±00.08 | 22.19±00.12 | +| C++/clang++ (RapidJSON SAX) | 0.531±0.000 | 194.70±00.04 + 0.00±00.00 | 20.74±00.17 | +| Node.js | 0.546±0.006 | 150.03±00.06 + 188.93±00.13 | 25.76±00.18 | +| Java (DSL-JSON) | 0.619±0.012 | 259.64±00.07 + 188.73±08.78 | 31.78±00.67 | +| V/gcc | 0.633±0.001 | 111.91±00.05 + 496.18±00.09 | 26.27±00.15 | +| Rust (Serde Untyped) | 0.639±0.001 | 111.61±00.03 + 840.27±00.03 | 25.87±00.18 | +| V/clang | 0.639±0.000 | 111.97±00.03 + 496.24±00.03 | 26.66±00.17 | +| C++/clang++ (RapidJSON SAX Precise) | 0.663±0.000 | 194.66±00.03 + 0.00±00.00 | 26.73±00.14 | +| Python/pypy | 0.671±0.002 | 284.89±00.05 + 125.41±00.04 | 29.24±00.15 | +| Crystal (Pull) | 0.687±0.005 | 113.42±00.04 + 18.47±00.03 | 30.07±00.17 | +| Crystal (Schema) | 0.704±0.002 | 113.40±00.02 + 48.88±00.03 | 30.82±00.16 | +| C#/.NET Core (System.Text.Json) | 0.755±0.001 | 479.22±00.04 + 138.55±00.00 | 32.96±00.31 | +| Zig | 0.773±0.000 | 110.75±00.01 + 11.98±00.06 | 30.65±00.20 | +| Julia (JSON3) | 0.818±0.005 | 452.44±00.58 + 212.54±02.91 | 33.11±00.26 | +| Perl (Cpanel::JSON::XS) | 0.834±0.009 | 125.32±00.10 + 402.87±00.02 | 34.85±00.42 | +| Go | 0.856±0.001 | 117.22±00.02 + 79.73±00.22 | 35.32±00.31 | +| Crystal | 0.937±0.005 | 113.52±00.08 + 392.53±00.03 | 42.18±00.34 | +| PHP | 0.982±0.002 | 126.96±00.04 + 682.21±00.00 | 40.85±00.23 | +| Nim/clang (Packedjson) | 0.991±0.002 | 112.15±00.02 + 294.42±00.00 | 40.83±00.21 | +| Nim/gcc (Packedjson) | 1.010±0.001 | 111.83±00.03 + 294.42±00.00 | 41.89±00.21 | +| C++/clang++ (json-c) | 1.194±0.007 | 112.71±00.07 + 1216.11±00.03 | 50.61±00.93 | +| C++/g++ (json-c) | 1.198±0.006 | 113.43±00.04 + 1215.96±00.00 | 50.29±00.65 | +| Clojure | 1.199±0.019 | 464.27±05.08 + 541.31±49.27 | 61.77±00.48 | +| Go/gccgo | 1.259±0.003 | 138.89±00.04 + 83.65±00.10 | 53.56±00.15 | +| C#/.NET Core | 1.283±0.013 | 486.95±00.07 + 294.45±00.04 | 55.84±00.54 | +| C++/clang++ (Nlohmann) | 1.297±0.002 | 112.59±00.05 + 360.20±00.00 | 54.81±00.28 | +| Nim/gcc | 1.345±0.002 | 111.87±00.04 + 919.93±00.00 | 56.30±00.21 | +| Nim/clang | 1.351±0.004 | 112.15±00.01 + 925.03±00.00 | 55.67±00.23 | +| Ruby (--jit) | 1.448±0.007 | 380.59±00.07 + 263.15±00.02 | 61.92±00.27 | +| Ruby | 1.449±0.003 | 123.97±00.02 + 263.11±00.01 | 61.61±00.15 | +| CPython (UltraJSON) | 1.454±0.003 | 122.26±00.13 + 545.52±01.28 | 54.11±00.21 | +| C++/g++ (Nlohmann) | 1.489±0.008 | 113.32±00.03 + 447.92±00.04 | 60.89±00.57 | +| Python | 1.524±0.002 | 120.30±00.07 + 375.25±00.03 | 60.10±00.20 | +| F#/.NET Core (System.Text.Json) | 1.777±0.004 | 486.91±00.03 + 345.26±00.13 | 77.46±00.66 | +| Ruby (YAJL) | 1.962±0.010 | 123.89±00.04 + 282.64±00.07 | 82.95±00.75 | +| Scala (uPickle) | 1.997±0.014 | 292.25±00.16 + 702.97±67.44 | 97.94±00.61 | +| D/ldc2 | 2.079±0.003 | 112.90±00.05 + 680.22±00.05 | 86.04±00.27 | +| C#/Mono | 2.306±0.027 | 252.32±00.07 + 31.57±00.02 | 97.12±00.89 | +| Haskell | 2.590±0.005 | 117.60±00.03 + 713.50±00.38 | 110.05±01.10 | +| Rust (jq) | 2.804±0.003 | 113.77±00.06 + 779.44±00.39 | 116.12±00.64 | +| Ruby/jruby | 2.998±0.038 | 442.51±05.84 + 930.50±130.38 | 151.53±02.51 | +| C++/clang++ (Boost.PropertyTree) | 3.158±0.003 | 194.88±00.03 + 1232.84±00.06 | 131.20±00.85 | +| C++/g++ (Boost.PropertyTree) | 3.341±0.009 | 113.17±00.03 + 1440.16±00.03 | 139.24±00.94 | +| Vala/gcc | 3.613±0.008 | 114.75±00.06 + 940.52±00.09 | 155.10±01.78 | +| Vala/clang | 3.613±0.014 | 114.75±00.03 + 940.56±00.09 | 153.78±01.48 | +| D/gdc | 3.656±0.008 | 116.62±00.05 + 681.22±00.10 | 156.04±00.72 | +| D/dmd | 4.534±0.004 | 113.23±00.04 + 680.46±00.04 | 181.45±00.78 | +| Perl (JSON::Tiny) | 9.712±0.100 | 125.59±00.03 + 529.02±00.02 | 427.10±03.42 | +| Ruby/truffleruby (--jvm) | 14.091±0.265 | 477.27±14.72 + 2545.17±68.47 | 912.67±20.03 | +| Ruby/truffleruby | 24.040±0.350 | 433.56±02.08 + 2561.27±48.17 | 1194.76±20.42 | ## Matmul @@ -309,51 +309,51 @@ Testing allocating and multiplying matrices. [Matmul](matmul) -| Language | Time, s | Memory, MiB | Energy, J | -| :----------------------- | ------------------------: | ------------------------------------------------: | -------------------------: | -| D/ldc2 (lubeck) | 0.046±0.000 | 6.57±00.04 + 54.95±00.10 | 4.66±00.03 | -| Nim/gcc (Arraymancer) | 0.066±0.002 | 5.52±00.05 + 54.73±00.11 | 5.46±00.13 | -| C++/clang++ (Eigen) | 0.068±0.003 | 38.90±02.59 + 51.51±02.58 | 5.53±00.15 | -| Python (NumPy) | 0.070±0.000 | 28.41±00.12 + 54.96±00.04 | 6.49±00.04 | -| C++/g++ (Eigen) | 0.070±0.002 | 29.55±08.72 + 60.24±08.76 | 5.13±00.13 | -| Nim/clang (Arraymancer) | 0.072±0.001 | 6.34±00.04 + 54.76±00.08 | 6.07±00.07 | -| Java (ND4J) | 0.081±0.005 | 104.24±01.83 + 92.25±00.16 | 6.35±00.31 | -| Rust (ndarray) | 0.090±0.000 | 2.63±00.04 + 68.48±00.00 | 6.00±00.03 | -| Julia (threads: 4) | 0.191±0.000 | 235.35±00.21 + 49.23±00.90 | 15.54±00.02 | -| Julia (threads: 1) | 0.510±0.000 | 235.65±00.18 + 49.17±00.66 | 21.51±00.03 | -| Julia (no BLAS) | 1.046±0.010 | 225.72±00.30 + 51.62±00.01 | 46.15±00.39 | -| D/ldc2 | 1.716±0.001 | 3.52±00.03 + 70.39±00.00 | 63.31±00.11 | -| D/gdc | 1.868±0.001 | 7.55±00.04 + 70.43±00.03 | 73.08±00.12 | -| D/dmd | 1.875±0.002 | 3.63±00.04 + 70.41±00.00 | 71.06±00.11 | -| C/gcc | 3.029±0.000 | 1.32±00.00 + 68.80±00.04 | 109.29±00.43 | -| Vala/clang | 3.060±0.000 | 4.10±00.03 + 69.79±00.08 | 107.55±00.90 | -| Rust | 3.065±0.000 | 2.45±00.05 + 68.57±00.00 | 105.15±00.17 | -| C/clang | 3.067±0.000 | 1.38±00.01 + 68.77±00.02 | 105.98±00.38 | -| Zig | 3.085±0.001 | 1.34±00.03 + 68.89±00.00 | 109.27±00.08 | -| Nim/gcc | 3.088±0.001 | 2.43±00.06 + 67.19±00.67 | 111.11±00.30 | -| Swift | 3.094±0.000 | 6.49±00.02 + 68.88±00.01 | 108.15±00.40 | -| Java | 3.095±0.000 | 38.11±00.07 + 68.41±00.13 | 107.24±00.38 | -| Vala/gcc | 3.125±0.001 | 4.13±00.02 + 69.79±00.07 | 114.53±00.06 | -| Nim/clang | 3.136±0.001 | 2.88±00.04 + 70.44±00.06 | 107.79±00.13 | -| V/gcc | 3.146±0.000 | 1.87±00.06 + 68.84±00.00 | 117.55±01.78 | -| V/clang | 3.147±0.000 | 2.22±00.07 + 68.84±00.00 | 115.64±00.13 | -| Go | 3.152±0.000 | 3.63±00.04 + 73.18±00.09 | 113.80±00.18 | -| Go/gccgo | 3.159±0.000 | 24.91±00.09 + 73.53±00.12 | 112.23±00.10 | -| Crystal | 3.161±0.001 | 4.25±00.02 + 59.67±00.03 | 115.88±00.10 | -| Node.js | 3.213±0.001 | 41.96±00.13 + 71.22±00.19 | 129.55±00.09 | -| Python/pypy | 3.270±0.001 | 65.78±00.05 + 68.63±00.01 | 136.14±00.12 | -| Scala | 3.322±0.007 | 65.01±00.11 + 133.87±00.15 | 118.54±00.41 | -| C#/.NET Core | 4.874±0.001 | 34.67±00.10 + 69.34±00.00 | 196.06±00.16 | -| Kotlin/JVM | 6.937±0.001 | 39.71±00.10 + 68.16±00.22 | 271.50±00.34 | -| C#/Mono | 7.413±0.001 | 25.56±00.12 + 69.54±00.03 | 299.15±00.74 | -| Ruby/truffleruby | 14.604±1.175 | 351.93±01.70 + 465.25±18.48 | 553.17±37.67 | -| Ruby/truffleruby (--jvm) | 21.393±0.051 | 437.31±33.21 + 961.78±75.62 | 804.61±05.21 | -| Ruby | 180.926±2.288 | 15.46±00.03 + 68.58±00.00 | 7927.39±113.83 | -| Ruby (--jit) | 182.285±0.371 | 272.05±00.05 + 68.84±00.00 | 7995.18±94.11 | -| Perl | 221.133±0.748 | 9.56±00.04 + 599.55±00.02 | 9001.25±37.66 | -| Python | 261.473±0.827 | 10.58±00.05 + 68.84±00.00 | 10445.40±55.25 | -| Tcl | 298.785±5.053 | 7.51±00.04 + 400.15±00.03 | 12660.24±177.21 | -| Ruby/jruby | 404.829±24.918 | 266.19±01.83 + 779.12±54.18 | 16982.36±869.82 | +| Language | Time, s | Memory, MiB | Energy, J | +| :----------------------- | -----------------------: | ------------------------------------------------: | -------------------------: | +| D/ldc2 (lubeck) | 0.043±0.000 | 5.84±00.04 + 57.97±00.13 | 4.42±00.02 | +| Nim/gcc (Arraymancer) | 0.063±0.006 | 4.69±00.01 + 58.04±00.15 | 5.21±00.52 | +| Python (NumPy) | 0.067±0.000 | 30.06±00.12 + 58.10±00.03 | 6.29±00.03 | +| C++/clang++ (Eigen) | 0.071±0.003 | 38.76±05.62 + 51.51±05.67 | 5.87±00.10 | +| C++/g++ (Eigen) | 0.076±0.003 | 19.72±13.35 + 70.30±13.23 | 5.60±00.15 | +| Java (ND4J) | 0.078±0.001 | 105.22±01.56 + 92.03±00.12 | 6.13±00.06 | +| Nim/clang (Arraymancer) | 0.081±0.012 | 6.19±00.07 + 57.45±00.14 | 6.87±00.69 | +| Rust (ndarray) | 0.090±0.001 | 2.24±00.04 + 68.74±00.05 | 6.11±00.07 | +| Julia (threads: 2) | 0.101±0.000 | 265.20±00.47 + 46.43±00.13 | 5.91±00.02 | +| Julia (threads: 1) | 0.151±0.000 | 265.55±00.25 + 45.95±00.09 | 7.30±00.08 | +| Julia (no BLAS) | 1.041±0.012 | 243.90±00.24 + 51.54±00.04 | 46.04±00.54 | +| D/ldc2 | 1.715±0.002 | 3.17±00.02 + 70.49±00.03 | 63.20±00.18 | +| D/gdc | 1.870±0.002 | 6.81±00.06 + 70.97±00.03 | 73.21±00.21 | +| D/dmd | 1.874±0.002 | 3.42±00.02 + 70.48±00.01 | 71.16±00.16 | +| C/gcc | 3.029±0.000 | 1.50±00.02 + 68.74±00.04 | 111.52±00.91 | +| Vala/clang | 3.060±0.001 | 3.93±00.08 + 69.88±00.07 | 105.78±00.97 | +| C/clang | 3.062±0.000 | 1.51±00.01 + 68.73±00.03 | 104.53±00.17 | +| Rust | 3.064±0.001 | 2.02±00.04 + 68.88±00.07 | 104.85±00.19 | +| Zig | 3.085±0.001 | 1.40±00.02 + 68.89±00.00 | 109.21±00.14 | +| Nim/gcc | 3.089±0.002 | 2.51±00.03 + 66.26±00.00 | 114.20±00.48 | +| Java | 3.089±0.001 | 38.29±00.04 + 68.54±00.13 | 109.95±00.09 | +| Swift | 3.096±0.000 | 6.55±00.03 + 68.91±00.01 | 110.89±01.35 | +| Nim/clang | 3.121±0.001 | 2.78±00.01 + 66.00±00.00 | 107.00±00.38 | +| Vala/gcc | 3.125±0.001 | 3.95±00.03 + 69.91±00.04 | 114.45±00.11 | +| Go | 3.152±0.000 | 3.70±00.04 + 73.19±00.09 | 115.16±01.26 | +| Crystal | 3.160±0.001 | 3.78±00.05 + 59.96±00.01 | 115.82±00.30 | +| Go/gccgo | 3.160±0.001 | 24.82±00.03 + 73.40±00.05 | 112.08±00.21 | +| V/gcc | 3.188±0.001 | 2.53±00.12 + 70.90±00.00 | 120.57±00.24 | +| V/clang | 3.194±0.001 | 2.89±00.03 + 70.90±00.00 | 120.75±00.24 | +| Node.js | 3.208±0.001 | 45.17±00.06 + 70.61±00.00 | 129.36±00.17 | +| Python/pypy | 3.268±0.002 | 65.50±00.07 + 68.63±00.04 | 135.95±00.19 | +| Scala | 3.334±0.004 | 66.21±00.12 + 147.70±00.19 | 122.19±00.14 | +| Kotlin/JVM | 3.680±0.003 | 40.47±00.06 + 68.25±00.27 | 153.89±00.35 | +| C#/.NET Core | 4.874±0.000 | 34.59±00.03 + 69.33±00.00 | 195.95±00.22 | +| C#/Mono | 7.413±0.000 | 25.43±00.10 + 69.52±00.02 | 302.00±03.34 | +| Ruby/truffleruby | 16.489±2.861 | 366.34±03.56 + 447.40±65.47 | 625.65±94.01 | +| Ruby/truffleruby (--jvm) | 25.232±0.159 | 460.71±32.48 + 446.25±62.62 | 903.31±14.59 | +| Ruby | 199.779±1.180 | 14.88±00.07 + 69.07±00.02 | 8676.55±45.16 | +| Ruby (--jit) | 202.181±2.040 | 271.47±00.04 + 69.06±00.02 | 8655.57±187.67 | +| Perl | 222.566±1.469 | 9.40±00.08 + 599.71±00.03 | 9015.71±75.12 | +| Python | 280.771±2.283 | 10.62±00.07 + 69.09±00.06 | 11178.73±44.71 | +| Tcl | 334.061±2.020 | 7.35±00.06 + 400.18±00.00 | 13954.09±93.63 | +| Ruby/jruby | 389.418±5.069 | 268.52±02.25 + 709.04±17.44 | 16350.68±256.43 | ## Primes @@ -366,26 +366,28 @@ Testing: | Language | Time, s | Memory, MiB | Energy, J | | :----------------------- | ---------------------: | ------------------------------------------------: | ----------------------: | -| Zig | 0.059±0.000 | 0.75±00.00 + 49.41±00.04 | 2.44±00.01 | -| Rust | 0.093±0.000 | 2.19±00.05 + 77.27±00.00 | 3.78±00.01 | -| Crystal | 0.123±0.000 | 3.48±00.02 + 89.43±00.64 | 5.54±00.06 | -| C++/g++ | 0.132±0.000 | 3.54±00.07 + 85.27±00.26 | 5.36±00.04 | -| C++/clang++ | 0.143±0.000 | 3.08±00.08 + 75.41±00.00 | 5.63±00.05 | -| V/clang | 0.148±0.000 | 0.72±00.00 + 262.80±00.57 | 6.15±00.06 | -| V/gcc | 0.150±0.000 | 0.71±00.06 + 259.28±00.48 | 6.28±00.04 | -| Java | 0.155±0.002 | 36.96±00.11 + 144.23±05.61 | 8.63±00.15 | -| Node.js | 0.256±0.003 | 36.96±00.11 + 181.19±02.81 | 12.80±00.06 | -| Lua/luajit | 0.337±0.001 | 2.49±00.03 + 156.75±00.38 | 12.87±00.03 | -| Scala | 0.391±0.005 | 66.10±00.30 + 258.71±02.41 | 22.50±00.24 | -| Julia | 0.557±0.001 | 229.65±00.18 + 366.99±02.17 | 22.00±00.09 | -| Python/pypy | 0.880±0.002 | 64.77±00.07 + 249.36±00.15 | 34.55±00.17 | -| Ruby (--jit) | 1.443±0.005 | 270.96±00.02 + 146.80±00.04 | 58.79±00.46 | -| Lua | 1.480±0.005 | 2.32±00.01 + 283.97±00.87 | 57.87±00.19 | -| Ruby/truffleruby | 1.563±0.012 | 287.18±00.42 + 334.66±24.08 | 80.19±00.54 | -| Ruby/jruby | 1.883±0.026 | 182.58±00.29 + 370.42±55.17 | 101.51±01.01 | -| Ruby/truffleruby (--jvm) | 1.895±0.018 | 348.72±09.17 + 526.76±97.23 | 123.08±01.27 | -| Ruby | 2.032±0.004 | 14.36±00.02 + 146.75±00.00 | 82.09±00.60 | -| Python | 4.806±0.058 | 10.41±00.06 + 234.92±00.64 | 190.06±02.19 | +| Zig | 0.059±0.000 | 0.92±00.02 + 49.27±00.13 | 2.41±00.02 | +| Rust | 0.094±0.000 | 0.93±00.01 + 78.38±00.06 | 3.79±00.02 | +| Crystal | 0.122±0.000 | 2.99±00.05 + 90.76±00.15 | 5.52±00.01 | +| C++/g++ | 0.132±0.000 | 3.57±00.05 + 85.38±00.39 | 5.38±00.06 | +| C++/clang++ | 0.140±0.000 | 1.67±00.01 + 76.83±00.03 | 5.49±00.04 | +| V/clang | 0.147±0.000 | 0.90±00.02 + 265.66±00.38 | 6.08±00.02 | +| V/gcc | 0.150±0.000 | 0.89±00.01 + 259.63±00.45 | 6.24±00.07 | +| Java | 0.157±0.002 | 37.73±00.17 + 153.30±04.68 | 8.82±00.11 | +| Node.js | 0.251±0.001 | 40.02±00.08 + 176.44±00.42 | 12.63±00.08 | +| Lua/luajit | 0.338±0.002 | 2.59±00.05 + 156.86±01.28 | 13.24±00.08 | +| Scala | 0.360±0.004 | 67.32±00.11 + 243.01±06.35 | 18.56±00.08 | +| Nim/clang | 0.423±0.001 | 1.94±00.01 + 1163.25±02.84 | 16.58±00.10 | +| Nim/gcc | 0.432±0.000 | 1.67±00.06 + 1170.86±01.80 | 16.62±00.14 | +| Julia | 0.604±0.001 | 245.48±00.27 + 376.33±00.44 | 23.40±00.14 | +| Python/pypy | 0.882±0.001 | 63.60±00.05 + 250.82±00.53 | 34.48±00.19 | +| Ruby/truffleruby (--jvm) | 1.396±0.036 | 348.32±03.87 + 486.92±22.89 | 91.61±02.10 | +| Ruby (--jit) | 1.445±0.003 | 270.51±00.03 + 147.09±00.07 | 58.62±00.50 | +| Lua | 1.483±0.005 | 2.27±00.03 + 283.81±00.55 | 57.70±00.54 | +| Ruby/truffleruby | 1.513±0.014 | 297.33±00.99 + 420.61±05.97 | 84.26±00.90 | +| Ruby/jruby | 1.991±0.045 | 183.52±01.96 + 523.52±28.85 | 103.87±03.74 | +| Ruby | 2.057±0.001 | 13.89±00.04 + 147.04±00.02 | 82.72±00.75 | +| Python | 4.979±0.045 | 10.53±00.05 + 234.86±00.90 | 193.43±02.10 | # Tests Execution @@ -397,46 +399,46 @@ Base Docker image: Debian GNU/Linux bookworm/sid | Language | Version | | ---------------- | ------------------------------- | -| .NET Core | 6.0.203 | -| C#/.NET Core | 4.1.0-5.22128.4 (5d10d428) | +| .NET Core | 6.0.401 | +| C#/.NET Core | 4.3.0-3.22415.1 (8301d484) | | C#/Mono | 6.8.0.105 | | Chez Scheme | 9.5.4 | | Clojure | "1.11.1" | -| Crystal | 1.4.1 | -| D/dmd | v2.100.0 | -| D/gdc | 12.1.0 | -| D/ldc2 | 1.29.0 | +| Crystal | 1.5.1 | +| D/dmd | v2.100.2 | +| D/gdc | 12.2.0 | +| D/ldc2 | 1.30.0 | | Elixir | 1.12.2 | -| F#/.NET Core | 12.0.1.0 for F# 6.0 | -| Go | go1.18.2 | -| Go/gccgo | 12.1.0 | -| Haskell | 9.2.3 | -| Java | 18.0.1.1 | -| Julia | v"1.7.3" | -| Kotlin | 1.6.21 | +| F#/.NET Core | 12.0.4.0 for F# 6.0 | +| Go | go1.19.1 | +| Go/gccgo | 12.2.0 | +| Haskell | 9.4.2 | +| Java | 19 | +| Julia | v"1.8.1" | +| Kotlin | 1.7.10 | | Lua | 5.4.4 | | Lua/luajit | 2.1.0-beta3 | | MLton | 20210117 | | Nim | 1.6.6 | -| Node.js | v18.2.0 | +| Node.js | v18.9.0 | | OCaml | 4.14.0 | | PHP | 8.1.5 | | Perl | v5.34.0 | -| Python | 3.10.4 | +| Python | 3.10.7 | | Python/pypy | 7.3.9-final0 for Python 3.9.12 | -| Racket | "8.5" | +| Racket | "8.6" | | Ruby | 3.1.2p20 | -| Ruby/jruby | 9.3.4.0 | -| Ruby/truffleruby | 22.1.0 | -| Rust | 1.61.0 | -| Scala | 3.1.2 | -| Swift | 5.6.1 | +| Ruby/jruby | 9.3.8.0 | +| Ruby/truffleruby | 22.2.0 | +| Rust | 1.64.0 | +| Scala | 3.2.0 | +| Swift | 5.7 | | Tcl | 8.6 | -| V | 0.2.4 a3c0a9b | -| Vala | 0.56.1 | +| V | 0.3.1 993802f | +| Vala | 0.56.3 | | Zig | 0.9.1 | -| clang/clang++ | 13.0.1 | -| gcc/g++ | 12.1.0 | +| clang/clang++ | 14.0.6 | +| gcc/g++ | 12.2.0 | ## Using Docker diff --git a/common/commands.mk b/common/commands.mk index c1b56d2e..52762a6b 100644 --- a/common/commands.mk +++ b/common/commands.mk @@ -1,5 +1,4 @@ COMMON_FLAGS := -Wall -Wextra -pedantic -Wcast-align -O3 -march=native -flto=auto -Wa,-mbranches-within-32B-boundaries -# COMMON_FLAGS := -g -Wall -Wextra -pedantic -Wcast-align -fsanitize=address -fsanitize=undefined GCC_FLAGS := $(COMMON_FLAGS) CLANG_FLAGS := $(COMMON_FLAGS) LIBNOTIFY_FLAGS := -I../common/libnotify ../common/libnotify/target/libnotify.a @@ -9,19 +8,19 @@ VALAC_FLAGS := --disable-assert -X -O3 -X -march=native -X -flto -X -Wa,-mbranch V_FLAGS := -prod ZIG_FLAGS := -O ReleaseFast -CLANG_BUILD = clang $(CLANG_FLAGS) -std=c17 -o $@ $^ $(LIBNOTIFY_FLAGS) -CLANG_CPP_BUILD = clang++ $(CLANG_FLAGS) -std=c++20 -stdlib=libc++ -o $@ $^ $(LIBNOTIFY_FLAGS) +CLANG_BUILD = clang $(CLANG_FLAGS) -std=c2x -o $@ $^ $(LIBNOTIFY_FLAGS) +CLANG_CPP_BUILD = clang++ $(CLANG_FLAGS) -std=c++2b -stdlib=libc++ -o $@ $^ $(LIBNOTIFY_FLAGS) CRYSTAL_BUILD = crystal build --release --no-debug -o $@ $^ DMD_BUILD = dmd -of$@ -O -release -inline -boundscheck=off $^ DOTNET_BUILD = dotnet build --nologo -v q $< -c Release DUB_BUILD = dub -q build --build=release-nobounds --compiler=ldc2 --single $^ -GCC_BUILD = gcc $(GCC_FLAGS) -std=c17 -o $@ $^ $(LIBNOTIFY_FLAGS) -GCC_CPP_BUILD = g++ $(GCC_FLAGS) -std=c++20 -o $@ $^ $(LIBNOTIFY_FLAGS) +GCC_BUILD = gcc $(GCC_FLAGS) -std=c2x -o $@ $^ $(LIBNOTIFY_FLAGS) +GCC_CPP_BUILD = g++ $(GCC_FLAGS) -std=c++23 -o $@ $^ $(LIBNOTIFY_FLAGS) GCC_GO_BUILD = gccgo $(GCC_FLAGS) -o $@ $^ GDC_BUILD = gdc -o $@ -O3 -frelease -finline -fbounds-check=off $^ GHC_BUILD = ghc -v0 -O2 -fforce-recomp -Wall $^ -o $@ -outputdir $(@D) GO_BUILD = GO111MODULE=auto go build -o $@ $^ -JAVAC_BUILD = javac -Xlint:unchecked -d $(@D) $^ +JAVAC_BUILD = javac --release 19 -Xlint:unchecked -d $(@D) $^ KOTLINC_BUILD = kotlinc -include-runtime -jvm-target 18 -d $@ $^ LDC2_BUILD = ldc2 -of$@ -O5 -release -boundscheck=off $^ MCS_BUILD = mcs -debug- -optimize+ -out:$@ $^ @@ -31,7 +30,7 @@ NIM_GCC_BUILD = nim c -o:$@ --cc:gcc $(NIM_FLAGS) $^ RUSTC_BUILD = rustc $(RUSTC_FLAGS) -C opt-level=3 -C lto -C codegen-units=1 -C panic=abort -o $@ $^ RUST_CLIPPY = clippy-driver -o $@.clippy $^ SWIFTC_BUILD = swiftc -parse-as-library -Ounchecked -cross-module-optimization -o $@ $^ -SCALAC_BUILD = scalac -release 17 -d $@ $^ +SCALAC_BUILD = scalac -java-output-version 19 -d $@ $^ VALAC_CLANG_BUILD = valac $^ --cc=clang -D CLANG_TEST $(VALAC_FLAGS) -o $@ VALAC_GCC_BUILD = valac $^ --cc=gcc -D GCC_TEST $(VALAC_FLAGS) -o $@ V_CLANG_BUILD = v $(V_FLAGS) -cc clang -o $@ $^ diff --git a/docker/Dockerfile b/docker/Dockerfile index af651862..9360432e 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -10,8 +10,8 @@ RUN update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-12 10 \ && update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-12 10 \ && update-alternatives --install /usr/bin/gdc gdc /usr/bin/gdc-12 10 \ && update-alternatives --install /usr/bin/gccgo gccgo /usr/bin/gccgo-12 10 \ - && update-alternatives --install /usr/bin/clang clang /usr/bin/clang-13 10 \ - && update-alternatives --install /usr/bin/clang++ clang++ /usr/bin/clang++-13 10 \ + && update-alternatives --install /usr/bin/clang clang /usr/bin/clang-14 10 \ + && update-alternatives --install /usr/bin/clang++ clang++ /usr/bin/clang++-14 10 \ && nuget update -self \ && useradd -m dev @@ -53,30 +53,30 @@ RUN curl \ ENV PATH="/home/dev/bin/$PYPY/bin:${PATH}" # https://www.scala-lang.org/download/ -ARG SCALA=3.1.2 +ARG SCALA=3.2.0 RUN curl -L \ https://github.com/lampepfl/dotty/releases/download/$SCALA/scala3-$SCALA.tar.gz \ | tar -xz ENV PATH="/home/dev/bin/scala3-$SCALA/bin/:${PATH}" # https://jdk.java.net/ -ARG JDK=18.0.1.1 +ARG JDK=19 RUN curl \ - https://download.java.net/java/GA/jdk${JDK}/65ae32619e2f40f3a9af3af1851d6e19/2/GPL/openjdk-${JDK}_linux-x64_bin.tar.gz \ + https://download.java.net/java/GA/jdk19/877d6127e982470ba2a7faa31cc93d04/36/GPL/openjdk-19_linux-x64_bin.tar.gz \ | tar -xz ENV PATH="/home/dev/bin/jdk-$JDK/bin:${PATH}" # https://github.com/crystal-lang/crystal/releases -ARG CRYSTAL=crystal-1.4.1-1 +ARG CRYSTAL=crystal-1.5.1-1 RUN curl -L \ - https://github.com/crystal-lang/crystal/releases/download/1.4.1/$CRYSTAL-linux-x86_64.tar.gz \ + https://github.com/crystal-lang/crystal/releases/download/1.5.1/$CRYSTAL-linux-x86_64.tar.gz \ | tar -xz ENV PATH="/home/dev/bin/$CRYSTAL/bin:${PATH}" # https://github.com/ldc-developers/ldc/releases -ARG LDC=ldc2-1.29.0-linux-x86_64 +ARG LDC=ldc2-1.30.0-linux-x86_64 RUN curl -L \ - https://github.com/ldc-developers/ldc/releases/download/v1.29.0/$LDC.tar.xz \ + https://github.com/ldc-developers/ldc/releases/download/v1.30.0/$LDC.tar.xz \ | tar -xJ ENV PATH="/home/dev/bin/$LDC/bin/:${PATH}" @@ -89,46 +89,46 @@ ENV PATH="/home/dev/bin/$NIM/bin/:${PATH}" # https://dlang.org/download.html RUN curl \ - https://s3.us-west-2.amazonaws.com/downloads.dlang.org/releases/2022/dmd.2.100.0.linux.tar.xz \ + https://s3.us-west-2.amazonaws.com/downloads.dlang.org/releases/2022/dmd.2.100.2.linux.tar.xz \ | tar -xJ ENV PATH="/home/dev/bin/dmd2/linux/bin64/:${PATH}" # https://www.jruby.org/download -ARG JRUBY=9.3.4.0 +ARG JRUBY=9.3.8.0 RUN curl \ https://repo1.maven.org/maven2/org/jruby/jruby-dist/$JRUBY/jruby-dist-$JRUBY-bin.tar.gz \ | tar -xz \ && ln -s /home/dev/bin/jruby-$JRUBY/bin/jruby /home/dev/bin/jruby # https://julialang.org/downloads/ -ARG JULIA=julia-1.7.3 +ARG JULIA=julia-1.8.1 RUN curl \ - https://julialang-s3.julialang.org/bin/linux/x64/1.7/$JULIA-linux-x86_64.tar.gz \ + https://julialang-s3.julialang.org/bin/linux/x64/1.8/$JULIA-linux-x86_64.tar.gz \ | tar -xz ENV PATH="/home/dev/bin/$JULIA/bin/:${PATH}" +# https://clojure.org/guides/install_clojure +ARG CLOJURE=1.11.1.1165 +RUN curl \ + https://download.clojure.org/install/linux-install-$CLOJURE.sh \ + | bash -s -- --prefix /home/dev/ + # https://swift.org/download/ -ARG SWIFT=swift-5.6.1-RELEASE-ubuntu20.04 +ARG SWIFT=swift-5.7-RELEASE-ubuntu20.04 RUN curl -L \ - https://swift.org/builds/swift-5.6.1-release/ubuntu2004/swift-5.6.1-RELEASE/$SWIFT.tar.gz \ - | tar -xz \ + https://download.swift.org/swift-5.7-release/ubuntu2004/swift-5.7-RELEASE/swift-5.7-RELEASE-ubuntu20.04.tar.gz \ + | tar -xz \ && ln -s /home/dev/bin/$SWIFT/usr/bin/swift /home/dev/bin/swift \ && ln -s /home/dev/bin/$SWIFT/usr/bin/swiftc /home/dev/bin/swiftc ENV LD_LIBRARY_PATH=/home/dev/bin/$SWIFT/usr/lib/swift/linux:$LD_LIBRARY_PATH -# https://clojure.org/guides/install_clojure -ARG CLOJURE=1.11.1.1113 -RUN curl \ - https://download.clojure.org/install/linux-install-$CLOJURE.sh \ - | bash -s -- --prefix /home/dev/ - ENV GHCUP_INSTALL_BASE_PREFIX="/home/dev" RUN curl --proto '=https' --tlsv1.2 -sSf https://get-ghcup.haskell.org \ | BOOTSTRAP_HASKELL_NONINTERACTIVE="y" sh ENV PATH="/home/dev/.ghcup/bin/:${PATH}" # https://www.haskell.org/ghc/ -ARG GHC_VER=9.2.3 +ARG GHC_VER=9.4.2 RUN ghcup install ghc $GHC_VER && ghcup set ghc $GHC_VER # Shared packages for all Haskell code @@ -138,26 +138,25 @@ RUN cabal update \ ENV GHC_PACKAGE_PATH="~/.cabal/store/ghc-${GHC_VER}/package.db:" # https://github.com/graalvm/graalvm-ce-builds/releases -ARG GRAALVM=22.1.0 +ARG GRAALVM=22.2.0 RUN curl -L \ https://github.com/graalvm/graalvm-ce-builds/releases/download/vm-$GRAALVM/graalvm-ce-java17-linux-amd64-$GRAALVM.tar.gz \ | tar -xz \ && ln -s /home/dev/bin/graalvm-ce-java17-$GRAALVM/bin/gu /home/dev/bin/gu RUN gu install ruby \ && ln -s /home/dev/bin/graalvm-ce-java17-$GRAALVM/bin/truffleruby /home/dev/bin/truffleruby -# TODO: uncomment after truffleruby properly supports OpenSSL 3 -# RUN /home/dev/bin/graalvm-ce-java17-$GRAALVM/languages/ruby/lib/truffle/post_install_hook.sh +RUN /home/dev/bin/graalvm-ce-java17-$GRAALVM/languages/ruby/lib/truffle/post_install_hook.sh # https://github.com/dotnet/core/tree/main/release-notes RUN mkdir dotnet && curl \ - https://download.visualstudio.microsoft.com/download/pr/e075dadf-22a9-482b-9387-bf8341a4f837/ab20e3e34c2c8be290d9938590f208ed/dotnet-sdk-6.0.203-linux-x64.tar.gz \ + https://download.visualstudio.microsoft.com/download/pr/8159607a-e686-4ead-ac99-b4c97290a5fd/ec6070b1b2cc0651ebe57cf1bd411315/dotnet-sdk-6.0.401-linux-x64.tar.gz \ | tar -xz -C dotnet ENV PATH="/home/dev/bin/dotnet:${PATH}" ENV DOTNET_ROOT="/home/dev/bin/dotnet" ENV DOTNET_CLI_TELEMETRY_OPTOUT=1 # https://nodejs.org/en/download/current/ -ARG NODE=v18.2.0 +ARG NODE=v18.9.0 RUN curl \ https://nodejs.org/dist/$NODE/node-$NODE-linux-x64.tar.xz \ | tar -xJ @@ -165,7 +164,7 @@ ENV PATH="/home/dev/bin/node-$NODE-linux-x64/bin/:${PATH}" # https://golang.org/dl/ RUN curl -L \ - https://go.dev/dl/go1.18.2.linux-amd64.tar.gz \ + https://go.dev/dl/go1.19.1.linux-amd64.tar.gz \ | tar -xz ENV PATH="/home/dev/bin/go/bin/:${PATH}" @@ -179,7 +178,7 @@ RUN opam init --disable-sandboxing -n --root=/home/dev/bin/opam --compiler=ocaml ENV PATH="/home/dev/bin/opam/ocaml-base-compiler.$OCAML/bin/:${PATH}" # https://kotlinlang.org/docs/command-line.html -ARG KOTLIN=1.6.21 +ARG KOTLIN=1.7.10 RUN curl -L -o kotlin-compiler-$KOTLIN.zip \ https://github.com/JetBrains/kotlin/releases/download/v$KOTLIN/kotlin-compiler-$KOTLIN.zip \ && unzip kotlin-compiler-$KOTLIN.zip \ @@ -187,14 +186,14 @@ RUN curl -L -o kotlin-compiler-$KOTLIN.zip \ ENV PATH="/home/dev/bin/kotlinc/bin/:${PATH}" # https://download.racket-lang.org/ -ARG RACKET=8.5 +ARG RACKET=8.6 RUN curl -o racket-$RACKET-x86_64-linux-cs.sh \ https://www.cs.utah.edu/plt/installers/$RACKET/racket-$RACKET-x86_64-linux-cs.sh \ && sh racket-$RACKET-x86_64-linux-cs.sh --unix-style --dest /home/dev/ \ && rm racket-$RACKET-x86_64-linux-cs.sh # https://github.com/vlang/v/releases -ARG VLANG=weekly.2022.21 +ARG VLANG=weekly.2022.38 RUN curl -Lo v_linux.zip \ https://github.com/vlang/v/releases/download/$VLANG/v_linux.zip \ && unzip -q v_linux.zip \ @@ -210,7 +209,7 @@ ENV PATH="/home/dev/bin/$ZIG/:${PATH}" # Using more stable LuaJIT, used in Alpine and other distros # https://github.com/openresty/luajit2/tags -RUN export VERSION=2.1-20220411 \ +RUN export VERSION=2.1-20220915 \ && curl -L \ https://github.com/openresty/luajit2/archive/refs/tags/v$VERSION.tar.gz \ | tar -xz \ diff --git a/docker/apt.pkgs b/docker/apt.pkgs index 8202f677..894db7b1 100644 --- a/docker/apt.pkgs +++ b/docker/apt.pkgs @@ -1,51 +1,49 @@ build-essential=12.9 chezscheme=9.5.4+dfsg-4 -clang-13=1:13.0.1-6 -cmake=3.23.2-1 +clang-14=1:14.0.6-2 +cmake=3.24.2-1 cpanminus=1.7046-1 -curl=7.83.1-2 +curl=7.85.0-1 elixir=1.12.2.dfsg-2.2 -gcc-12=12.1.0-2 -gccgo-12=12.1.0-2 -gdc-12=12.1.0-2 +gcc-12=12.2.0-2 +gccgo-12=12.2.0-2 +gdc-12=12.2.0-2 git=1:2.35.1-1 lbzip2=2.5-2.3 libblas-dev=3.10.1-2 -libc++-13-dev=1:13.0.1-6 -libc++abi-13-dev=1:13.0.1-6 +libc++-13-dev=1:13.0.1-7 +libc++abi-13-dev=1:13.0.1-7 libevent-dev=2.1.12-stable-5+b1 libgmp-dev=2:6.2.1+dfsg1-1 libjq-dev=1.6-2.1 libjson-c-dev=0.16-1 libjson-glib-dev=1.6.6-1 liblapack-dev=3.10.1-2 -liblua5.4-dev=5.4.4-2 -libnuma-dev=2.0.14-3 -libomp-13-dev=1:13.0.1-6 +liblua5.4-dev=5.4.4-3 +libnuma-dev=2.0.15-1 +libomp-14-dev=1:14.0.6-2 libonig-dev=6.9.8-1 -libopenblas-dev=0.3.20+ds-2 +libopenblas-dev=0.3.21+ds-2 libpcre3-dev=2:8.39-14 -libssl-dev=3.0.3-8 -libssl1.1=1.1.1o-1 +libssl-dev=3.0.5-2 libtinfo5=6.3+20220423-2 libtool=2.4.7-4 libtool-bin=2.4.7-4 -libxml2=2.9.14+dfsg-1 -locales=2.33-7 -locales-all=2.33-7 -lua5.4=5.4.4-2 +libxml2=2.9.14+dfsg-1+b1 +locales=2.34-8 +locales-all=2.34-8 +lua5.4=5.4.4-3 mono-devel=6.8.0.105+dfsg-3.2 nuget=2.8.7+md510+dhx1-1.1 opam=2.1.2-1 php=2:8.1+92 powercap-utils=0.6.0-1 -python3=3.10.4-1+b1 -python3-numpy=1:1.21.5-1 -python3-pip=22.1.1+dfsg-1 -python3-ujson=5.3.0-1 +python3=3.10.6-1 +python3-numpy=1:1.21.5-1+b1 +python3-pip=22.2+dfsg-1 +python3-ujson=5.5.0-1 tcl=8.6.11+1 tcllib=1.21+dfsg-1 -valac=0.56.1-1 -vim=2:8.2.4793-1 +valac=0.56.3-1 +vim=2:9.0.0242-1 xz-utils=5.2.5-2.1 -zlib1g=1:1.2.11.dfsg-4 diff --git a/json/Makefile b/json/Makefile index 86f2752f..1d0947f7 100644 --- a/json/Makefile +++ b/json/Makefile @@ -158,12 +158,12 @@ target/json_go_gccgo: test.go | $(gofmt) # Boost releases: # https://www.boost.org/users/download/ -BOOST_VERSION := boost_1_79_0 +BOOST_VERSION := boost_1_80_0 boost = target/$(BOOST_VERSION) $(boost): | target cd target && \ curl -L \ - https://boostorg.jfrog.io/artifactory/main/release/1.79.0/source/$(BOOST_VERSION).tar.bz2 \ + https://boostorg.jfrog.io/artifactory/main/release/1.80.0/source/$(BOOST_VERSION).tar.bz2 \ | tar -xj nlohmann_json := target/nlohmann_json diff --git a/matmul/java-nd4j/Maven.list b/matmul/java-nd4j/Maven.list index 31bcfc9a..1f810d30 100644 --- a/matmul/java-nd4j/Maven.list +++ b/matmul/java-nd4j/Maven.list @@ -2,12 +2,12 @@ # # lines starting with # are ignored # -org.nd4j:nd4j-native:1.0.0-M2 +org.nd4j:nd4j-native:1.0.0-M2.1 # Usage reference: https://deeplearning4j.konduit.ai/multi-project/explanation/configuration/backends/cpu -org.nd4j:nd4j-native:1.0.0-M2,classifier=linux-x86_64-avx512 +org.nd4j:nd4j-native:1.0.0-M2.1,classifier=linux-x86_64-avx512 # Proper logging makes the results more stable (and faster, # probably because less classpath checks are happening) -org.slf4j:slf4j-api:1.7.36 -org.slf4j:slf4j-simple:1.7.36 +org.slf4j:slf4j-api:2.0.2 +org.slf4j:slf4j-simple:2.0.2 diff --git a/matmul/matmul_d_lubeck.d b/matmul/matmul_d_lubeck.d index d665c831..534d0914 100644 --- a/matmul/matmul_d_lubeck.d +++ b/matmul/matmul_d_lubeck.d @@ -1,6 +1,7 @@ #!/usr/bin/env dub /+dub.sdl: dependency "lubeck" version="~>1.5.1" +dependency "mir-algorithm" version="~>3.15.3" libs "lapack" "blas" targetPath "target" +/ diff --git a/primes/Makefile b/primes/Makefile index 01a1e869..d481cb90 100644 --- a/primes/Makefile +++ b/primes/Makefile @@ -11,7 +11,7 @@ executables := \ target/primes_zig \ target/primes_nim_clang \ target/primes_nim_gcc - + artifacts := $(executables) \ target/primes_scala.jar \ target/Primes.class diff --git a/primes/primes.nim b/primes/primes.nim index 4ddb21b4..589ecae4 100644 --- a/primes/primes.nim +++ b/primes/primes.nim @@ -1,8 +1,8 @@ -import strformat, strutils, sequtils +import deques import net -import tables import posix -import deques +import strformat, strutils, sequtils +import tables const UPPER_BOUND: int = 5_000_000 @@ -11,7 +11,7 @@ const PREFIX: int = 32_338 type NodeRef = ref Node Node = object - children: Table[char, NodeRef] + children: OrderedTable[char, NodeRef] terminal: bool Sieve = object limit: int @@ -123,7 +123,7 @@ when isMainModule: var compiler = "Nim/clang" when defined(gcc): compiler = "Nim/gcc" - notify(fmt"{compiler}\t{getpid()}") + notify(&"{compiler}\t{getpid()}") let result = find(UPPER_BOUND, PREFIX) notify("stop") echo result