Игра «Бенчмарки компьютерного языка»
Игра Computer Language Benchmarks Game (ранее называвшаяся The Great Computer Language Shootout ) — это бесплатный программный проект, предназначенный для сравнения того, как заданное подмножество простых алгоритмов может быть реализовано в различных популярных языках программирования .
Проект состоит из:
- Набор очень простых алгоритмических задач
- Различные реализации вышеуказанных проблем на разных языках программирования.
- Набор модульных тестов для проверки того, что представленные реализации решают поставленную задачу.
- Платформа для запуска и определения времени реализации.
- Веб-сайт для облегчения интерактивного сравнения результатов
Поддерживаемые языки [ править ]
Из-за ограниченности ресурсов поддерживается только небольшое подмножество распространенных языков программирования, на усмотрение оператора игры. [1]
Метрики [ править ]
Оцениваются следующие аспекты каждой конкретной реализации: [2]
- пользователя общее время работы
- пиковое распределение памяти
- gzip 'ped размер исходного кода решения
- сумма общего времени ЦП по всем потокам
- индивидуальная загрузка ЦП
Обычно на одном языке программирования можно увидеть несколько решений одной и той же проблемы. Это подчеркивает, что в рамках ограничений данного языка может быть дано решение, которое имеет высокую абстракцию, эффективно использует память, является быстрым или может быть лучше распараллелено.
Тестовые программы [ править ]
С самого начала это был выбор дизайна, включающий только очень простые игрушечные задачи, каждая из которых представляет собой разную задачу программирования. [3] Это дает пользователям эталонной игры возможность тщательно изучить различные реализации. [4]
- бинарные деревья
- хаменеос-редукс
- fannkuch-редукс
- пост
- k-нуклеотид
- Мандельброт
- метеор-конкурс
- n-тело
- зажим
- регулярное выражение-редукс
- обратное дополнение
- спектральная норма
- кольцо с резьбой
История [ править ]
До 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 г.
{{cite journal}}
: Для цитирования журнала требуется|journal=
( помощь ) - ^ Тобиас Ригстад; Франческо Заппа Нарделли; Сильвен Лебресн Йохан; Остлунд Ян Витек (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 г.