Content deleted Content added
Ops, the external link section was there already. |
|||
(40 intermediate revisions by 27 users not shown) | |||
Line 1:
{{short description|Free software project}}
'''The Computer Language Benchmarks Game''' (formerly called '''The Great Computer Language Shootout''') is a [[free software]] project for comparing how a given subset of simple [[algorithms]] can be implemented in various popular [[programming languages]].
The project consists of:
* A set of very simple algorithmic problems (thirteen in total)<ref>{{Cite book |last1=Couto |first1=Marco |last2=Pereira |first2=Rui |last3=Ribeiro |first3=Francisco |last4=Rua |first4=Rui |last5=Saraiva |first5=João |chapter=Towards a Green Ranking for Programming Languages |date=2017-09-21 |title=Proceedings of the 21st Brazilian Symposium on Programming Languages |chapter-url=https://dl.acm.org/doi/abs/10.1145/3125374.3125382 |series=SBLP '17 |___location=New York, NY, USA |publisher=Association for Computing Machinery |pages=1–8 |doi=10.1145/3125374.3125382 |isbn=978-1-4503-5389-2|hdl=1822/65360 |hdl-access=free }}</ref>
* Various implementations to the above problems in various programming languages
* A set of unit tests to verify that the submitted implementations solve the problem statement
Line 9 ⟶ 11:
==Supported languages==
| title = List of supported languages▼
▲{{Collapsible list
|[[Ada (programming language)|Ada]]
▲|title=List of supported languages
|[[C (programming_language)|C]]
|[[Chapel (programming language)|Chapel]]
| 5 = [[C Sharp (programming language)|C#]]
| 6 = [[C++]]
| 7 = [[Dart (programming language)|Dart]]
| 8 = [[Erlang (programming language)|Erlang]]
| 9 = [[F Sharp (programming language)|F#]]
| 10 = [[Fortran]]▼
| 11 = [[Go (programming language)|Go]]
| 12 = [[Haskell]]▼
▲| Fortran
| 13 = [[Java (programming language)|Java]]
| 14 = [[JavaScript]]▼
| 15 = [[Julia (programming language)|Julia]]
▲| Haskell
| 16 = [[Lisp (programming language)|Lisp]]
| 17 = [[Lua (programming language)|Lua]]
▲| JavaScript
| 18 = [[OCaml]]▼
| 19 = [[Pascal (programming language)|Pascal]]
| 20 = [[Perl]]
▲| OCaml
| 21 = [[PHP]]
| 22 = [[Python (programming language)|Python]]
| 23 = [[Racket (programming language)|Racket]]
| 24 = [[Ruby (programming language)|Ruby]]
| 26 = [[Rust (programming language)|Rust]]
| 28 = [[Smalltalk]]▼
| 29 = [[Swift (programming language)|Swift]]
▲| Smalltalk
}}
==Metrics==
The following aspects of each given implementation are measured:<ref>{{cite web|url=https://benchmarksgame-team.
* overall user [[Run_time_(program_lifecycle_phase)|runtime]]
* peak [[memory allocation]]
*
* sum of total CPU time over all [[Thread (computing)|threads]]
* individual CPU [[Load (computing)|utilization]]
It is common to see multiple solutions in the same programming language for the same problem. This highlights that within the
==Benchmark programs==
It was a design choice from the start to only include very simple toy problems, each providing a different kind of programming challenge.<ref>{{cite web|url=https://benchmarksgame-team.
This provides users of the Benchmark Game the opportunity to scrutinize the various implementations.<ref>{{cite web|url=https://benchmarksgame-team.
* [[Memory management#
* [[Synchronization (computer science)#Thread or process synchronization|chameneos-redux]]
* [[Permutation|fannkuch-redux]]
Line 72 ⟶ 69:
==History==
The project was known as ''The Great Computer Language Shootout'' until 2007.<ref>{{cite web|url=https://benchmarksgame-team.
A port for Windows was maintained separately between 2002 and 2003.<ref>{{cite web|url=http://dada.perl.it/shootout/|title=The Great Win32 Computer Language Shootout|website=Dada.perl.it|accessdate=13 December 2017}}</ref>
The sources
There are also older forks on GitHub.<ref>{{cite web|url=https://github.com/Byron/benchmarksgame-cvs-mirror|title=benchmarksgame-cvs-mirror: A git mirror of the benchmarksgame cvs repository|first=Sebastian|last=Thiel|date=24 October 2017|publisher=[[GitHub]]|accessdate=13 December 2017}}</ref>
The project is continuously evolving. The list of supported programming languages is updated approximately once per
==Caveats==
Line 86 ⟶ 85:
==Impact==
The benchmark results have uncovered various
Various research articles have been based on the benchmarks, its results and its methodology.<ref>
▲<ref>{{Cite journal |
author = Rajesh Karmani and Amin Shali and Gul Agha |
title = Actor frameworks for the JVM platform: A Comparative Analysis |
journal = In
year = 2009 |
url = http://osl.cs.illinois.edu/docs/pppj09/paper.pdf |
accessdate = 26 March 2017
}}</ref><ref>
==See also==
Line 118 ⟶ 116:
==External links==
* {{Official website}}
[[Category:Programming language comparisons
[[Category:Benchmarks (computing)]]
|