Ява обгоняет С

stm6692945

http://www.codenet.ru/webmast/java/javavscpp.php
Одним из главных недостатков языка Java традиционно считается невысокая скорость работы программ по сравнению с приложениями на языке С++. И для приложений, где переносимость между платформами или сложность разработки не является критически важной, именно скорость часто была причиной, по которой разработчики делали выбор в пользу С++.
Однако опубликованные программистом Кейтом Ли результаты новых тестов показывают, что бытующее мнение о медленной работе Java не вполне справедливо.


Сравнению подвергались программы на С++, скомпилированные при помощи G++ (GCC) 3.3.1, и программы на Java, скомпилированные при помощи Sun Java 1.4.2_01. Для выполнения Java-программ использовалась виртуальная машина Sun версии 1.4.2_01. Измерения велисть на ноутбуке с процессором Pentium 4 и 512 Мб памяти, который работает под управлением ОС Red Hat Linux 9 / Fedora Test 1 с ядром версии 2.4.20-20.9 на .
В ходе тестирования выяснилось, что ключевым моментом, влияющим на производительность программ на Java являются настройки виртуальной машины. Как видно из диаграммы, при использовании "клиентского" варианта настроек (он установлен по умолчанию) практически все операции программы на Java выполняют медленнее, чем программы на C++, хотя и не так сильно, как можно было бы предположить. Зато при включении "серверных" настроек, в которых нет столь жестких ограничений по занимаемому объему памяти, преимущество в большинстве тестов оказалось на стороне Java. Причем ряд операций, например, вызов метода и хэширование, выполняется в программах на Java в несколько раз больше, чем в программах на C++. Впрочем, в основной массе тестов скорости Java и C++ оказались сопоставимыми, что, конечно, тоже может служить аргументом против мнения о медленной работе Java.

Dasar

Причем ряд операций, например, вызов метода
это скорее всего делается агрессивный inline-инг, но так можно и C++-компилятор заставить делать.
зы
в случае java-ы, преимущество только в том, что это уже можно делать потом, что дает:
1. код при распространении не разбухает.
2. проще манипулировать настройками под конкретную машину

SEMEN73


  • Использование -O2 дает далеко не оптимальный код. Подбирая конкретные значения флагов для каждого теста, можно значительно улучшить результат. В то же время, использования JIT позволяет проводить оптимизацию для каждого теста индивидуально.
  • Программы, на C++ и Java, которые использовались для тестирования, не эквивалентны.
  • Ну и вообще:
    Автор: Кейт Ли, 18.06.2004

katrin2201

+1 - реальный плюсик не ставлю только чтобы не нарушать Rating: 666 =)
Тесты синтетические, древние, местами действительно неэквивалентны. На этом форуме уже было =)
Впрочем, в 2004 году надо было показать, что элементарные вещи в джаве после введения JIT больше не тупят из-за ее "интерпретируемости" - с чем статья вполне справляется.
Только остается еще незатронутый слой проблем, связанных с ГЦ, из-за которых, джаву, в общем-то сейчас и "ругают".

evgen5555

(Bigger is better)
WAR IS PEACE
FREEDOM IS SLAVERY
IGNORANCE IS STRENGTH

Werdna

переносимость между платформами или сложность разработки не является критически важной
Крыс, будь няшко, не пости толстое трололо.
Ява — не перносима, это маркетинговое враньё. На практике же у тебя любое приложение будет упираться в особенности архитектуры.
А вот на С++ можно писать кроссплатформенно, и тогда всё везде работает.

Werdna

Одним из главных недостатков языка Java
garbage collector.
Отсюда не какие-то проблемы с перемножением матриц, а НЕПРЕДСКАЗУЕМОСТЬ поведения прог.

danilov

> А вот на С++ можно писать кроссплатформенно, и тогда всё везде работает
sun jvm написана на C++, значит оно везде работает?

stm6692945

форумчане батхерели от толстаты
но кололись плакали и отвечали

saveliev_a

не пости толстое трололо
Ява — не перносима
на С++ можно писать кроссплатформенно
:confused:

danilov

Полная предсказуемость поведения возможна только в однопоточных приложениях. Ты ограничиваешься такими?

yroslavasako

sun jvm написана на C++, значит оно везде работает?
sun jvm написан непереносимо. И не работает, например, на армах

Werdna

Полная предсказуемость поведения возможна только в однопоточных приложениях.
Заведомо некорректное утверждение.

Bibi

Слушайте, я вот давно раздел читаю — все хотел спросить hash - это ведь гаш?

danilov

sun jvm написан непереносимо. И не работает, например, на армах
Да кому они нахер впились?
---
Posted from Asus EEE Pad

danilov

apl13

Ява обгоняет C, но перед самым финишем ее ВНЕЗАПНО рвет пхп. :umn:

Оставить комментарий
Имя или ник:
Комментарий: