This repository contains an implementation of the is_prime
function in multiple programming languages using the same algorithm. The goal is to compare the performance of different languages and runtimes.
To run code in various programming languages, use the run.sh
script:
./run.sh [LANGUAGE]
If no argument is provided, the script will run code in all supported languages. Otherwise, provide a language name to run the corresponding code.
- assembly
- c
- cpp
- rust
- go
- java
- nodejs
- csharp_mono
- dart
- python_codon
- pascal
- python
- php
- r
- chap
- lua
# Run code in all supported languages
./run.sh
# Run specific language
./run.sh cpp
To display usage instructions and a list of supported languages, use the --help
or -h
flag:
./run.sh --help
If you want to add your own test results, simply run the run.sh
script with your CPU model name and redirect the output to a file in the result
directory.
See the result directory for the output of running the tests on different CPUs.
Note: times are 5% more or less on different runs, so C and C++ can win sometimes.
Ranking | Language | Runtime/Compiler | Time | n% Slower than Winner |
---|---|---|---|---|
#1 | Assembly | NASM | 3.10s | Winner |
#2 | C | GCC | 3.12s | 0.64% |
#3 | C++ | G++ | 3.15s | 1.6% |
#4 | Java | OpenJDK 17 | 3.62s | 16% |
#5 | Go | Go 1.20.3 | 3.81s | 22% |
#6 | Julia | Julia 1.8.5 | 3.87s | 24% |
#7 | Rust | Native 1.67.1 | 3.97s | 28% |
#8 | C# | Mono 6.8 | 5.32s | 71% |
#9 | Js | Nodejs 20 | 5.80s | 87% |
#10 | Dart | Dart 2.19.0 | 7.11s | 129% |
#11 | Python | Codon 0.16.0 | 10.89s | 251% |
#12 | Pascal | FPC 3.2.2 | 13.68s | 341% |
#13 | PHP | PHP 8.2.5 | 26.32s | 749% |
#14 | Lua | Lua 5.2.4 | 34.00s | 996% |
#15 | Python | Python 3.11.3 | 82.31s | 2545% |
#16 | Ruby | Ruby 3.2.2 | 85.55s | 2641% |
#17 | R | Rscript 4.0.4 | 240.0s | 7641% |
#18 | Chap | Chap 2.2.2 | 602s | 19319% |
The n% Slower than Winner
column shows the percent difference between the time taken by each language and the fastest language (Assembly).
Formula: ((LanguageTime - WinnerTime) * 100) / WinnerTime
You can contribute to this repository in one of the following ways:
- Optimize your favorite programming language without changing the algorithm and without using concurrency.
- Add a new language by using the same algorithm.
- Add a new runtime.