LINUX.ORG.RU

Доверьтесь виртуальной машине


0

0

Таков смысл одного из разделов интервью с популяризатором технологий Sun Брайаном Гетцом. В нем он поясняет этот тезис. "Разработчики очень любят оптимизировать код, и не зря. Это весело и увлекательно. Но гораздо важнее знать, когда стоит заниматься оптимизацией, а когда – нет. К сожалению, в основном разработчикам редко помогает интуиция в выборе участков приложения, требующих ускорения выполнения.

...Код на Java вполне может выполняться быстрее кода на C. ... Ирония в том, что C-программисты гордятся своей возможностью управлять указателями на самом низком уровне, и считают это своим самым мощным инструментом, и эта же самая возможность мешает C-компиляторам производить наиболее эффективно оптимизированный код. Отнимая эту возможность у программиста, вы предоставляете море возможностей для оптимизации компилятору, и будьте уверены, Java-компилятор знает об оптимизации больше, чем 99,99% обычных программистов.

Поскольку программисты уже 45 лет занимаются созданием сборщиков мусора, сегодняшние сборщики мусора гораздо более изощренные, чем принято думать

...Если бы я мог послать волшебной палочкой сообщение всем разработчикам на Java, я бы сказал им: доверьтесь виртуальной машине. Она умнее, чем вы думаете. Перестаньте пытаться обставить и обогнать ее. Пишите в коде то, что вы хотите, чтобы она сделала и она сделает все возможное и даже чуть больше чтобы то, что вы задумали, выполнилось наиболее быстро."

>>> Подробности

anonymous

Проверено: Pi ()

Ответ на: комментарий от anonymous

> Скорее, для очковтиратильства про жабу. Носятся толпами по офису и орут: "ЖАБА, ЖАБА, ЖАБА". В ибм - же одни "корпоративные" дегенераты.

За их зарплату я б тоже побегал по офису. Толпой.

svu ★★★★★
()
Ответ на: комментарий от anonymous

>Cтатистики чего?

Предложений зарплат и вакансий. От того что ты там сидишь в теплом месте с одним бесконечным проектом на C++ не показывает ни рынка ни динамики рынка. job.ru его показывает. Из него проистекает что C++ программисты, чем дальше тем больше нерыночны - нужны на точечных проектах. Под MS все их вытесняет C#, а под кроспалтформом всегда доминировала жаба.

r ★★★★★
()
Ответ на: комментарий от Gharik

>Товарищ, скажу по секрету, что хороший код рефакторинга требовать не должен.

Очень умная мысль. Все жабоненависники такие глупые?

lexius ★★
()
Ответ на: комментарий от r

>Это наверное потому в нем почти никто не разбирается даже в мире плюсов?:)

вы не поверите, даже в мире жаба часто встречаются такие, которые утверждают, что например в этом случае

public class A {

public void test( final Cloneable c ) {

int i = c.hashCode(); //[!]

}

}

строка [!] вызовет ошибку компиляции, т.к. в Cloneable как известно не объявлено вообще никаких методов.

aydef
()
Ответ на: комментарий от Dr_ZLO

>Виртуальная машина на C и C++ выполняет Java программы быстрее самой себя -- парадокс!

Программы на O'Caml в среднем, где-то, на треть быстрее аналогичных программ на Си++. При этом O'Caml генерирует не бинарный код, а GCC-код, который потом компилируется GCC. Парадокс?

KRoN73 ★★★★★
()

Java is designed to be understandable by brain-damaged people. (c) И хватит флеймить.

ero-sennin ★★
()
Ответ на: комментарий от anonymous

>В сабжевой статье как раз говорится, что Java 6.0 некисло прибавила в производительности

Azureus под 6.0 стал жрать на треть меньше памяти :) Про производительность ничего сказать не могу, так как и до того не тормозил.

KRoN73 ★★★★★
()
Ответ на: комментарий от r

юВ C++ этого вообще нет - вот где факт. В кернеле ребята этим озабочены потому, что это пример долгоживущего приложения для которого memory fragmentation становится проблемой. Все кто пишет долгоживущие сервера - озабочены этой проблемой. Жабский GC выполняет heap compaction, который снимает проблему. То что ты сказал, что жаба ничего нового не вносит, а только умных людей ограничивает только показало твой уровень. Как про того анонимуса, который крутость технологии наличием free меряет.

Пищи еще. А то что убрать за жабой надо обязательно, и это не бесплатно тоже забыли? А фрагментация не будет расти бесконечно ...

>Особенно в области enterprise server side.

Ну-ну. Из разряда Виндовс - лучшая ос.

anonymous
()
Ответ на: комментарий от anonymous

>нормальные люди ни за что не променяют работающий код на c+/cи на джаву -потому что затраты на кроссплатформенность на си/c++ _меньше_ чем перевод проекта на джаву с учетом кроссплатформенности.

Кроме работающего кода есть ещё и новые проекты. Или ты до сих пор сидишь в DOS? :)

KRoN73 ★★★★★
()
Ответ на: комментарий от anonymous

>Еще как попадает. Kubuntu.

Сам не щупал, но знающие люди говорят, что Kubuntu - это диагноз :D

KRoN73 ★★★★★
()
Ответ на: комментарий от KRoN73

> O'Caml генерирует не бинарный код, а GCC-код, который потом компилируется GCC.

Разве? А почему тогда он до сих пор не может осилить PIC и динамические библиотеки? При всей моей любви к этому языку. :P

ero-sennin ★★
()
Ответ на: комментарий от r

>Предложений зарплат и вакансий. От того что ты там сидишь в теплом >месте с одним бесконечным проектом на C++ не показывает ни рынка ни >динамики рынка. job.ru его показывает.

Я тебе могу назвать целые отрасли где джава никогда не будет доминировать : разработка 3д игр, разработка mission-critical систем (это которые под qnx и заводами рулят), вообщем везде где нужна быстрая и точная работа программы.

В общем случае в любой отрасли сейчас есть выбор: использовать c/c++ и профессионалов или использовать джаву и идиотов.

И задумайся наконец ,почему все популярные программы под все популярные ОСи пишутся на c/c++ а не на джаве.

anonymous
()
Ответ на: комментарий от Danmer

>Народ, а как снизить потребление памяти в азуреусе?

Поставить Java6 и/или отключить GUI, используя консоль.

KRoN73 ★★★★★
()
Ответ на: комментарий от anonymous

Расскажи как тебя в последний раз переманили? Если не секрет кто и куда. Но сам процесс переманивания все-таки интереснее.

eXOR ★★★★★
()
Ответ на: комментарий от anonymous

>Вот на жабе вообще программирование вообще не возможно - это факт ( только быдлокодерство).

Дай, плиз, пару-тройку ссылок на фришные форумы и CMS, написанные на Си++.

KRoN73 ★★★★★
()
Ответ на: комментарий от lexius

> Очень умная мысль. Все жабоненависники такие глупые?

Не уловил логики. При чем здесь слова про жабу и какие-то эмоции? Именно этим нонче определяется интеллект?

Gharik
()
Ответ на: комментарий от KRoN73

>Кроме работающего кода есть ещё и новые проекты. Или ты до сих пор >сидишь в DOS? :)

Ну дык под новый проект инструменты выбираются ведь с учетом опыта работы с инструментом. Ты же не будешь при команде жабокодеров под боком писать новый проект на с++ :)

anonymous
()
Ответ на: комментарий от eXOR

>Расскажи как тебя в последний раз переманили? Если не секрет кто и >куда. Но сам процесс переманивания все-таки интереснее.

Это секретная информация ,сэр!

anonymous
()
Ответ на: комментарий от Gharik

>Товарищ, скажу по секрету, что хороший код рефакторинга требовать не должен.

То есть, по-твоему, "хороший код" - это который никогда не развивается? :D

KRoN73 ★★★★★
()
Ответ на: комментарий от anonymous

> проприетарная быдлоподелка, предназначенная для рабов.

Глупый анонимус. Java6 - GPL2.

eveel ★★
()
Ответ на: комментарий от r

>В C++ этого вообще нет - вот где факт.

ну это конечно нетак. в С++ вы можете использовать BoehmGC например, также в c.l.c++-moderated несколько я видел ссылки на реализацию прецезионного (precise) многоуровневого GC. просто там это мало кого не интересует.

>В кернеле ребята этим озабочены потому, что это пример долгоживущего приложения для которого memory fragmentation становится проблемой. Все кто пишет долгоживущие сервера - озабочены этой проблемой

несомненно проблема существует, как и существует множество способов ее решения, которые успешно работают на практике. я уже ( в облике анонимуса или captain pedantic ) постил результаты исследований, которые научно обосновывают существование 100% практического решения проблем фрагментации для систем без GC.

>Жабский GC выполняет heap compaction, который снимает проблему. Т

снимает. но ценой огромных затрат. ibm-овцы наступали на грабли, когда при потреблении >= 2G полная дефрагментация хипа приводила к остановке мира на время 5-6 (!!!) минут.

вообще говоря все зависит от allocation pattern. как в жаба так и в системах без GC.

aydef
()
Ответ на: комментарий от KRoN73

> То есть, по-твоему, "хороший код" - это который никогда не развивается? :D

Ну и какой смысл постоянно переписывать хорошо делающий свою работу код? Про интерфейсы (считай, обёртки под задачу) я оговорку сделал, остальное пофиг. Что, раз в пять лет собирается куча народа и дружно колбасит, скажем, glibc по новой, мотивируя типа необходимостью отрефакторить код? Или взять сорцы msvcrt?

Gharik
()
Ответ на: комментарий от aydef

>вы не поверите, даже в мире жаба часто встречаются такие, которые утверждают, что например в этом случае

Это я не поверю?1:) Я таких каждую неделю на собеседованиях вижу:)

r ★★★★★
()
Ответ на: комментарий от anonymous

>А то что убрать за жабой надо обязательно, и это не бесплатно тоже забыли? А фрагментация не будет расти бесконечно ...

Для начала прочитай что такое фрагментация и в чем именно проявляется проблема. А то уже чушь несешь полную. Тебя слово "долгоживущее" не насторожило?

r ★★★★★
()
Ответ на: комментарий от Gharik

>Ну и какой смысл постоянно переписывать хорошо делающий свою работу код? Про интерфейсы (считай, обёртки под задачу) я оговорку сделал, остальное пофиг. Что, раз в пять лет собирается куча народа и дружно колбасит, скажем, glibc по новой, мотивируя типа необходимостью отрефакторить код? Или взять сорцы msvcrt?

Рефакторинг это никак не переписывание с нуля. Вон что gcc, что ядро Linux постоянно рефакторят.

WFrag ★★★★
()
Ответ на: комментарий от KRoN73

>Почему Azureus не подпадает под эти ужасы?

Зато оперативки жрёт... 200-300 метров при 50-100 раздачах.

anonymous
()
Ответ на: комментарий от anonymous

>Ну дык под новый проект инструменты выбираются ведь с учетом опыта работы с инструментом.

Да, но опыт работы - это не единственный фактор. Нормальный программист для задачи выбирает подходящий язык, а не тот, который он просто лучше знает :D А, вот, написание всего подряд на одном и том же языке, не важно, Бейсик это или Си++, без анализа его применимости к поставленной задаче, и есть признак быдлокодерства.

KRoN73 ★★★★★
()
Ответ на: комментарий от Gharik

>Ну и какой смысл постоянно переписывать хорошо делающий свою работу код?

Развивающийся проект приводит к расширению кода. Расширение кода, если это не быдлокопипастирование, рано или поздно потребует рефакторинга.

>Про интерфейсы (считай, обёртки под задачу) я оговорку сделал, остальное пофиг. Что, раз в пять лет собирается куча народа и дружно колбасит, скажем, glibc по новой, мотивируя типа необходимостью отрефакторить код? Или взять сорцы msvcrt?

Рефакторинг - это, как правило, внутренний процесс проекта. Интерфейса он в общем случае не касается.

KRoN73 ★★★★★
()
Ответ на: комментарий от ero-sennin

>> O'Caml генерирует не бинарный код, а GCC-код, который потом компилируется GCC.

>Разве?

У меня было именно так :)

>А почему тогда он до сих пор не может осилить PIC и динамические библиотеки?

Вот уж чего не знаю, того не знаю. Я им только баловался, а не серьёзно работал. Хотя заочно весьма уважаю :D

KRoN73 ★★★★★
()
Ответ на: комментарий от aydef

>Жабский GC выполняет heap compaction, который снимает проблему. Т

>снимает. но ценой огромных затрат. ibm-овцы наступали на грабли, когда >при потреблении >= 2G полная дефрагментация хипа приводила к остановке >мира на время 5-6 (!!!) минут.

Советую почитать информацию о параметрах, с кот. можно зпускать VM. Там огромнейшее количество опций по настройке сборщика мусора. Там и разновидностей сборщиков дохрена и больше. При правильной настройке никакой остановки на 5-6 минут быть не может. То, что ты написал - позор того, кто все это настраивал.

lexius ★★
()
Ответ на: комментарий от anonymous

>Зато оперативки жрёт... 200-300 метров при 50-100 раздачах.

Ужасы ты какие-то рассказываешь. На том же числе раздач, жрёт он, где-то, на треть больше, чем ktorrent. Мегабайт по 100..120 против 70..100.

Впрочем, если даже и 300 жрал - пофиг бы было. Лучше дорогие конфеты, чем дешёвый кал :D

KRoN73 ★★★★★
()
Ответ на: комментарий от insa

> А C/C++ на много веселее и интереснее ,-)

- Чем интересно программирование? - Непредсказуемостью результата! (ц)

CybOrc
()
Ответ на: комментарий от r

>Для начала прочитай что такое фрагментация и в чем именно проявляется проблема. А то уже чушь несешь полную. Тебя слово "долгоживущее" не насторожило?

А тебе всё-таки рекомендую отличать утечку от фрагментации, которая обязательно съест всю память. Если объём данных со временем не возрастёт больше определённого порога, то и фрагментация не будет расти бесконечно, но бывают случаи когда это приводит к печальным результатам. Проблема фрагментации решается и без жабы. Часто бывает достаточно не выделять память сильно отличающимися по размеру кусками.

Очередной слив эр. Вот какие фанатичные жабисты бывают, но это их долг - защищать религию, и втирать всем про интерпрайз.

P.S. У сан вообще с интерпрайзом просто сказка: и пинг оф дес, и энтерпрайз черви - полный интерпрайз набор.

anonymous
()
Ответ на: комментарий от lexius

>Советую почитать информацию о параметрах, с кот. можно зпускать VM. Там огромнейшее количество опций по настройке сборщика мусора. Там и разновидностей сборщиков дохрена и больше.

спасибо. вы открыли мне глаза!

>При правильной настройке никакой остановки на 5-6 минут быть не может. То, что ты написал - позор того, кто все это настраивал.

это настраивали специалисты ibm и jdk была от ibm. после этого они вынуждены были сделать heap compaction инкрементальным...

p.s.

говорят лор славен "крутыми" спецами! убеждаюсь в этом всякий раз как захожу сюда.

aydef
()
Ответ на: комментарий от anonymous

>Я тебе могу назвать целые отрасли где джава никогда не будет доминировать : разработка 3д игр, разработка mission-critical систем (это которые под qnx и заводами рулят), вообщем везде где нужна быстрая и точная работа программы.

Эта пипец. Разработка 3D игр уже сейчас есть. Для тебя что открытие что все 3D считает карточка? А какая разница на чем написано остальное? Любая 3D игра содержит скриптовый движек для сценариев.

>вообщем везде где нужна быстрая и точная работа программы.

