Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/niklas-heer/speed-comparison

A repo which compares the speed of different programming languages.
https://github.com/niklas-heer/speed-comparison

c clojure docker elixir golang hacktoberfest javascript julia nim-lang php programming-languages python ruby speed-comparison swift

Last synced: 3 days ago
JSON representation

A repo which compares the speed of different programming languages.

Awesome Lists containing this project

README

        

![plot](https://niklas-heer.github.io/speed-comparison/assets/latest/combined_results.png "Speed comparison of programming languages")

---

# Speed comparison of programming languages

This projects tries to compare the speed of different programming languages.
In this project we don't really care about getting a precise calculation of pi. We only want to see how fast are the programming languages doing.

It uses an implementation of the [Leibniz formula for π](https://en.wikipedia.org/wiki/Leibniz_formula_for_%CF%80) to do the comparison.

Here is a video which explains how it works: [Calculating π by hand](https://www.youtube.com/watch?v=HrRMnzANHHs)

You can find the results here: https://niklas-heer.github.io/speed-comparison/

## Disclaimer

I'm no expert in all these languages, so take my results with a grain of salt.

Also the findings just show how good the languages can handle floating point operations, which is only one aspect of a programming language.

You are also welcome to contribute and help me fix my possible horrible code in some languages. :smile:

## Run it yourself

Everything is run by a Docker container and a bash script which envokes the programs.

To measure the execution time a [python package](https://pypi.python.org/pypi/lauda/1.2.0) is used.

### Requirements
- `Docker`
- [earthly](https://earthly.dev/)

### Run everything
Earthly allows to run everything with a single command:
```bash
earthly --config earthly-config.yml +all
```
This will run all tasks to collect all measurements and then run the analysis.

### Collect data
To collect data for all languages run:
```bash
earthly --config earthly-config.yml +collect-data
```

To collect data for a single languages run:
```bash
earthly --config earthly-config.yml +
```

### Analyse results
To generate the combined CSV out of all results use this command:
```bash
earthly --config earthly-config.yml +analysis
```

## FAQ

> Why do you also count reading a file and printing the output?

Because I think this is a more realistic scenario to compare speeds.

> Are the compile times included in the measurements?

No they are not included, because when running the program in the real world this would also be done before.

## Thanks
The list of Contributors is automatically generated.

### Contributors



Niklas


Niklas Heer




Francesco


Francesco Alemanno




Yu


Yu Zhu




Jerry


Jerry Ling




Gaute


Gaute Hope




frak0d/


frak0d



Jonathan


Jonathan Carroll




Sıddık


Sıddık AÇIL




Serg


Serg Gini




Gabriel


Gabriel Baraldi




Samuel/


Samuel




Joe


Joe Landman



Sandeep


Sandeep Kumar




mattn/


mattn




Páll


Páll Haraldsson




Oscar


Oscar Smith




Michael


Michael Abbott




Lorenzo


Lorenzo Gabriele



LazyKernel/


LazyKernel




Chris


Chris Nuernberger




DirkieDurky/


DirkieDurky




Gui


Gui Zhen Wei




RDPatrickTheDev/


RDPatrickTheDev




Proudust/


Proudust



Sergey


Sergey Trofimov




Thomas


Thomas A Caswell




Tomohiro/


Tomohiro




genmeblog/


genmeblog




Yuta


Yuta Imazu




Kohei


Kohei Hosoki



yinheli/


yinheli

### Special thanks

#### sharkdp

For creating [hyperfine](https://github.com/sharkdp/hyperfine) which is used for the fundamental benchmarking.

#### Thomas

This projects takes inspiration from [Thomas](https://www.thomaschristlieb.de) who did a similar comparison [on his blog](https://www.thomaschristlieb.de/performance-vergleich-zwischen-verschiedenen-programmiersprachen-und-systemen/).