The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Первый выпуск RoboVM, компилятора байткода Java в машинный код, opennews (??), 24-Янв-13, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


18. "Первый выпуск RoboVM, компилятора байткода Java в машинный к..."  +2 +/
Сообщение от Аноним (-), 24-Янв-13, 23:13 
> Только не следует ожидать, что это будет работать быстрее, чем JIT. Сильная
> сторона Java (HotSpot VM) — динамические оптимизации, зависящие от поведения программы
> во время выполнения

Как показывает практика, никакой магии там нет - java почти всегда проигрывает нативному коду. Фанбои жавы ой как любям всюду тыкать вот этим:

> Например, HotSpot может связать напрямую или даже встроить вызов виртуального метода

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

Ответить | Правка | К родителю #7 | Наверх | Cообщить модератору

27. "Первый выпуск RoboVM, компилятора байткода Java в машинный к..."  +/
Сообщение от Tav (ok), 24-Янв-13, 23:39 
Магия начинается, когда вы пишите какую-то вычислительную функцию, использующую, например, геометрические абстракции из java.awt.geom и не беспокоитесь о том, что создаете много локальных объектов и используете позднее связывание, поскольку JIT разберет объекты в стек и встроит их методы, превратив полиморфный код, написанный в терминах точек, прямоугольников и т. п. в примитивную арифметику. Т. е., можно спокойно сосредоточиться на алгоритме и на ясности кода.

> зато лишний расход CPU в рантайме, вместо однократного при сборке как в нормальных языках.

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

Ответить | Правка | Наверх | Cообщить модератору

43. "Первый выпуск RoboVM, компилятора байткода Java в машинный к..."  +/
Сообщение от ананим (?), 25-Янв-13, 01:35 
>Магия начинается, когда вы пишите какую-то вычислительную функцию, использующую, например, геометрические абстракции из java.awt.geom и не беспокоитесь о том, что создаете много локальных объектов и используете позднее связывание, поскольку JIT разберет объекты в стек и встроит их методы, превратив полиморфный код, написанный в терминах точек, прямоугольников и т. п. в примитивную арифметику. Т. е., можно спокойно сосредоточиться на алгоритме и на ясности кода.

это идиотизм.
и начинается он тогда, когда кто-то на тематическом форуме пишет это и думает что я буду рад использовать тормоза его программы каждый раз, когда JIT разбирает его объекты на моих вычислительных системах только потому, что ему не хотелось думать.

Ответить | Правка | Наверх | Cообщить модератору

46. "Первый выпуск RoboVM, компилятора байткода Java в машинный к..."  +/
Сообщение от Tav (ok), 25-Янв-13, 01:51 
Во-первых, я уже написал, что это проблема для десктопных приложений, но не проблема на серверах, где JVM довольно успешно используется. Во-вторых, время программиста дороже. В-третьих, не "не хотелось думать", а хотелось больше думать об алгоритмической корректности кода и меньше отвлекаться на рутинные технические детали.
Ответить | Правка | Наверх | Cообщить модератору

47. "Первый выпуск RoboVM, компилятора байткода Java в машинный к..."  +/
Сообщение от ананим (?), 25-Янв-13, 02:12 
всё это глупость чистой воды.
это на вашу подготовку как жабиста было затрачено меньше средств, это да.
а вот процесс реализации алгоритмов что в С++, что в java одинаков. при условии что вы владеете знаниями этих языков одинаково.
уменьшение расходов на подготовку и распространение ПО — вот всё что бралось в расчёт при проектировании подобных систем.

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

на серверах ещё и не такой крап увидишь… особенно в застенках ынтырпрайза.
что абсолютно не делает из халтуры что-то более ценное.

Ответить | Правка | Наверх | Cообщить модератору

49. "Первый выпуск RoboVM, компилятора байткода Java в машинный к..."  –1 +/
Сообщение от Tav (ok), 25-Янв-13, 02:35 
Не соглашусь. Я не "жабист", я просто знаю преимущества и недостатки технологии и имею какие-то представления о принципах работы JVM.

А разработка одного и того же на (говоря только об объектно-ориентированных языках) C++, Java или на чем-то уровня Smalltalk (например, Ruby) — разное дело. Конечно, если речь идет о сортировке целых чисел, разницы не будет. Но если разрабатываемая программа предполагает различные уровни абстракции, разница становится существенной. Вообще, способность выражать абстракции — очень важное качество языка.

Ответить | Правка | Наверх | Cообщить модератору

53. "Первый выпуск RoboVM, компилятора байткода Java в машинный к..."  +1 +/
Сообщение от ананим (?), 25-Янв-13, 03:52 
>Не соглашусь.

как будет угодно.
>Я не "жабист", я просто знаю преимущества и недостатки технологии и имею какие-то представления о принципах работы JVM.

вы не можете знать преимущества и недостатки не имея более-менее полных системных знаний.
это видно по вашим ответам. вы ни разу не видели как именно логика вашего приложения проецируется в машинное представление.
да вы даже не в курсе выше были vtable и принципов её формирования
(дам пруф на базовые знания ещё раз http://www.intuit.ru/department/pl/plintro/12/2.html
На этапе компиляции строится таблица виртуальных методов, а конкретный адрес проставляется уже на этапе выполнения.)
а когда я завёл речь, что при помощи шаблонов можно отказаться от vtable и её оверхеда, при этом оставив и функциональность, и уменьшив размер кода, вы вообще не поняли о чём речь.

Ответить | Правка | Наверх | Cообщить модератору

73. "Первый выпуск RoboVM, компилятора байткода Java в машинный к..."  +/
Сообщение от другой аноним (?), 25-Янв-13, 12:58 
> На этапе компиляции строится таблица виртуальных методов,
> а конкретный адрес проставляется уже на этапе выполнения.)

Там плохо и упрощенно описано. Адрес не "не проставляется уже на этапе выполнения". Там сложнее. В википедии лучше описано:
"... Для каждого класса, имеющего хотя бы один виртуальный метод, создаётся таблица виртуальных методов. Каждый объект хранит указатель на таблицу своего класса. Для вызова виртуального метода используется такой механизм: из объекта берётся указатель на соответствующую таблицу виртуальных методов, а из неё, по фиксированному смещению, — указатель на реализацию метода, используемого для данного класса. При использовании множественного наследования или интерфейсов ситуация несколько усложняется за счёт того, что таблица виртуальных методов становится нелинейной..."
а в большинстве случаев и используются всякие интерфейсы. Так что все еще усложняется и я не удивлюсь если Вы не поймете, что могут существовать такие методы и приемы оптимизации, которые можно провести только анализируя непосредственное исполнение программы и которые невозможно вычислить на этапе обычной компиляции.

Ответить | Правка | Наверх | Cообщить модератору

75. "Первый выпуск RoboVM, компилятора байткода Java в машинный к..."  +1 +/
Сообщение от ананим (?), 25-Янв-13, 13:13 
>Так что все еще усложняется и я не удивлюсь если Вы не поймете, что могут существовать такие методы и приемы оптимизации, которые

которые начинают вызывать те методы, которые вам не требуются? :D

я как раз очень много этим занимался.
более того как раз по-этой причине и привёл (народ вообще не понял о чём речь :D) выше одну из методик (множественное наследование плюс шаблоны классов), которые позволяют уменьшить vtables или отказаться от них полностью.

запомните, нет никакой оптимизации в процессе позднего связывания. этот вид шаманства придумали неучи. есть только выбор необходимого (и достаточного) типа/объекта.
если этот процесс нуждается в оптимизации в жабе, то это только говорит о саксбайдезигн и не более.

Ответить | Правка | Наверх | Cообщить модератору