Ох, парень прочитай, что обозначает слово realtime. А эта "быстрая и точная работа программы" - это как студенты на первом курсе на экзамене.

>В общем случае в любой отрасли сейчас есть выбор: использовать c/c++ и профессионалов или использовать джаву и идиотов.

Да - с такими профессионалами ты разработаешь мишен критикал систему, которая через несколько дней работы вследствие высокой фрагментации памяти будет иметь нестабильное время отклика. Ты что думаешь - если у тебя free в руках то ты типа все как без проблем напишешь? Ты что в состоянии предсказывать за сколько выполниться delete на неизвестном дереве объектов с неизвестным количество и характеристиками деструкторов? >И задумайся наконец ,почему все популярные программы под все популярные ОСи пишутся на c/c++ а не на джаве.

Задумайся почему на c/++ многие программы вообще не пишутся. А многие в принципе не могут быть написаны. Я уже задавал этот вопрос одному апологету c++ - задам и тебе. Приведешь 5 програм на Java и 5 лучших (по сумарному набору характеристик, а не скорости запуска) аналогов на C++?

r ★★★★★
()
Ответ на: комментарий от eXOR

>Но сам процесс переманивания все-таки интереснее.

Звонки по твоему личному телефону, который ты никому не давал, но он у них есть, распрашивание как здоровье и всем ли доволен на текущей работе, расказ об их компании и проектах, вопросы какими бы проектами хотел заниматься, и не хотел бы поехать прямо сейчас в Лондон и т.д. но если даже сейчас нет не против ли ты чтобы они через тройку месяцев позвонили - может поменяется чего, спасибо. Это так - обычный headhunting.

r ★★★★★
()

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

azureus 2 нормально у меня работал, пока я не воткнул java 1.4.2 (она мне нужна для OmegaT).

Теперь a2 запускается, показывает окно и падает. Это из-за чего?

jackill ★★★★★
()
Ответ на: комментарий от aydef

>это настраивали специалисты ibm и jdk была от ibm. после этого они >вынуждены были сделать heap compaction инкрементальным...

>p.s.

>говорят лор славен "крутыми" спецами! убеждаюсь в этом всякий раз как >захожу сюда.

И действительно, стоит ваши посты только почитать. Это так "по-спецовски" вспомнить время, когда что-то у кого-то было недоработано, хотя сейчас все в порядке, и ссылаться на это. Может стоит найти самую неудачную реализацию VM, ссылаться на ее недостатки и утверждать, что жаба фигня?

lexius ★★
()
Ответ на: комментарий от aydef

>просто там это мало кого не интересует.

А знаешь почему? потомо что это практически не применимо. Для того чтобы это работало хотя-бы прилично - надо не пользоваться никакими общими бидблиотеками, которые написаны не так. То есть надо будет руками написать MyRuntimeEnvironment похожий на JRE. Чем собственно Trolltech и занимаются. А поскольку никто не горит желаним переписать все - это действительно мало кого интересует.

> которые научно обосновывают существование 100% практического решения проблем фрагментации для систем без GC.

Естественно. А Java это ведь не зародившееся в дебрях ада порождение непонятно-чего. Это и есть среда которая сделана для того чтобы теорию сделать практикой. И весьма успешно. Вариант реализации.

>ibm-овцы наступали на грабли, когда при потреблении >= 2G полная дефрагментация хипа приводила к остановке мира на время 5-6 (!!!) минут.

Да. Но мир не стоит на месте (каламбур:)). Incremental GC появился в 1.4 кажется (или 1.5?). Для 1.7 делают GC который вообще не будет делать stop-the-world никогда.

>вообще говоря все зависит от allocation pattern. как в жаба так и в системах без GC.

Да. Только реально мало программистов на C++ этим озабочены. Им и без того забот хватает.

r ★★★★★
()
Ответ на: комментарий от Bohtvaroh

>Тем не менее так называемое "системное программирование" на плюсах и вовсе невозможно, не надо всё смешивать

Вай ;) А когда народ драйвера (kernel mode) для NT пишет на C++ он наверное что-то не так делает ;)

