Проект бесплатного программного обеспечения
Игра Computer Language Benchmarks Game (ранее называвшаяся The Great Computer Language Shootout ) — это бесплатный программный проект, предназначенный для сравнения того, как заданное подмножество простых алгоритмов может быть реализовано в различных популярных языках программирования .
Проект состоит из:
- Набор очень простых алгоритмических задач
- Различные реализации вышеуказанных проблем на разных языках программирования.
- Набор модульных тестов для проверки того, что представленные реализации решают поставленную задачу.
- Платформа для запуска и определения времени реализации.
- Веб-сайт для облегчения интерактивного сравнения результатов
Поддерживаемые языки
Из-за ограниченности ресурсов поддерживается только небольшое подмножество распространенных языков программирования, на усмотрение оператора игры. [1]
Список поддерживаемых языков
- Ада
- С
- Часовня
- С#
- С++
- Дарт
- Эрланг
- Ф#
- Фортран
- Идти
- Хаскелл
- Джава
- JavaScript
- Юлия
- Лисп
- Луа
- OCaml
- Паскаль
- Перл
- PHP
- Питон
- Ракетка
- Рубин
- Ржавчина
- Болтовня
- Быстрый
Метрики
Измеряются следующие аспекты каждой конкретной реализации: [2]
Обычно на одном языке программирования можно увидеть несколько решений одной и той же проблемы. Это подчеркивает, что в рамках ограничений данного языка может быть дано решение, которое имеет высокую абстракцию, эффективно использует память, является быстрым или может быть лучше распараллелено.
Контрольные программы
С самого начала это был выбор дизайна, включающий только очень простые игрушечные задачи, каждая из которых представляет собой разную задачу программирования. [3]
Это дает пользователям эталонной игры возможность тщательно изучить различные реализации. [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] [ чрезмерное цитирование ]
Смотрите также
Рекомендации
- ^ "Игра с тестами компьютерного языка" . тестыgame-team.pages.debian.net/benchmarksgame . Проверено 29 мая 2018 г.
- ^ «Как измеряются программы - Игра в тесты компьютерного языка» . тестыgame-team.pages.debian.net/benchmarksgame / . Проверено 29 мая 2018 г.
- ^ «Почему игрушечные программы? - Игра по проверке компьютерных языков» . тестыgame-team.pages.debian.net/benchmarksgame . Проверено 29 мая 2018 г.
- ^ «Описание n-body (64-битный четырехъядерный процессор Ubuntu) - Игра с тестами компьютерного языка» . тестыgame-team.pages.debian.net/benchmarksgame . Проверено 29 мая 2018 г.
- ^ «Доверяй и проверяй - Игра с тестами компьютерного языка» . тестыgame-team.pages.debian.net/benchmarksgame . Проверено 29 мая 2018 г.
- ^ «Великая перестрелка по компьютерному языку Win32» . Дада.perl.it. _ Проверено 13 декабря 2017 г.
- ^ "архив-alioth-benchmarksgame" . salsa.debian.org/benchmarksgame-team . Проверено 29 мая 2018 г.
- ↑ Тиль, Себастьян (24 октября 2017 г.). «benchmarksgame-cvs-mirror: git-зеркало репозитория тестового файла cvs». Гитхаб . Проверено 13 декабря 2017 г.
- ^ «Представьте свою собственную программу - Игра по тестам компьютерного языка» . тестыgame-team.pages.debian.net/benchmarksgame . Проверено 29 мая 2018 г.
- ^ Кевин Уильямс; Джейсон МакКэндлесс; Дэвид Грегг (2009). «Динамическая интерпретация языков динамических сценариев» (PDF) . Проверено 25 марта 2017 г.
- ^ Тобиас Ригстад; Франческо Заппа Нарделли; Сильвен Лебресн Йохан; Остлунд Ян Витек (17–23 января 2009 г.). Интеграция типизированного и нетипизированного кода в языке сценариев (PDF) . ПОПЛ'10. Мадрид, Испания . Проверено 25 марта 2017 г.
- ↑ Лерш, Карл (17–18 апреля 2009 г.). Напишите Fast Ruby: все дело в науке (PDF) . Рубиновая конференция Золотые Ворота. Сан - Франциско, Калифорния . Проверено 25 марта 2017 г.
- ^ Дж. Сирако; Д. М. Пейшотто; В. Саркар; В. Н. Шерер III (2009). Аккумуляторы Phaser: новая конструкция сокращения для динамического параллелизма (PDF) . Международный симпозиум IEEE по параллельной и распределенной обработке . Проверено 25 марта 2017 г.
- ^ Раджеш Кармани, Амин Шали и Гул Ага (2009). «Акторные структуры для платформы JVM: сравнительный анализ» (PDF) . В материалах 7-й Международной конференции по принципам и практике программирования на Java . Проверено 26 марта 2017 г.
- ^ Брунталер Стефан (2010). Встроенное кэширование и ускорение . Европейская конференция по объектно-ориентированному программированию (ECOOP). Том. Объектно-ориентированного программирования. стр. 429–451. дои : 10.1007/978-3-642-14107-2_21.
- ^ Продромос Геракиос; Николаос Папаспиру; Константинос Сагонас (23 января 2010 г.). Многопоточность без гонок и с сохранением памяти: проектирование и реализация в Cyclone (PDF) . Материалы 5-го семинара ACM SIGPLAN «Типы в языковом проектировании и реализации». Мадрид, Испания. стр. 15–26 . Проверено 25 марта 2017 г.
- ^ Слава Пестов; Дэниел Эренберг; Джо Грофф (18 октября 2010 г.). Фактор: язык программирования на основе динамического стека (PDF) . DLS 2010. Рено/Тахо, Невада, США . Проверено 25 марта 2017 г.
- ^ Андрей Хомеску; Алекс Сухан (24 октября 2011 г.). HappyJIT: трассирующий JIT-компилятор для PHP (PDF) . ДЛС'11. Портленд, Орегон, США . Проверено 25 марта 2017 г.
- ^ Винсент Сент-Амур; Сэм Тобин-Хохштадт; Матиас Феляйзен (19–26 октября 2012 г.). Коучинг по оптимизации: оптимизаторы учатся общаться с программистами (PDF) . ООПСЛА'12. Тусон, Аризона, США . Проверено 25 марта 2017 г.
- ^ Крыло Хан Ли; Дэвид Р. Уайт; Джереми Сингер (11–13 сентября 2013 г.). Языки, размещенные на JVM: они говорят то, что говорят, но идут ли они по пути? (PDF) . Материалы Международной конференции 2013 г. «Принципы и практика программирования на платформе Java: виртуальные машины, языки и инструменты». Штутгарт, Германия. стр. 101–112 . Проверено 25 марта 2017 г.
- ^ Айбек Саримбеков; Андрей Подзимек; Любомир Булей; Юди Чжэн; Натан Риччи; Уолтер Биндер (28 октября 2013 г.). Характеристики динамических языков JVM (PDF) . ВМИЛ '13. Индианаполис, Индиана, США . Проверено 25 марта 2017 г.
- ^ Брэдфорд Л. Чемберлен; Бен Альбрехт; Лидия Дункан; Бен Харшбаргер (2017). Вступая в бой: запись об игре Chapel's Computer Language Benchmark (PDF) . Проверено 25 марта 2017 г.
Внешние ссылки