Форум программистов, компьютерный форум, киберфорум
Java
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.64/22: Рейтинг темы: голосов - 22, средняя оценка - 4.64
 Аватар для mutagen
2587 / 2260 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18

Для тех кто думает что ява тормозит )

20.07.2013, 02:40. Показов 4475. Ответов 33
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ребята провели сравнение скорости фреймворков,
для тех кто думает что C# удобно и быстро, посмотрите все раунды сравнения, будете приятно удивлены )))
http://www.techempower.com/blo... s-round-2/
1
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
20.07.2013, 02:40
Ответы с готовыми решениями:

Загадка по условию if (для новичков, кто думает, что понимает if)
Почему ответ кааждый раз меняется от перестановки ответов if ? a) let size = 8; let str = ''; for (let i = 0; i <...

Кто что думает?
Добрый день. Хотел бы узнать мнение "Программистов" Кто как думает, сколько лет ещё будут востребованы "Программисты"? Мне...

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

33
Эксперт Java
 Аватар для turbanoff
4094 / 3828 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 12
22.07.2013, 22:27
Студворк — интернет-сервис помощи студентам
diagon, 2 и 3 аргументы выдуманы. Вы слишком недооцениваете современные JVM.

Не по теме:

Доклад по теме - http://www.youtube.com/watch?v=oYu3HuIYDhI

1
127 / 131 / 11
Регистрация: 25.12.2011
Сообщений: 443
22.07.2013, 22:45
Цитата Сообщение от diagon Посмотреть сообщение
.net'овский байткод обязан компилироваться в нейтив, и только затем он может быть выполнен. Джава же живет в своем виртуальном мирке, делает много тяжелых проверок на безопасность кода
Для бенчмарков JVM запускают с опцией -server, когда код сразу компилируется в нативный. Также производительность меряют на "прогретом" состоянии, когда JIT уже вообще не вмешивается в вычисления.

Цитата Сообщение от diagon Посмотреть сообщение
Все методы виртуальны по умолчанию. Это медленно само по себе, да еще и мешает оптимизациям вроде инлайнинга.
Это вообще не по делу, т.к. JVM абсолютно точно знает про все загруженные классы и если виртуальный по умолчанию метод нигде не переопределен, то все может заинлайнить без проблем. Также в специальных случаях, когда переопределений для виртуальной функции очень мало, может генерироваться код с проверкой класса и ветвлениями, который также может быть заинлайнен. Кроме того, при загрузке новых классов, переопределяющих виртуальную функию, будет происходить деоптимизация и нативный код будет перегенерирован.

Также есть escape analysis, когда при инлайнинге анализируется возможность выхода ссылки за пределы текущей области, и в некоторых случаях это позволяет избежать аллокации объектов в куче. Не все так плохо, но с value-типами и generics явный косяк получается...
0
Эксперт Java
 Аватар для turbanoff
4094 / 3828 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 12
22.07.2013, 23:28
Цитата Сообщение от kamre Посмотреть сообщение
Для бенчмарков JVM запускают с опцией -server, когда код сразу компилируется в нативный.
Вы путаете. -server даже наоборот, увеличивает количество циклов выполнения на прогрев, после которых происходит компиляция в native.
0
 Аватар для mutagen
2587 / 2260 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
22.07.2013, 23:42  [ТС]
diagon, кроме прожорливости по памяти, все утверждения неверны, да и память может быть оптимизирована использованием сторонних коллекций. По поводу женериков вообще нет проблем, так как они существуют только на этапе компиляции, далее в JVM всё стирается и приводится к Object и нет никакой проверки типов. Тормоза могут быть - но только по вине рефлекшена, но это скорее проблема проектирования приложения чем проблема платформы, ну и как вы знаете на 5% батлнеков всегда есть JNI который успешно выводит JVM на 1 уровнь с компилируемыми языками.

удобства/сахар - понятие субьективное, в 8ке вон будут лямбды, но мне кажется это всё от лукавого, так как тем кому надо язык с сахаром больше чем у C# уже давно и успешно ушли на скалу (на ней вообще можно динамически написать свой язык и им потом пользоваться). Генерация байткода у 2.10 версии по оптимизации не уступает javac, в языке примитивов нет вообще, при компиляции всё трансформируется в примитивы по возможности, чем очень ускоряется и при этом остаются все плюсы от java, так как можно юзать либки уже скомпиленые для java. В общем если рассматривать 2 платформы NET и JVM, то ещё неизвестно какая реально прогрессивнее.
0
Higher
 Аватар для diagon
1953 / 1219 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
23.07.2013, 00:35
Цитата Сообщение от kamre Посмотреть сообщение
деоптимизация и нативный код будет перегенерирован
Забавно. Окей, если эти деоптимизации действительно существуют, то к тотальной виртуальности претензий нет.

Цитата Сообщение от kamre Посмотреть сообщение
Для бенчмарков JVM запускают с опцией -server, когда код сразу компилируется в нативный
Для дотнета есть NGEN, он, в принципе, то же самое делает. Но, все-таки, компиляция в нейтив не всегда приемлема, особенно в случае с джавой, одной из главных киллер-фич которой является кроссплатформенность (на джаве же вроде бы не только сервера пишут?). Утверждалось отставание именно в выполнении байт-кода.
Цитата Сообщение от mutagen Посмотреть сообщение
далее в JVM всё стирается и приводится к Object и нет никакой проверки типов
Речь шла не о самих генериках, а о их взаимодействии с примитивными типами. Приходится использовать обертки, каждая из которых считается полноценным объектом с точки зрения GC, да еще и боксится/анбоксится зачем-то.
Цитата Сообщение от mutagen Посмотреть сообщение
есть JNI
Для дотнета есть PInvoke/CLI (иногда можно и unsafe кодом обойтись), но они годны только для оптимизации какого-то специфичного метода. Если приложение жирное и тормозит само по себе, то нейтив тут не поможет.

Цитата Сообщение от mutagen Посмотреть сообщение
скалу
Для дотнета есть F#, но, как и scala, это все же не энтерпрайзный язык - слишком мало людей им владеют.
0
 Аватар для mutagen
2587 / 2260 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
23.07.2013, 00:56  [ТС]
Цитата Сообщение от diagon Посмотреть сообщение
Но, все-таки, компиляция в нейтив не всегда приемлема,
мне кажется вы не разобрались в вопросе JIT, он включается тогда когда вы уже на какой либо платформе и вот тогда JVM по мере разогрева (сбора статистики) компилит самые частые вызовы в нативку и делает их JNI подобными (по утверждениям метров от JVM строительства на сегодняшний день максимально использовать векторизацию интел камня может только компилятор от intel и JIT в JVM) и в принципе даже нет необходимости в ручном JNI
поэтому она всегда приемлема и во всех апп серверах она есть, многие после запуска даже делают стресс тест для разогрева, чтобы JVM вышла на рабочий режим

по поводу боксинга, да верно это узкое место, но на васоконагруженных точках работающих с примитивными типами, никто и не думает использовать коллекции, там пишутся алгоритмы на базе массивов, но правда в том, что эти случае в жизни довольно редки, и делать на это упор - утверждая что это тормозит всю платформу в целом - неверно.
0
127 / 131 / 11
Регистрация: 25.12.2011
Сообщений: 443
23.07.2013, 01:07
Цитата Сообщение от turbanoff Посмотреть сообщение
Вы путаете. -server даже наоборот, увеличивает количество циклов выполнения на прогрев, после которых происходит компиляция в native.
Да, перепутал... Эту опцию для более агрессивных оптимизаций включают. А для более быстрого "прогрева" есть отдельные опции.
0
Higher
 Аватар для diagon
1953 / 1219 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
23.07.2013, 01:48
Цитата Сообщение от mutagen Посмотреть сообщение
компилит самые частые вызовы в нативку и делает их JNI подобными
Дотнетовский джит работает по другому принципу - он особо не собирает статистику и просто молча все компилирует в нейтив, причем не более одного раза. За счет этого джит от дотнета быстрее. Вот касательно качества генерируемого кода - не совсем понятно, как накапливаемая статистика может помочь его оптимизировать. Что касается векторизации - виртуальная машина и без всякой статистики знает, на каком компьютере она находится. Однако, я как-то не верю, что java-jit умеет векторизацию - ведь для нее надо либо узнавать нужную информацию на этапе компиляции и забивать ее в байткод (но, насколько я знаю, этого не происходит), либо таки использовать накопленную статистику чтобы определить эффективность векторизации, но для этого потребуется накапливать действительно много статистики (не думаю, что джит может себе это позволить). Окей, предположим, что все-таки используется рантаймовая статистика, корректно распознаются и оптимизируются циклы. На это уходит немало рантаймового времени. Вопрос - зачем? Векторизация обычно дает выигрыш в достаточно специфичных случаях, и если она действительно нужна, то проще отпрофилировать и использовать JNI. На мой первый взгляд это просто жалкая попытка избавится от нативных оптимизаций и пустая трата рантаймового времени. Впрочем, меня это заинтересовало, попробую погонять бенчмарки на досуге.

поэтому она всегда приемлема и во всех апп серверах она есть
Но, повторюсь, джава ведь не только для разработки серверов используется? Впрочем, видимо, в основном именно для этого, тогда все эти динамические оптимизации приобретают смысл. Дотнет же не сконцентрирован на серверах и ему это не нужно.

а так как по утверждениям метров от JVM строительства на сегодняшний день максимально использовать векторизацию интел камня может только компилятор от intel и JIT в JVM
А можно пруф? Просто я знаю как минимум 2 плюсовых компилятора (один из них, кстати, компилирует в свой байткод), которые обходят интеловский компилятор в некоторых кейсах.
0
 Аватар для mutagen
2587 / 2260 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
23.07.2013, 02:13  [ТС]
Цитата Сообщение от diagon Посмотреть сообщение
А можно пруф?
не уверен что в этом посте и каментах много, но чесслово больше лень искать
http://elizarov.livejournal.com/23698.html
а тут можно зарыться вглубь http://people.apache.org/~xli/... zation.pdf
старовато но факт
0
Эксперт Java
 Аватар для turbanoff
4094 / 3828 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 12
23.07.2013, 08:24
diagon, почему-то вы упомянули только векторизацию. Наверно потому что, это основное средство оптимизации native/AOT компиляторов?
У JVM есть намного больше данных, и доступ к оптимизациями прямо в рантайте, что не доступно для других компиляторов.

Вообще-то этот спор .net vs java довольно странен, учитывая свободу которую дает стандарт для реализации JVM, который даже позволяет компилировать код в натив(Excelsior JET) или использовать AOT + JIT(JRockit).
0
Higher
 Аватар для diagon
1953 / 1219 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
23.07.2013, 14:07
Цитата Сообщение от turbanoff Посмотреть сообщение
почему-то вы упомянули только векторизацию
Например потому, что дотнет ее не умеет. Моно вроде умеет, но она там не автоматическая (т.е. приходится ручками хардкодить нужные инструкции). Ну и это таки вполне ощутимая оптимизация.
Цитата Сообщение от turbanoff Посмотреть сообщение
У JVM есть намного больше данных, и доступ к оптимизациями прямо в рантайте, что не доступно для других компиляторов.
Ну вот мне и интересно, что это за "рантаймовые" оптимизации. Насколько я понял, это что-то вроде profile-driven оптимизаций, только профилятор при этом работает не перед компиляцией, а прямо в рантайме. Ну и опять же много информации в рантайме не соберешь - плюсовые программы замедляются иногда в несколько раз при включенном профилировании, для рантайма это неприемлемо.

Как-нибудь попробую переписать это на джаву, чтобы проверить векторизацию.
0
 Аватар для mutagen
2587 / 2260 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
23.07.2013, 14:10  [ТС]
Цитата Сообщение от diagon Посмотреть сообщение
Как-нибудь попробую переписать это на джаву, чтобы проверить векторизацию.
главное перед замерами погонять этот же код сотню тыщ раз при запуске с java -server и потом уже выполнять замеры (при этом не стоит форсить JVM на более скорый JIT, надо дать собрать статистику)
0
Эксперт Java
 Аватар для turbanoff
4094 / 3828 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 12
23.07.2013, 14:40
Цитата Сообщение от diagon Посмотреть сообщение
Ну вот мне и интересно, что это за "рантаймовые" оптимизации.
Вот, вроде нашел список - https://wikis.oracle.com/displ... acticIndex

Добавлено через 2 минуты
Цитата Сообщение от diagon Посмотреть сообщение
плюсовые программы замедляются иногда в несколько раз при включенном профилировании
Так нативные профайлеры вынуждены подстраиваться под железо/ОС. Они не могут, как JVM, при загрузке класса встроить некоторые инструкции прямо в код.
0
 Аватар для animator404
99 / 99 / 12
Регистрация: 05.05.2013
Сообщений: 1,208
24.07.2013, 21:59
из Википедии, можете не верить
Миниатюры
Для тех кто думает что ява тормозит )  
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
24.07.2013, 21:59