PS: Кстати аналогичный фреймворк и для Linux был ... правда в качестве эксперимента.

sS ★★★★★
()
Ответ на: комментарий от lexius

>При правильной настройке никакой остановки на 5-6 минут быть не может. То, что ты написал - позор того, кто все это настраивал.

Не - такое было. Только если не ошибаюсь это было 1.3(если не 1.2) на очень здоровой системе. То бишь уже в области преданий прошлого века.

r ★★★★★
()
Ответ на: комментарий от r

>Ты что в состоянии предсказывать за сколько выполниться delete на неизвестном дереве объектов с неизвестным количество и характеристиками деструкторов?

Остаётся только добавить: "в программе для неизвестных целей."

anonymous
()
Ответ на: комментарий от anonymous

>А тебе всё-таки рекомендую отличать утечку от фрагментации, которая обязательно съест всю память.

Третий раз предлагаю - почитай в чем проблема фрагментации!

r ★★★★★
()
Ответ на: комментарий от r

>Эта пипец. Разработка 3D игр уже сейчас есть. Для тебя что открытие что >все 3D считает карточка? А какая разница на чем написано остальное? >Любая 3D игра содержит скриптовый движек для сценариев.

Ага расскажи мне дядя про шейдеры на джаве :)) И про карты освещенности :))

>Ох, парень прочитай, что обозначает слово realtime. А эта "быстрая и >точная работа программы" - это как студенты на первом курсе на >экзамене.

Что в киеве русский язык уже запретили? Или ты чего-то не понял в написанном?

>Да - с такими профессионалами ты разработаешь мишен критикал систему, >которая через несколько дней работы вследствие высокой фрагментации >памяти будет иметь нестабильное время отклика.

Трижды лол :))

>Ты что думаешь - если у тебя free в руках то ты типа все как без >проблем напишешь?

Гыыы дядя а ты еще чтонить помимо free из c/c++ знаешь? :))

>Задумайся почему на c/++ многие программы вообще не пишутся.

Это чистый дзен :)

>Приведешь 5 програм на Java и 5 лучших (по сумарному набору >характеристик, а не скорости запуска) аналогов на C++?

aqua datastudio vs toad jedit vs nedit|emacs :) javamp vs winamp tomcat vs apache+php muCommander vs krusader |total commander :)))

Дальще продолжать?

А давай теперь я тебя как жабофила попрошу назвать _хоть одно_ приложение на j2se у которого нет более быстрого и популярного аналога на c/c++.

anonymous
()
Ответ на: комментарий от jackill

>Поскольку собралось тут немеряно джавапоклонников, хочу задать вот какой вопрос.

Их мало, но орут громко, как сектанты. А как доходит до конкретики, сразу визги: " ИНТЕРПРАЙЗ"

anonymous
()
Ответ на: комментарий от tkpai

>хотя если бы программеры немного подумали над не техническими вещами

Это не дело программеров.

>а не о том, как выиграть 10% времени выполнения оптимизирую поиск.

Ну тогда брат твой в игры играть не сможет в принципе - они будут жрать немеряно.

jackill ★★★★★
()
Ответ на: комментарий от jackill

>Теперь a2 запускается, показывает окно и падает. Это из-за чего?

А че написано в консолях и логах?

r ★★★★★
()
Ответ на: комментарий от binr

>В Линуксе тормозит больше чем в винде, мне кажется из-за качества дравов для видюхи.

А почему Дум 3 не тормозит?

Дравов... Япона мать. Дров, тогда уж, раз сленг используешь.

jackill ★★★★★
()
Ответ на: комментарий от r

>C++ программисты, чем дальше тем больше нерыночны

Из твоих слов проистекает, что пых-пых-кодеры - наиболее востребованные "специалисты". Следует утверждать, что всем нужно бегом учить пхп?

>Под MS все их вытесняет C#

Пару лет назад было Делфи. Ну и где оно сейчас? Придумают новую технологию быстрого быдлокодерства, передут на нее. Что из этого следует?

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.