98. "Первый выпуск RoboVM, компилятора байткода Java в машинный к..."  –1 +/
Сообщение от mahairod (ok), 25-Янв-13, 23:35 
"нет никакой оптимизации в процессе позднего связывания" - расскажите это разработчикам Явы и процессоров Itanium & Elbrus. Думаю, они вправят вам мозги, уж они то всяко лучше вас разбираются и в Яве и в плюсах
Ответить | Правка | Наверх | Cообщить модератору

81. "Первый выпуск RoboVM, компилятора байткода Java в машинный к..."  +/
Сообщение от Crazy Alex (ok), 25-Янв-13, 15:25 
Вы, конечно, извините, но какие в джаве свойства выражать абстракции, которых нет в плюсах? Насколько я помню, там как раз наоборот - длинные многословные вызовы, явно описывающие всё в делалях. Это на плюсах можно библиотекой паттерн-матчинг сделать :-)
Ответить | Правка | К родителю #49 | Наверх | Cообщить модератору

88. "Первый выпуск RoboVM, компилятора байткода Java в машинный к..."  –1 +/
Сообщение от iZEN (ok), 25-Янв-13, 16:51 
> Вы, конечно, извините, но какие в джаве свойства выражать абстракции, которых нет
> в плюсах? Насколько я помню, там как раз наоборот - длинные
> многословные вызовы, явно описывающие всё в делалях. Это на плюсах можно
> библиотекой паттерн-матчинг сделать :-)

Например, в Java есть дженерики (generics, настраиваемые типы), которые не есть шаблоны (как в C++), обеспечивают то же самое "обобщённое программирование" плюс ещё проверку на типовую безопасность (type safety) на стадии компиляции.


Ответить | Правка | Наверх | Cообщить модератору

61. "Первый выпуск RoboVM, компилятора байткода Java в машинный к..."  –2 +/
Сообщение от iZEN (ok), 25-Янв-13, 07:44 
> всё это глупость чистой воды.
> это на вашу подготовку как жабиста было затрачено меньше средств, это да.
> а вот процесс реализации алгоритмов что в С++, что в java одинаков.
> при условии что вы владеете знаниями этих языков одинаково.
> уменьшение расходов на подготовку и распространение ПО — вот всё что бралось
> в расчёт при проектировании подобных систем.

Вы не считаете затрат на компилирование проекта на C++ и Java. Для Java компиляция будет в несколько раз быстрее, программист получит результат быстрее, сможет отлаживать, исправлять код быстрее. Достаточно сравнить время компиляции таких равноценных по объёму строк исходных текстов проектов, как OpenOffice и Eclipse Classic, чтобы заплакать от горя, почему OOo такой монстр.

> что абсолютно не делает из халтуры что-то более ценное.

Пока что на C++ лучше, чем на Java, не написали то, что требуется бизнесу.


Ответить | Правка | К родителю #47 | Наверх | Cообщить модератору

71. "Первый выпуск RoboVM, компилятора байткода Java в машинный к..."  +/
Сообщение от ананим (?), 25-Янв-13, 10:35 
извини айзен, но после вот этого http://www.opennet.ru/openforum/vsluhforumID3/88358.html#59 — практически признания тобой своего невежества, я даже нихочу тратить на твои рекламные лозунги своё время.
Ответить | Правка | Наверх | Cообщить модератору

86. "Первый выпуск RoboVM, компилятора байткода Java в машинный к..."  –1 +/
Сообщение от iZEN (ok), 25-Янв-13, 16:38 
> извини айзен, но после вот этого http://www.opennet.ru/openforum/vsluhforumID3/88358.html#59
> — практически признания тобой своего невежества, я даже нихочу тратить на
> твои рекламные лозунги своё время.

Новых знаний в C++ нету. Рекламными лозунгами не разбрасываюсь.


Ответить | Правка | Наверх | Cообщить модератору

74. "Первый выпуск RoboVM, компилятора байткода Java в машинный к..."  +/
Сообщение от Nimo (?), 25-Янв-13, 13:08 
Смешно читать про то как какой то студент хочет чтоб ему на яве чет там написали нетормозное, хотя сам только что еле выбрался из главы про сортировки. Ему бы рассказать про распределенные гриды на яве и почему большая проблема сделать это на плюсах, но даю 100% что этот студент даже поленится глянуть в гугле что это такое - он же уже все знает, а "профессор лопух"
Ответить | Правка | К родителю #43 | Наверх | Cообщить модератору

76. "Первый выпуск RoboVM, компилятора байткода Java в машинный к..."  –1 +/
Сообщение от ананим (?), 25-Янв-13, 13:30 
набор ничего не значащих терминов, начитавшегося сми школьника.
хорошо что вы не были моим студентом, никогда бы не доучились.


зыж
>Ему бы рассказать про распределенные гриды на яве и почему большая проблема сделать это на плюсах, но даю 100% что этот студент даже поленится глянуть в гугле что это такое - он же уже все знает, а "профессор лопух"

BIONIC это расскажите https://boinc.berkeley.edu/trac/wiki/DevProjects
перед потерей лица и своих 100%.

Ответить | Правка | Наверх | Cообщить модератору

96. "Первый выпуск RoboVM, компилятора байткода Java в машинный к..."  –1 +/
Сообщение от Nimo (?), 25-Янв-13, 19:04 
набор ничего не значащих терминов :) - я рад что учился не у Вас

может ваши студенты напишут на ++ что нибудь типа http://www.oracle.com/technetwork/middleware/coherence/overv... ?
или http://www.slideshare.net/buzdin/gemfire-in-memory-data-grid ?

тогда возможно я озабочусь Биоником ;)

Ответить | Правка | Наверх | Cообщить модератору

55. "Первый выпуск RoboVM, компилятора байткода Java в машинный к..."  +1 +/
Сообщение от Аноним (-), 25-Янв-13, 05:26 
> Магия начинается ... поскольку JIT разберет объекты в стек и встроит их методы

Смешно, как вы даже не оптимизации, а стандартное поведение компилятора C/C++ считаете магией. Я в свое время переписывал модули для одной GIS с жавы на C++ - там этой геометрии завались было. Получил прирост 3.5x на ровном месте, такие дела.

> Это мешает для часто запускаемых и относительно недолго работающих
> приложений, но совершенно не является проблемой на серверах.

Для идиотов никакие генетические проблемы платформы не являются проблемой. Для решения задачи нужно 10 серверов вместо двух? Пожалуйста, главное что мы наслушались какая жава ынтерпрайз. Студенты на плюсах пишут более эффективные приложения и быстрее, чем бородатые дядьки с кучей сертификатов на жаве, пытаясь обогнуть все ее косяки и тормоза? Да не может быть, нам же сказали что java экономит время программистов.

Ответить | Правка | К родителю #27 | Наверх | Cообщить модератору

62. "Первый выпуск RoboVM, компилятора байткода Java в машинный к..."  –2 +/
Сообщение от iZEN (ok), 25-Янв-13, 07:50 
>> Магия начинается ... поскольку JIT разберет объекты в стек и встроит их методы
> Смешно, как вы даже не оптимизации, а стандартное поведение компилятора C/C++ считаете
> магией. Я в свое время переписывал модули для одной GIS с
> жавы на C++ - там этой геометрии завались было. Получил прирост
> 3.5x на ровном месте, такие дела.

Простой компиляцией в нэйтив?

Ответить | Правка | Наверх | Cообщить модератору

103. "Первый выпуск RoboVM, компилятора байткода Java в машинный к..."  +/
Сообщение от Tav (ok), 27-Янв-13, 01:21 
Вы не понимаете, что такое позднее связывание? Если на этапе компиляции не известно, какая именно реализация абстрактного метода может быть вызвана, компилятор C++ не сможет этот вызов соптимизировать и тем более встроить. В примере с функцией, выполняющей высисления с абстрактными геометрическими объектаими, конкретные типы этих объектов могут быть определены клиентским кодом и могут быть известны только во время выполнения.
Ответить | Правка | К родителю #55 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру