Проект по тестированию эффективности языков программирования

Тема в разделе "Оффтоп", создана пользователем Mila, 7 июл 2011.

  1. Mila
    Оффлайн

    Mila Команда форума Основатель

    Сообщения:
    4.970
    Симпатии:
    13.602
    В рамках проекта PLB предпринята попытка создания тестового комплекта, охватывающего различные аспекты при оценке эффективности языков программирования.

    Подготовленный тестовый комплект включает реализацию четырех базовых тестовых заданий для 11 языков программирования: Си, С#, D, Go, Java, JavaScript, Lua, Perl, Python, R и Ruby.
    Всего протестировано 26 различных реализаций поддерживаемых языков. Эффективность оценивается с позиции производительности и потребления памяти.
    В число тестов входят: Sudoku - программа для поиска решений в игре Судоку (20x50).
    Matmul - реализация алгоритма по умножению двух матриц размером 1000x1000, который хорошо подходит для измерения производительности циклов и оценки выполнения типичных математических задач.
    Patmch - программа для поиска строк в файле с использованием нескольких видов регулярных выражений (влияние скорости ввода/вывода устранено через размещение файла в памяти).
    Dict - поиск повторяющихся строк из списка в 5 млн строк (последовательно операция повторяется для каждой строки списка, в среднем каждая строка повторяется по 4 раза), позволяет оценить производительность хэшей и ассоциативных массивов. Т
    Тесты sudoku" и "matmul" ориентированы на измерение производительности языка, а тесты "Patmch" и "dict" производительности библиотек.

    Некоторые наблюдения:

    - Быстрее всего простые регулярные выражения выполняются в Perl, при этом Perl в связанных с регекспами тестах в три раза обгоняет по скорости язык Си (GCC и библиотека regexp9 из Plan 9). JavaScript-движок V8 при выполнении регулярных выражений показал результаты аналогичные языку Cи (GCC), JavaScript-движок JaegarMonkey немного отстал от V8, но совсем незначительно.

    - В тесте, оценивающем производительность обработки строк неплохие результаты показал CPython 2.7, который отстал от GCC всего на 25% (Perl отстал в два раза, JavaScript-движок V8 и язык Java - в два с половиной раза, JavaScript-движок JaegarMonkey и язык Ruby - в три раза).

    - В целом JavaScript-движок V8 показал во всех тестах более высокие результаты по сравнению с движком JaegarMonkey от проекта Mozilla.

    - В тесте умножения матриц LuaJIT немного обогнал GCC. Java и JavaScript-движок V8 отстали от GCC всего на 10%. Для сравнения, Python отстал от GCC в 66 раз, JavaScript-движок JaegarMonkey в 7 раз, Perl в 100 раз, Ruby в 273 раза.

    - В эталонном тесте sudoku ближе всего к показателям языка Си (GCC) оказался язык Java, который отстал всего на 70%. JavaScript-движок V8 отстал в 3.7 раза, C#@Mono в 3.8 раз, JavaScript-движок JaegarMonkey в 18 раз, Ruby в 98 раз, CPython в 113 раз, Perl в 121 раз.

    - При оценке потребления памяти при обработке строк, после языка Си (52 Мб) наиболее экономичными оказались JavaScript-движок V8 (97 Мб), CPython (112 Мб), C#@Mono (113 Мб). Ruby израсходовал 156 Мб, а Perl - 219 Мб, JavaScript-движок JaegarMonkey - 274 Мб.

    Наихудшие результаты показали: R - 1 Гб и Jython - 457 Мб, JRuby - 436 Мб. В тесте умножения матриц расстановка сил в плане потребления памяти изменилась: Си (GCC) 32 Мб, JavaScript-движок JaegarMonkey - 35 Мб, C#@Mono - 40 Мб, Java - 67 Мб, CPython - 91 Мб, V8 - 141 Мб, Ruby - 196 Мб, Perl - 225 Мб.



    подробнее
     
    Последнее редактирование: 7 июл 2011
    4 пользователям это понравилось.

Поделиться этой страницей