Новости IT, хостинга
  Android, Apple, Facebook, Google, Linux, Microsoft, Samsung, Twitter, Интернет, Россия, браузеры, обновление ПО, онлайн-сервисы, операционные системы, планшеты, рынок ИТ, сделки, смартфоны, социальные сети, уязвимости  
  новостей: 10357
  комментариев: 2247

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


В рамках проекта 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 Мб.


Источник: opennet.ru

  7 июля 2011 479
Версия для печати

← предыдущая новость следующая новость →

Мой комментарий
Ваше имя*:
Email:
Комментарий*:
Зарегистрироваться автоматически: Вы будете зарегистрированы на сайте автоматически при добавлении комментария. Обязательно заполните поле Email для этого.
Сумма чисел 5 и 12*:            


Хостеры (2446)
HostDB (35)
Софт (2640)
Железо (993)
Интернет (1435)
Статистика и аналитика (3324)


Лучшие новости

Самые читаемые новости

Отправить сообщение администратору

Сумма чисел 14 и 0*:


Яндекс цитирования
сообщить о неточности