Srovnávací hra pro počítačový jazyk - The Computer Language Benchmarks Game
Srovnávací hra pro počítačový jazyk (dříve volal Velká přestřelka v počítačovém jazyce) je svobodný software projekt pro porovnání toho, jak je daná podmnožina jednoduchých algoritmy lze implementovat v různých populárních programovací jazyky.
Projekt se skládá z:
- Sada velmi jednoduchých algoritmických problémů
- Různé implementace výše uvedených problémů v různých programovacích jazycích
- Sada jednotkových testů k ověření, že předložené implementace řeší problémové prohlášení
- Rámec pro běh a načasování implementací
- Web usnadňující interaktivní srovnání výsledků
Podporované jazyky
Z důvodu omezení zdrojů je podporována pouze malá podmnožina běžných programovacích jazyků, a to až do uvážení provozovatele hry.[1]
- Ada
- C
- Kaple
- C#
- C ++
- Šipka
- Erlang
- F#
- Fortran
- Jít
- Zaseknout
- Haskell
- Jáva
- JavaScript
- Lisp
- Lua
- OCaml
- Pascal
- Perl
- PHP
- Krajta
- Raketa
- Rubín
- JRuby
- Rez
- Pokec
- Rychlý
- Strojopis
Metriky
Měří se následující aspekty každé dané implementace:[2]
- celkový uživatel runtime
- vrchol alokace paměti
- gzip „velikost zdrojového kódu řešení
- součet celkového času CPU ve všech vlákna
- individuální CPU využití
Je běžné vidět více řešení ve stejném programovacím jazyce pro stejný problém. To zdůrazňuje, že v rámci omezení daného jazyka lze uvést řešení, které má buď vysokou abstrakci, je efektivní z hlediska paměti, je rychlé nebo lze lépe paralelizovat.
Srovnávací programy
Od samého začátku to byla designová volba, která zahrnovala pouze velmi jednoduché problémy s hračkami, z nichž každá poskytovala jiný druh programové výzvy.[3]To poskytuje uživatelům hry Benchmark Game příležitost podrobně prozkoumat různé implementace.[4]
- binární stromy
- chameneos-redux
- fannkuch-redux
- rychle
- k-nukleotid
- mandelbrot
- meteorická soutěž
- n-tělo
- pidigits
- regex-redux
- reverzní doplněk
- spektrální norma
- závitový kroužek
Dějiny
Projekt byl znám jako Velká přestřelka v počítačovém jazyce do roku 2007.[5]
Port pro Windows byl udržován samostatně v letech 2002 až 2003.[6]
Zdroje byly archivovány na GitLabu.[7]
Na GitHubu jsou také starší vidlice.[8]
Projekt se neustále vyvíjí. Seznam podporovaných programovacích jazyků se aktualizuje přibližně jednou za rok podle trendů na trhu. Uživatelé mohou také předložit vylepšená řešení kteréhokoli z problémů nebo navrhnout upřesnění metodiky testování.[9]
Upozornění
Samotní vývojáři zdůrazňují skutečnost, že ti, kdo provádějí výzkum, by měli být při používání těchto mikrobenmarků opatrní:
[...] měřítka JavaScript jsou prchavě malá a chovají se způsoby, které se výrazně liší od skutečných aplikací. Zaznamenali jsme řadu rozdílů v chování a z těchto měřených rozdílů jsme dospěli k závěru, že výsledky založené na benchmarcích mohou zavádět implementátory JavaScriptu. Dále pozorujeme zajímavé chování v reálných aplikacích JavaScriptu, které benchmarky nevykazují, což naznačuje, že dříve neprozkoumané optimalizační strategie mohou být v praxi produktivní.
Dopad
![]() | tento článek může obsahovat nadměrný počet citací.Květen 2018) (Zjistěte, jak a kdy odstranit tuto zprávu šablony) ( |
Výsledky benchmarku odhalily různé problémy kompilátoru. Někdy daný kompilátor nedokázal zpracovat neobvyklé, ale jinak gramaticky platné konstrukce. Jindy se ukázalo, že výkon za běhu nedosahuje očekávání, což přimělo vývojáře kompilátorů k revizi jejich optimalizačních schopností.
Různé výzkumné články byly založeny na benchmarcích, jejich výsledcích a metodice.[10][11][12][13][14][15][16][17][18][19][20][21][22]
Viz také
Reference
- ^ „Počítačová jazyková srovnávací hra“. benchmarksgame-team.pages.debian.net/benchmarksgame. Citováno 29. května 2018.
- ^ „Jak se měří programy - Počítačová jazyková srovnávací hra“. benchmarksgame-team.pages.debian.net/benchmarksgame/. Citováno 29. května 2018.
- ^ „Proč hračky? - Počítačové jazykové srovnávací hry“. benchmarksgame-team.pages.debian.net/benchmarksgame. Citováno 29. května 2018.
- ^ „n-body description (64-bit Ubuntu quad core) - Computer Language Benchmarks Game“. benchmarksgame-team.pages.debian.net/benchmarksgame. Citováno 29. května 2018.
- ^ „Důvěřujte a ověřujte - srovnávací hra pro počítačové jazyky“. benchmarksgame-team.pages.debian.net/benchmarksgame. Citováno 29. května 2018.
- ^ „Velká přestřelka počítačového jazyka Win32“. Dada.perl.it. Citováno 13. prosince 2017.
- ^ „archive-alioth-benchmarksgame“. salsa.debian.org/benchmarksgame-team. Citováno 29. května 2018.
- ^ Thiel, Sebastian (24. října 2017). "benchmarksgame-cvs-mirror: zrcadlo git repozitáře benchmarksgame cvs". GitHub. Citováno 13. prosince 2017.
- ^ „Přispějte svým vlastním programem - Počítačové jazykové srovnávací hry“. benchmarksgame-team.pages.debian.net/benchmarksgame. Citováno 29. května 2018.
- ^ Kevin Williams; Jason McCandless; David Gregg (2009). „Dynamická interpretace pro dynamické skriptovací jazyky“ (PDF). Citováno 25. března 2017. Citovat deník vyžaduje
| deník =
(Pomoc) - ^ Tobias Wrigstad; Francesco Zappa Nardelli; Sylvain Lebresne Johan; Ostlund Jan Vitek (17. – 23. Ledna 2009). Integrace napsaného a netypového kódu ve skriptovacím jazyce (PDF). POPL'10. Madrid, Španělsko. Citováno 25. března 2017.
- ^ Lerche, Carl (17. – 18. Dubna 2009). Napište Fast Ruby: It’s All About the Science (PDF). Golden Gate Ruby Conference. San Francisco, Kalifornie. Citováno 25. března 2017.
- ^ J. Shirako; D. M. Peixotto; V. Sarkar; W. N. Scherer III (2009). Akumulátory Phaser: nový redukční konstrukt pro dynamický paralelismus (PDF). Mezinárodní sympozium IEEE o paralelním a distribuovaném zpracování. Citováno 25. března 2017.
- ^ Rajesh Karmani a Amin Shali a Gul Agha (2009). „Akční rámce pro platformu JVM: Srovnávací analýza“ (PDF). Ve sborníku ze 7. mezinárodní konference o principech a praxi programování v Javě. Citováno 26. března 2017.
- ^ Brunthaler Stefan (2010). Inline mezipaměť splňuje zrychlení. Evropská konference o objektově orientovaném programování (ECOOP). Objektově orientované programování. 429–451. doi:10.1007/978-3-642-14107-2_21.
- ^ Prodromos Gerakios; Nikolaos Papaspyrou; Konstantinos Sagonas (23. ledna 2010). Multithreading bez ras a paměti: Návrh a implementace v Cyclone (PDF). Sborník z 5. workshopu ACM SIGPLAN na téma Typy v jazykovém designu a implementaci. Madrid, Španělsko. str. 15–26. Citováno 25. března 2017.
- ^ Slava Pestov; Daniel Ehrenberg; Joe Groff (18. října 2010). Faktor: Programovací jazyk založený na dynamickém zásobníku (PDF). DLS 2010. Reno / Tahoe, Nevada, USA. Citováno 25. března 2017.
- ^ Andrei Homescu; Alex Suhan (24. října 2011). HappyJIT: Trasující kompilátor JIT pro PHP (PDF). DLS'11. Portland, Oregon, USA. Citováno 25. března 2017.
- ^ Vincent St-Amour; Sam Tobin-Hochstadt; Matthias Felleisen (19. – 26. Října 2012). Koučování optimalizace - Optimizátoři se naučí komunikovat s programátory (PDF). OOPSLA'12. Tucson, Arizona, USA. Citováno 25. března 2017.
- ^ Wing Hang Li; David R. White; Jeremy Singer (11. – 13. Září 2013). Jazyky hostované JVM: Mluví, ale chodí? (PDF). Sborník mezinárodní konference 2013 o zásadách a postupech programování na platformě Java: Virtuální stroje, jazyky a nástroje. Stuttgart, Německo. 101–112. Citováno 25. března 2017.
- ^ Aibek Sarimbekov; Andrej Podzimek; Lubomír Bulej; Yudi Zheng; Nathan Ricci; Walter Binder (28. října 2013). Charakteristika dynamických jazyků JVM (PDF). VMIL '13. Indianapolis, Indiana, USA. Citováno 25. března 2017.
- ^ Bradford L. Chamberlain; Ben Albrecht; Lydia Duncan; Ben Harshbarger (2017). Vstup do hry Fray: Chapel’s Computer Language Benchmark Game Entry (PDF). Citováno 25. března 2017.