Оберон-клуб «ВЄДАsoft»

Твердыня модульных языков
Текущее время: 02 дек 2020, 07:38

Часовой пояс: UTC + 2 часа




Начать новую тему Ответить на тему  [ Сообщений: 13 ]  На страницу 1, 2  След.
Автор Сообщение
СообщениеДобавлено: 21 ноя 2013, 09:03 
Не в сети
Аватара пользователя

Сообщения: 1000
Откуда: Днепропетровская обл.
Более десяти лет назад известную в среде оберонщиков и в академических кругах, с чем я нас, господа, и поздравляю. Ещё одна здравая идея наконец-то понята мэйнстримом (и будет им использована в светлых целях наживы. :D ), и хоть бы не испохабили (Java — плохой Оберон). А мне это особенно приятно, т.к. я никогда не был сторонником виртуальных машин и JIT-компиляции и удивлялся ажиотажу вокруг всего этого.

http://habrahabr.ru/post/201346/

Если кто не в курсе, об этом можно прочесть в работах Михаэля Франца.



Вернуться к началу
 Профиль  
Ответить с цитатой  
СообщениеДобавлено: 21 ноя 2013, 10:50 
Не в сети

Сообщения: 53
Откуда: Россия, Самара
Опять костыли. Не проще ли задействовать opengl, то есть аппаратное ускорение графики. Написать грамотно, то есть не анимировать, не отрисовывать, то, что не видно пользователю.

Под андроид перенесли игру Call of Duty, а у них видите ли кнопки тормозят. Доколе!


Вернуться к началу
 Профиль  
Ответить с цитатой  
СообщениеДобавлено: 21 ноя 2013, 11:06 
Не в сети

Сообщения: 204
Вообще-то Google в своей новой версии Андроида собирается ввести статическую кодогенерацию (ART) вместо текущей динамической (Dalvik).
Динамическая кодогенерация тормозная, в отличие от статической.

Этот Google ART по сути является аналогом утилиты ngen.exe из майкрософтского .NET Framework, которому уже больше 10 лет...


Вернуться к началу
 Профиль  
Ответить с цитатой  
СообщениеДобавлено: 21 ноя 2013, 11:08 
Не в сети

Сообщения: 204
Jordan писал(а):
Опять костыли. Не проще ли задействовать opengl, то есть аппаратное ускорение графики. Написать грамотно, то есть не анимировать, не отрисовывать, то, что не видно пользователю.

Под андроид перенесли игру Call of Duty, а у них видите ли кнопки тормозят. Доколе!


При чём тут OpenGL-то? о_О
Тормоза возникают не из-за прорисовки, а из-за генерации кода при запуске программ...


Вернуться к началу
 Профиль  
Ответить с цитатой  
СообщениеДобавлено: 21 ноя 2013, 16:18 
Не в сети

Сообщения: 53
Откуда: Россия, Самара
geniepro писал(а):
Jordan писал(а):
Опять костыли. Не проще ли задействовать opengl, то есть аппаратное ускорение графики. Написать грамотно, то есть не анимировать, не отрисовывать, то, что не видно пользователю.

Под андроид перенесли игру Call of Duty, а у них видите ли кнопки тормозят. Доколе!


При чём тут OpenGL-то? о_О
Тормоза возникают не из-за прорисовки, а из-за генерации кода при запуске программ...


Поторопился с ответом. Прочитал статью наискось.


Вернуться к началу
 Профиль  
Ответить с цитатой  
СообщениеДобавлено: 21 ноя 2013, 19:33 
Не в сети
Аватара пользователя

Сообщения: 1000
Откуда: Днепропетровская обл.
geniepro писал(а):
Вообще-то Google в своей новой версии Андроида собирается ввести статическую кодогенерацию (ART) вместо текущей динамической (Dalvik).
Динамическая кодогенерация тормозная, в отличие от статической.
Почитай про кодогенерирующие загрузчики. У Франца под термином "динамическая кодогенерация" понимается то, что ты почему-то называешь статической.


Вернуться к началу
 Профиль  
Ответить с цитатой  
СообщениеДобавлено: 21 ноя 2013, 19:59 
Не в сети

Сообщения: 204
Zorko писал(а):
geniepro писал(а):
Вообще-то Google в своей новой версии Андроида собирается ввести статическую кодогенерацию (ART) вместо текущей динамической (Dalvik).
Динамическая кодогенерация тормозная, в отличие от статической.

Почитай про кодогенерирующие загрузчики. У Франца под термином "динамическая кодогенерация" понимается то, что ты почему-то называешь статической.


Да читал я про кодогенерацию Франца -- это типичный JIT-транслятор, который в андроиде есть давно -- Dalvik.

