Содержание

5.1. Тесты с Java, C# (.Net Core), PHP, Python и Lua.

Здесь я не буду изобретать велосипед и сошлюсь на статью. Я вам в главе 3.2 уже указывал на то, что буду пользоваться результатами тестов своего доброго комрада, EntityFX. Часть из вас, что по ходу чтения моей статьи перешла и также ознакомилась с его публикациями, наверняка уже заметила, что он не только проводит тесты со сторонним ПО, но и сам пишет тесты на разных языках, которыми тестируют производительность процессоров. Просто зайдите на его GitHub: там и тесты на языках C#, PHP, JavaScript, Java, Python и Lua, и ещё результаты этих тестов.

Выводы по тестам Java из статьи EntityFX.

Скриншот 113. Выводы по тестам Java из статьи EntityFX.

Я пройдусь чисто по выводам, а подробности найдёте в его статье. Java на Эльбрусе медленный? Да, на 8С он раза в 3 медленнее, чем на i7 2600 в многопотоке (а тот медленнее моего i7 8550U на 25 Ватт). Эльбрус 16С уже сильно быстрее будет, по производительности равен i7 2600. Учитывая темпы роста производительности, в принципе, лет через 5 Эльбрус может сравняться с топовыми Intel, но для этого ему требуются инвестиции.

Не, а что вы хотели? Чтобы с бюджетами в сотни раз меньше, чем у Intel, МЦСТ выпускали процессор, который при работе с любым кодом быстр? Если бы они такое сделали, я бы решил, что мы живём в сказке.

С C# та же история, что и с Java: были бы деньги, там бы и была быстрая работа. На Эльбрус есть mono, open-source реализация .Net от Microsoft, но mono работает намного медленнее, чем .Net Core от Microsoft (причём, даже на x86-64 системах), поэтому, если вам нужна быстрая работа, вариант только использовать C# .Net Core в режиме трансляции RTC (нативно под E2K не собирает своё детище Microsoft, от МЦСТ пока есть лишь экспериментальная версия), а там Эльбрус 16С хоть и быстрее, чем i7 2600, но всего на четверть (примерно на столько же быстрее и мой i7 8550U).

Время, затраченное на создание виртуального окружения Python на Эльбрус 16С.

Скриншот 114. Время, затраченное на создание виртуального окружения Python на Эльбрус 16С.

Медленно ли Эльбрус работает с Python, JavaScript и Lua? Да, к сожалению, это так. Причина здесь заключается в том, что в случае с интерпретируемыми языками, т.е. теми, у которых код «на лету» переводится в машинный, а не компилируется заранее, очень сложно произвести оптимизации кода. Есть несколько версий того, почему Эльбрус медленнее с интерпретируемыми языками: тут и отсутствие динамического оптимизатора кода в самом процессоре, и простои процессора при частых переходах в коде (jmp), и использование 3 стеков для данных в регистрах. Но точно я не знаю.

Вы можете посмотреть на скриншоте выше и увидеть, что даже на Эльбрусе 16С создание виртуального окружения занимает около 15 секунд. Что за виртуальное окружение в Python? Это когда вы для каждого отдельного приложения создаёте свою среду со своими зависимостями и версиями этих зависимостей и изолируете эту среду других приложений, чтобы не было конфликта из-за разных версии зависимостей разного рода приложений. На моём ноутбуке это делается за <1.5 секунды, а на Эльбрусе секунд за 15. Я слышал, что можно ещё оптимизациями выжать из Python раза в 2-3 больше скорости, и я охотно в это верю, но пока дела обстоят так.