Content deleted Content added
Citation bot (talk | contribs) m Alter: journal. You can use this bot yourself. Report bugs here. | User-activated. |
Ops, the external link section was there already. |
||
(25 intermediate revisions by 20 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 10 ⟶ 11:
==Supported languages==
{{Collapsible list
| title = List of supported languages
|[[Ada (programming language)|Ada]]
|[[C (programming_language)|C]]
|[[Chapel (programming language)|Chapel]]
| 5 = [[C Sharp (programming language)|C#]]
|
| 7 = [[Dart (programming language)|Dart]]
| 8 = [[Erlang (programming language)|Erlang]]
| 9 = [[F Sharp (programming language)|F#]]
|
| 11 = [[Go (programming language)|Go]]
|
| 13 = [[Java (programming language)|Java]]
|
| 15 = [[Julia (programming language)|Julia]]
| 16 = [[Lisp (programming language)|Lisp]]
| 17 = [[Lua (programming language)|Lua]]
|
| 19 = [[Pascal (programming language)|Pascal]]
|
|
| 22 = [[Python (programming language)|Python]]
| 23 = [[Racket (programming language)|Racket]]
| 24 = [[Ruby (programming language)|Ruby]]
| 26 = [[Rust (programming language)|Rust]]
|
| 29 = [[Swift (programming language)|Swift]]
}}
==Metrics==
The following aspects of each given implementation are measured:<ref>{{cite web|url=https://benchmarksgame-team.pages.debian.net/benchmarksgame/how-programs-are-measured.html|title=How programs are measured
* overall user [[Run_time_(program_lifecycle_phase)|runtime]]
* peak [[memory allocation]]
*
* sum of total CPU time over all [[
* 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.pages.debian.net/benchmarksgame/why-measure-toy-benchmark-programs.html|title=Why toy programs?
This provides users of the Benchmark Game the opportunity to scrutinize the various implementations.<ref>{{cite web|url=https://benchmarksgame-team.pages.debian.net/benchmarksgame/description/nbody.html#nbody|title=n-body description (64-bit Ubuntu quad core)
* [[Memory management#
* [[Synchronization (computer science)#Thread or process synchronization|chameneos-redux]]
* [[Permutation|fannkuch-redux]]
Line 68 ⟶ 69:
==History==
The project was known as ''The Great Computer Language Shootout'' until 2007.<ref>{{cite web|url=https://benchmarksgame-team.pages.debian.net/benchmarksgame/sometimes-people-just-make-up-stuff.html#history|title=Trust, and verify
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>
Line 76 ⟶ 77:
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 84 ⟶ 85:
==Impact==
The benchmark results have uncovered various compiler issues. Sometimes a given compiler failed to process unusual, but otherwise grammatically valid constructs. At other times, runtime performance was shown to be below expectations, which prompted compiler developers to revise their optimization capabilities.
Various research articles have been based on the benchmarks, its results and its methodology.<ref>
{{cite journal|author1=Kevin Williams|author2=Jason McCandless|author3=David Gregg|title=Dynamic Interpretation for Dynamic Scripting Languages|date=2009|url=https://www.scss.tcd.ie/publications/tech-reports/reports.09/TCD-CS-2009-37.pdf|accessdate=25 March 2017}}</ref><ref>
▲<ref>{{Cite journal |
author = Rajesh Karmani and Amin Shali and Gul Agha |
title = Actor frameworks for the JVM platform: A Comparative Analysis |
Line 99 ⟶ 98:
url = http://osl.cs.illinois.edu/docs/pppj09/paper.pdf |
accessdate = 26 March 2017
}}</ref><ref>
==See also==
Line 117 ⟶ 116:
==External links==
* {{Official website}}
[[Category:Programming language comparisons]]
[[Category:Benchmarks (computing)]]
|