А этот ART -- это уже не JIT-транслятор, который динамически генерирует машинный код при старте программы, а статический компилятор AOT, который генерирует машинный код при установке программы (в андроиде при установке, в .NET в любой момент по команде пользователя).


Вернуться к началу
 Профиль  
Ответить с цитатой  
СообщениеДобавлено: 21 ноя 2013, 20:11 
Не в сети
Аватара пользователя

Сообщения: 1000
Откуда: Днепропетровская обл.
Я не согласен. JIT — это поверх виртуальной машины фрагменты байт-кода на лету заменяются на машинные команды. Это JVM и Dalvik.

А у Франца — в момент загрузки программы (с диска или сети в память) плоский бинарник (slim binary) на лету транслируется в машинный код. В момент загрузки, понимаешь? А не исполнения. Видимо, ты невнимательно читал.


Вернуться к началу
 Профиль  
Ответить с цитатой  
СообщениеДобавлено: 21 ноя 2013, 20:57 
Не в сети

Сообщения: 204
Zorko писал(а):
Я не согласен. JIT — это поверх виртуальной машины фрагменты байт-кода на лету заменяются на машинные команды. Это JVM и Dalvik.

А у Франца — в момент загрузки программы (с диска или сети в память) плоский бинарник (slim binary) на лету транслируется в машинный код. В момент загрузки, понимаешь? А не исполнения. Видимо, ты невнимательно читал.

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


Вернуться к началу
 Профиль  
Ответить с цитатой  
СообщениеДобавлено: 22 ноя 2013, 08:25 
Не в сети
Аватара пользователя

Сообщения: 1000
Откуда: Днепропетровская обл.
Не-а, отличие всё-таки принципиальное. Мне кажется, Францем предложен более совершенный способ трансляции, который решает, в основном, все проблемы, присущие VM. Перечислю их вкратце.

    1. Более экономичное использование памяти (нету VM).

    2. Slim binaries имеют качественно мощное представление промежуточного кода в виде двоичных деревьев, что гораздо лучше стекового байт-кода при генерации кода для регистровых архитектур (каковыми является подавляющее большинство процессоров), достаточное для дальнейшей оптимизации или даже перетрансляции в другой ЯП. Также эти бинарники очень компактны, значительно компактнее любого машинного кода или стекового байт-кода (надеюсь, у гугля хватит ума передрать и древовидное представление. Без него, блин, уже слегка не та будет петрушка).

    3. Кодогенерирующий загрузчик может на лету оптимизировать код для установленного процессора. Т.е. одна программа на Slim Binaries будет оттранслирована максимально эффективно в код i386, и также в код PIII с архитектурой IA64. Это всё достигается и с помощью JIT-компиляции (в .NET и JVM), но значительно более дорогой ценой. Высокие показатели оптимальности кода на тестовых испытаниях оборачиваются на практике реальнейшим кошмаром. VM жрут сотни мегабайт памяти оверхеда по сравнению с нативом, а софт неслабо тормозит, в сравнении с аналогичным, но статически слинкованным в натив. Если бы не было современных процессоров, он бы вообще не работал. Но если для десктопов это ещё как-то терпят (ибо высокий штандарт давно и накрепко задан мелким и мягким большим сэмом), то на планшетах у них, видать, тормозит. Меня ещё тогда порадовало, что Dalvik регистровый. Ведь ежу понятно, что стековая VM ещё тормознее, и не только на процессорах архитектуры ARM.

Никак не могу углубленно прокомментировать это, но у меня подход с VM вызвал отторжение с того самого дня, как я о нём узнал. И нынче приемлю их только в эмуляторах других платформ. Там это неизбежность. А вот подход Франца сразу же поразил в плане совершенства. И я рассказывал о нём мэйнстримщикам, самые умные из которых сказали: "ну подождём, что из этого выйдет".

Не будем увязать в терминологии: "статическая" или "динамическая" кодогенерация достигнута у Франца, но, похоже, что и такая, и такая, ибо в фазе "статической" (в твоей терминологии) кодогенерирующий загрузчик порождает натив из плоского бинарника в момент загрузки, и не нужно уводить нас в сторону тем, что, дескать, слим берётся не из файла. Неважно откуда. Хоть из сети. А в "динамической" (в твоей терминологии) фазе дооптимизация достижима и на лету (а вот это уже способ, реализованный в JIT-компиляторах, но серьёзно облагороженный Францем, что хорошо описано в статьях по ссылкам выше). И никакого тяжёлого наследия в виде VM, которые несомненно уйдут в прошлое, как когда-то пи-код, с развитием подхода кодогенерирующих загрузчиков.


Вернуться к началу
 Профиль  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 13 ]  На страницу 1, 2  След.

Часовой пояс: UTC + 2 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Создано на основе phpBB® Forum Software © phpBB Group
© VEDAsoft Oberon Club