Кто что думает о Z-Wave
Народ, работал ли кто-нибудь с чипами или модулями? Как вообще, удобно ли на них разрабатывать? Что вплане документации, супорта? Какие...

ДДР4, кто что думает? (Обсуждение)
Вот интересно, когда это чудо на свет появится? :)

Кто что думает про вирусы.
Народ хотелось бы услышать ваше мнение по поводу новомодных (так сказать) вирусах, записывающихся в BIOS, есть ли у них хоть какой нибудь...

Кто что думает по поводу этого?
Специально в Яндексе написал запросик и как я ожидал выдал вот такое: Дурацкая обдуваловка для тех кому лень прокрутить до конца...

Кто, что думает насчёт бана за обмен
Натолкнулся на форуме searchengines на следующую статью: http://forum.searchengines.ru/showthread.php?t=34249 Обсуждение темы...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
34
Ответ Создать тему
Новые блоги и статьи
Как замкнутый ядерный цикл решит проблему недостатки фосфора? Био миграция фосфора со дна океана
anaschu 26.06.2026
Биологический лифт: Концепция подъема фосфора со дна океана с помощью ЗЯТЦ Предлагаю на обсуждение альтернативу тяжелому промышленному бурению океанического дна. Вместо сложной инженерии мы можем. . .
сукцессия 5
anaschu 26.06.2026
ПЛАН РАЗРАБОТКИ математической модели сукцессии микоризных систем Переход AM → EcM (Endo + ErM) · Шумилов А. С. · ИФХиБПП РАН · Пущино · 2026 . . .
сукцессия 4
anaschu 25.06.2026
Более детализированный план разработки План доработки модели динамики микоризных симбиозов (EcM с гистерезисом) Цель: Реализовать логику переключения между эрикоидным (ErM) и эктомикоризным. . .
сукцессия 3
anaschu 25.06.2026
Примерный план работ по модели
сукцессия 2
anaschu 25.06.2026
параметризировочная калибровочная таблица будущей модели
Многофункциональное здание: как одно здание порождает конфликты требований, которые никто не планировал (мат мет мод 29)
anaschu 23.06.2026
Многофункциональное здание: как одно здание порождает конфликты требований, которые никто не планировал Материалы для обсуждения с МГСУ · 2026 Рисунки внутри приложенного ворд файла. Что за. . .
28. Конкретное развертывание плана номер 1 из поста номер 27
anaschu 22.06.2026
Можно ли из модели получить конкретные строительные требования? Честно — напрямую из текущей модели такие ответы не получить. Но цепочка логики есть, и она не такая длинная. Где разрыв . . .
27. Планы на разработку функциональных требований к строительству внутри модели пищеблока (или не только его?)
anaschu 22.06.2026
Что уже реализовано и даёт конфликты «бесплатно» Самый простой конфликт уже работает — конфликт за ресурс-работника. Заданий больше, чем доступных поваров → очередь в queue1. Это прямое отражение. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru