Игра Computer Language Benchmarks Game (ранее называвшаяся The Great Computer Language Shootout ) - это бесплатный программный проект для сравнения того, как данное подмножество простых алгоритмов может быть реализовано на различных популярных языках программирования .
Проект состоит из:
- Набор очень простых алгоритмических задач
- Различные реализации вышеуказанных проблем на разных языках программирования.
- Набор модульных тестов для проверки того, что представленные реализации решают постановку задачи.
- Фреймворк для запуска и сроков реализации
- Веб-сайт для интерактивного сравнения результатов
Поддерживаемые языки
Из-за ограничений ресурсов поддерживается только небольшое подмножество распространенных языков программирования, на усмотрение оператора игры. [1]
- Ада
- C
- Часовня
- C #
- C ++
- Дротик
- Erlang
- F #
- Фортран
- Идти
- Haskell
- Ява
- JavaScript
- Юлия
- Лисп
- Lua
- OCaml
- Паскаль
- Perl
- PHP
- Python
- Ракетка
- Рубин
- Ржавчина
- Болтовня
- Быстрый
Метрики
Оцениваются следующие аспекты каждой данной реализации: [2]
- общее время работы пользователя
- пиковое распределение памяти
- gzip 'педальный размер исходного кода решения
- сумма общего времени процессора по всем потокам
- индивидуальная загрузка ЦП
Часто можно увидеть несколько решений одной и той же проблемы на одном языке программирования. Это подчеркивает, что в рамках ограничений данного языка может быть предложено решение, которое имеет либо высокую абстракцию, либо эффективное использование памяти, либо быстрое, либо может быть лучше распараллелено.
Тестовые программы
С самого начала это был выбор дизайна, который включал в себя только очень простые игрушечные задачи, каждая из которых предлагала различные задачи программирования. [3] Это дает пользователям Benchmark Game возможность тщательно изучить различные реализации. [4]
История
До 2007 года этот проект назывался The Great Computer Language Shootout [5].
Порт для Windows поддерживался отдельно с 2002 по 2003 год. [6]
Исходники заархивированы на GitLab. [7]
На GitHub также есть более старые форки. [8]
Проект постоянно развивается. Список поддерживаемых языков программирования обновляется примерно раз в год в соответствии с рыночными тенденциями. Пользователи также могут представить улучшенные решения любой из проблем или предложить уточнение методологии тестирования. [9]
Предостережения
Сами разработчики подчеркивают тот факт, что тем, кто занимается исследованиями, следует проявлять осторожность при использовании таких микробенчмарков:
[...] тесты JavaScript мимолетно малы и ведут себя значительно иначе, чем реальные приложения. Мы задокументировали многочисленные различия в поведении и на основании этих измеренных различий заключаем, что результаты, основанные на тестах, могут ввести в заблуждение разработчиков движка JavaScript. Более того, мы наблюдаем интересное поведение в реальных JavaScript-приложениях, которое тесты не демонстрируют, предполагая, что ранее неизученные стратегии оптимизации могут оказаться продуктивными на практике.
Влияние
Результаты тестирования выявили различные проблемы с компилятором. Иногда конкретному компилятору не удавалось обработать необычные, но в остальном грамматически правильные конструкции. В других случаях производительность во время выполнения была ниже ожиданий, что побудило разработчиков компиляторов пересмотреть свои возможности оптимизации.
Различные исследовательские статьи были основаны на тестах, их результатах и методологии. [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] [21] [22] »
Смотрите также
Рекомендации
- ^ "Игра компьютерных тестов" . benchmarksgame-team.pages.debian.net/benchmarksgame . Проверено 29 мая 2018 . CS1 maint: обескураженный параметр ( ссылка )
- ^ «Как измеряются программы - игра« Тесты компьютерного языка »» . benchmarksgame-team.pages.debian.net/benchmarksgame/ . Проверено 29 мая 2018 . CS1 maint: обескураженный параметр ( ссылка )
- ^ «Почему именно игрушечные программы? - Тесты компьютерного языка» . benchmarksgame-team.pages.debian.net/benchmarksgame . Проверено 29 мая 2018 . CS1 maint: обескураженный параметр ( ссылка )
- ^ «Описание n-body (64-битный четырехъядерный Ubuntu) - Тестовая игра на компьютерном языке» . benchmarksgame-team.pages.debian.net/benchmarksgame . Проверено 29 мая 2018 . CS1 maint: обескураженный параметр ( ссылка )
- ^ «Доверяй и проверяй - игра для тестов компьютерного языка» . benchmarksgame-team.pages.debian.net/benchmarksgame . Проверено 29 мая 2018 . CS1 maint: обескураженный параметр ( ссылка )
- ^ «Великая победа на выборах компьютерного языка Win32» . Dada.perl.it . Проверено 13 декабря 2017 года . CS1 maint: обескураженный параметр ( ссылка )
- ^ "архив-алиот-эталонная игра" . salsa.debian.org/benchmarksgame-team . Проверено 29 мая 2018 . CS1 maint: обескураженный параметр ( ссылка )
- ^ Тиль, Себастьян (24 октября 2017 г.). "benchmarksgame-cvs-mirror: git зеркало репозитория benchmarksgame cvs" . GitHub . Проверено 13 декабря 2017 года . CS1 maint: обескураженный параметр ( ссылка )
- ^ «Внесите свою собственную программу - компьютерную языковую тестовую игру» . benchmarksgame-team.pages.debian.net/benchmarksgame . Проверено 29 мая 2018 . CS1 maint: обескураженный параметр ( ссылка )
- ^ Кевин Уильямс; Джейсон МакКэндлесс; Дэвид Грегг (2009). «Динамическая интерпретация языков динамических сценариев» (PDF) . Проверено 25 марта 2017 года . Цитировать журнал требует
|journal=
( помощь )CS1 maint: обескураженный параметр ( ссылка ) - ^ Тобиас Ригстад; Франческо Заппа Нарделли; Сильвен Лебрен Йохан; Остлунд Ян Витек (17–23 января 2009 г.). Интеграция типизированного и нетипизированного кода в язык сценариев (PDF) . POPL'10. Мадрид, Испания . Проверено 25 марта 2017 года . CS1 maint: обескураженный параметр ( ссылка )
- ^ Лерче, Карл (17–18 апреля 2009 г.). Пишите быстро Ruby: все о науке (PDF) . Конференция Golden Gate Ruby. Сан-Франциско, Калифорния . Проверено 25 марта 2017 года . CS1 maint: обескураженный параметр ( ссылка )
- ^ Ж. Ширако; DM Peixotto; В. Саркар; В. Н. Шерер III (2009). Аккумуляторы фазера: новая конструкция сокращения для динамического параллелизма (PDF) . Международный симпозиум IEEE по параллельной и распределенной обработке . Проверено 25 марта 2017 года . CS1 maint: обескураженный параметр ( ссылка )
- ^ Раджеш Кармани, Амин Шали и Гул Ага (2009). «Акторские рамки для платформы JVM: сравнительный анализ» (PDF) . В материалах 7-й Международной конференции по принципам и практике программирования на Java . Проверено 26 марта 2017 года . CS1 maint: обескураженный параметр ( ссылка )
- ^ Брунталер Стефан (2010). Встроенное кэширование встречает ускорение . Европейская конференция по объектно-ориентированному программированию (ECOOP). Объектно-ориентированное программирование. С. 429–451. DOI : 10.1007 / 978-3-642-14107-2_21 .
- ^ Продромос Геракиос; Николаос Папаспиру; Константинос Сагонас (23 января 2010 г.). Многопоточность без гонок и безопасная для памяти: разработка и реализация в Cyclone (PDF) . Труды 5-го семинара ACM SIGPLAN по типам в языковом дизайне и реализации. Мадрид, Испания. С. 15–26 . Проверено 25 марта 2017 года . CS1 maint: обескураженный параметр ( ссылка )
- ^ Слава Пестов; Даниэль Эренберг; Джо Грофф (18 октября 2010 г.). Фактор: язык программирования на основе динамического стека (PDF) . DLS 2010. Рино / Тахо, Невада, США . Проверено 25 марта 2017 года . CS1 maint: обескураженный параметр ( ссылка )
- ^ Андрей Хомеску; Алекс Сухан (24 октября 2011 г.). HappyJIT: JIT-компилятор трассировки для PHP (PDF) . DLS'11. Портленд, Орегон, США . Проверено 25 марта 2017 года . CS1 maint: обескураженный параметр ( ссылка )
- ^ Винсент Сент-Амур; Сэм Тобин-Хохштадт; Маттиас Фелляйзен (19–26 октября 2012 г.). Коучинг по оптимизации - оптимизаторы учатся общаться с программистами (PDF) . ОПСЛА'12. Тусон, Аризона, США . Проверено 25 марта 2017 года . CS1 maint: обескураженный параметр ( ссылка )
- ^ Винг Ханг Ли; Дэвид Р. Уайт; Джереми Сингер (11–13 сентября 2013 г.). Языки, размещенные на JVM: они говорят сами за себя, но ходят ли они ходьбой? (PDF) . Труды Международной конференции 2013 г. по принципам и практике программирования на платформе Java: виртуальные машины, языки и инструменты. Штутгарт, Германия. С. 101–112 . Проверено 25 марта 2017 года . CS1 maint: обескураженный параметр ( ссылка )
- ^ Айбек Саримбеков; Андрей Подзимек; Любомир Булей; Юди Чжэн; Натан Риччи; Уолтер Биндер (28 октября 2013 г.). Характеристики динамических языков JVM (PDF) . ВМИЛ '13. Индианаполис, Индиана, США . Проверено 25 марта 2017 года . CS1 maint: обескураженный параметр ( ссылка )
- ^ Брэдфорд Л. Чемберлен; Бен Альбрехт; Лидия Дункан; Бен Харшбаргер (2017). Вступление в бой: вступление к игре Chapel's Computer Language Benchmark (PDF) . Проверено 25 марта 2017 года . CS1 maint: обескураженный параметр ( ссылка )
Внешние ссылки
- Официальный веб-сайт