The Computer Language
23.03 Benchmarks Game

pidigits

Arbitrary precision arithmetic might be provided by wrapping a third-party library written in some-other programming language. How would you know?

First a few simple programs.

Then optimisations, multicore parallelism, [pdf] vector parallelism.

Last hand-written vector instructions and "unsafe" programs and the more obvious foreign function interface programs.

  source secs mem gz    
  Haskell GHC #6 1.57 18,484 360    
  Racket 12.45 71,504 453    
  Lisp SBCL #3 3.22 127,976 493    
 
 
 
× source secs mem gz cpu secs cpu load
1.0 Chapel #2 0.75 10,940 423 0.76 100% 0% 0% 0%
1.0 C++ g++ #4 0.89 10,956 513 0.88 1% 0% 1% 100%
1.0 Rust #4 0.71 11,068 799 0.71 100% 1% 0% 1%
1.0 Python 3 #4 4.21 11,096 342 4.21 0% 0% 0% 100%
1.0 Go #8 2.46 11,244 720 2.46 0% 100% 0% 0%
1.0 Go #2 1.97 11,244 733 2.00 3% 55% 14% 28%
1.0 Go 1.37 11,244 708 1.38 99% 0% 0% 0%
1.0 Free Pascal 14.64 11,344 3047 14.63 0% 100% 0% 0%
1.0 C gcc #2 0.81 11,392 416 0.81 0% 0% 0% 100%
1.0 C gcc 0.88 11,392 452 0.88 1% 0% 100% 0%
1.0 Python 3 #5 1.39 11,428 363 1.39 0% 100% 0% 2%
1.2 Perl 10.35 12,684 463 10.35 0% 0% 1% 99%
1.3 PHP #4 0.91 14,216 389 0.91 0% 100% 0% 0%
1.3 PHP #5 0.90 14,248 399 0.90 0% 1% 100% 0%
1.3 PHP #3 0.92 14,324 504 0.92 0% 100% 0% 0%
1.3 PHP #2 1.38 14,636 545 1.38 0% 100% 0% 0%
1.4 PHP 5 min 15,344 750 5 min 0% 100% 0% 0%
1.7 Haskell GHC 2.16 18,456 460 2.22 8% 66% 1% 27%
1.7 Haskell GHC #2 2.17 18,460 585 2.23 1% 3% 21% 77%
1.7 Haskell GHC #6 1.57 18,484 360 1.62 1% 94% 1% 0%
1.7 Dart #2 2.80 18,676 489 2.84 0% 1% 99% 1%
1.7 Dart #3 3.20 18,740 488 3.24 0% 48% 0% 52%
1.8 OCaml #5 2.12 19,320 458 2.12 0% 1% 100% 0%
1.8 Haskell GHC #3 2.15 20,200 379 2.21 1% 2% 95% 2%
1.9 Haskell GHC #4 1.78 20,604 348 1.83 1% 0% 94% 1%
2.2 Go #7 4.80 23,844 696 5.31 33% 30% 28% 27%
4.5 Node js #4 1.26 49,328 481 1.28 0% 0% 100% 0%
4.8 C# .NET #7 6.72 53,020 567 7.28 6% 30% 36% 36%
4.9 Erlang #3 6.96 53,880 562 8.04 23% 5% 84% 2%
5.1 VW Smalltalk #4 8.06 55,768 753 8.06 0% 100% 0% 0%
5.2 Erlang #2 7.77 56,444 512 8.81 13% 26% 39% 34%
6.4 Erlang 7.79 70,480 559 8.54 96% 4% 7% 3%
6.5 Racket 12.45 71,504 453 12.45 0% 0% 100% 0%
7.1 Node js #3 13.09 78,112 424 13.11 0% 100% 0% 0%
7.2 Node js #2 12.95 78,356 397 12.97 0% 0% 99% 0%
11 Matz's Ruby #2 2.75 118,660 654 2.75 0% 0% 100% 0%
12 Lisp SBCL #3 3.22 127,976 493 3.21 0% 0% 0% 99%
12 Lisp SBCL #4 3.22 127,976 489 3.22 0% 0% 0% 99%
13 Lisp SBCL #2 6.02 137,764 648 6.02 0% 0% 99% 0%
15 Ruby 17.24 167,116 518 17.24 100% 0% 0% 0%
27 Matz's Ruby #5 1.50 299,640 481 1.50 0% 0% 100% 0%
39 Java  7.44 430,616 800 8.45 29% 25% 32% 27%
82 Ruby #5 1.64 894,828 488 1.64 0% 0% 100% 1%
437 Ruby #2 4.08 4,777,808 660 4.08 0% 0% 100% 1%
Lua Failed
Lua #5 Failed
Lua #7 Failed
OCaml #7 Make Error
Perl #4 Failed
Perl #2 Failed
Matz's Ruby Bad Output
 
 
  hand-written vector instructions | "unsafe" | naked ffi
 
× source secs mem gz cpu secs cpu load
1.0 Chapel #4 0.75 10,940 509 0.76 100% 0% 1% 1%
1.0 C++ g++ #5 0.87 10,956 798 0.87 0% 0% 78% 21%
1.0 Classic Fortran #4 0.88 10,956 981 0.88 0% 100% 0% 1%
1.0 Ada 2012 GNAT 5.35 10,960 1157 5.35 0% 99% 0% 0%
1.0 Ada 2012 GNAT #2 0.88 10,960 1130 0.88 0% 2% 98% 1%
1.0 Rust #3 0.88 11,068 1366 0.88 100% 0% 0% 1%
1.0 Rust #2 0.88 11,068 1306 0.88 100% 0% 0% 2%
1.0 Rust 0.89 11,068 1420 0.88 1% 1% 100% 1%
1.0 Go #4 1.01 11,244 683 1.02 0% 0% 100% 0%
1.0 Go #3 1.63 11,244 603 1.66 46% 45% 10% 0%
1.0 Free Pascal #3 0.88 11,340 487 0.88 0% 0% 0% 100%
1.0 Free Pascal #2 5.34 11,340 797 5.34 0% 0% 100% 0%
1.0 Swift #2 0.88 11,344 600 0.88 0% 1% 100% 0%
1.2 Python 3 #3 1.25 13,564 567 1.25 0% 100% 0% 1%
1.3 Haskell GHC #5 121.72 13,724 928 121.82 0% 0% 0% 100%
2.9 C# .NET #4 1.35 31,700 1121 1.34 98% 0% 0% 0%
2.9 C# .NET #6 0.94 31,888 1168 0.92 0% 97% 0% 0%
3.1 C# .NET #5 0.93 33,596 977 0.94 0% 0% 1% 97%
3.5 Java #3 0.92 38,380 764 0.95 1% 5% 98% 1%
3.8 Java #2 1.34 41,352 938 1.42 4% 1% 76% 25%
6.3 Racket #2 1.19 68,388 1136 1.19 100% 0% 0% 0%
9.7 F# .NET #6 0.99 105,584 905 0.98 0% 0% 97% 0%
9.8 F# .NET #4 1.39 106,688 874 1.39 0% 98% 0% 0%
16 Julia #3 0.95 175,984 506 1.22 10% 99% 10% 9%
17 Julia #2 1.06 188,536 674 1.33 8% 10% 99% 10%