Сообщение Re[59]: dotnet vs java 2016-2020 от 20.10.2016 9:22
Изменено 20.10.2016 9:38 Serginio1
·>Здравствуйте, Serginio1, Вы писали:
S>>>> За счет того, что JIT не сильно оптимизирующий компилятор. Кстати в UUnity там пошли в IL2CPP
S>>·>Это потому что в dotnet плохая реализация JIT, ну не смогли. В java такой проблемы в общем случае нет.
S>>·>ART кстати тоже через С компилирует. Т.к. AOT оказалась более подходящей в условиях мобильных девайсов, т.к. там пользователям важно, чтобы приложения стартовали как можно быстрее, а не раскочегаривались. В серверных же применениях явы — JIT рулит и бибикает.
S>> Ну вот видишь уже подвижка. Согласился что нужен натив для андроида.
·>Нужен не натив как таковой, а АОТ. А вот у тебя подвижек нет, с терминами полный швах — AOT != натив. Подумай на досуге, что является результатом работы JIT?
https://ru.wikipedia.org/wiki/JIT-%D0%BA%D0%BE%D0%BC%D0%BF%D0%B8%D0%BB%D1%8F%D1%86%D0%B8%D1%8F
JIT-компиляция (англ. Just-in-time compilation, компиляция «на лету»), динамическая компиляция (англ. dynamic translation) — технология увеличения производительности программных систем, использующих байт-код, путём компиляции байт-кода в машинный код или в другой формат непосредственно во время работы программы.
https://ru.wikipedia.org/wiki/AOT-%D0%BA%D0%BE%D0%BC%D0%BF%D0%B8%D0%BB%D1%8F%D1%86%D0%B8%D1%8F
Ahead-of-Time (AOT) компилятор — это вид транслятора, который использует метод компиляции перед исполнением (англ. ahead-of-time compilation). Применяется как для компиляции высокоуровневых языков (например, Си, С++ или Паскаль), так и для компиляции «промежуточных» языков, таких как байт-код Java, .NET Common Intermediate Language (CIL), IBM System/38, IBM System i.
Во многих реализациях языков программирования используется JIT-компиляция, которая позволяет компилировать промежуточный код напрямую в бинарный во время его выполнения, что позволяет существенно увеличить скорость выполнения. JIT требует выделения дополнительной памяти.
Метод АОТ не требует выделения дополнительной памяти и АОТ-компиляция проходит с минимальной нагрузкой на систему. Процесс компиляции полностью выполняется перед выполнением программы.
S>>>> Еще раз есть кроссплатформенный .Net Core, который кстати позволяет работать только с используемыми библиотеками.
S>>>>https://habrahabr.ru/post/311520/ и не зависить от Фреймворка. Так что твои умозаключения об зависимости от фреймвока нет.
S>>·>Я запутался. Зачем и core, и native?
S>> А, то что в для .Net Native нужны библиотеки по .NetStandard
·>Понятнее не стало. Зачем две технологии? Зачем два названия?
.Net Native это технология компиляции, но для компиляции он использует библиотеки созданные по определенным стандартам
https://docs.microsoft.com/en-us/dotnet/articles/standard/library
Я кстати тебе давал уже ссылку на
https://habrahabr.ru/post/312026/
https://blogs.msdn.microsoft.com/dotnet/2016/09/26/introducing-net-standard/
S>>>> Главное скорость, расход батареи, обфускация.
S>>·>Скорость чего? Инстолляции? Кого это парит? Расход батареи тут не причём, т.к. ART компилирует только в install time (времени расходутеся как правило меньше, чем на скачку). Сколько раз в день ты ставишь новый софт на свой мобильник?
S>> Специально для тебя выделил твои же слова.
·>У тебя путаница с ЖЦ приложения.
Значит я тебя понять не могу. NGEN ускоряет загрузку приложения. Будешь с эти спорить?
·>Здравствуйте, Serginio1, Вы писали:
S>>>> За счет того, что JIT не сильно оптимизирующий компилятор. Кстати в UUnity там пошли в IL2CPP
S>>·>Это потому что в dotnet плохая реализация JIT, ну не смогли. В java такой проблемы в общем случае нет.
S>>·>ART кстати тоже через С компилирует. Т.к. AOT оказалась более подходящей в условиях мобильных девайсов, т.к. там пользователям важно, чтобы приложения стартовали как можно быстрее, а не раскочегаривались. В серверных же применениях явы — JIT рулит и бибикает.
S>> Ну вот видишь уже подвижка. Согласился что нужен натив для андроида.
·>Нужен не натив как таковой, а АОТ. А вот у тебя подвижек нет, с терминами полный швах — AOT != натив. Подумай на досуге, что является результатом работы JIT?
https://ru.wikipedia.org/wiki/JIT-%D0%BA%D0%BE%D0%BC%D0%BF%D0%B8%D0%BB%D1%8F%D1%86%D0%B8%D1%8F
JIT-компиляция (англ. Just-in-time compilation, компиляция «на лету»), динамическая компиляция (англ. dynamic translation) — технология увеличения производительности программных систем, использующих байт-код, путём компиляции байт-кода в машинный код или в другой формат непосредственно во время работы программы.
https://ru.wikipedia.org/wiki/AOT-%D0%BA%D0%BE%D0%BC%D0%BF%D0%B8%D0%BB%D1%8F%D1%86%D0%B8%D1%8F
Ahead-of-Time (AOT) компилятор — это вид транслятора, который использует метод компиляции перед исполнением (англ. ahead-of-time compilation). Применяется как для компиляции высокоуровневых языков (например, Си, С++ или Паскаль), так и для компиляции «промежуточных» языков, таких как байт-код Java, .NET Common Intermediate Language (CIL), IBM System/38, IBM System i.
Во многих реализациях языков программирования используется JIT-компиляция, которая позволяет компилировать промежуточный код напрямую в бинарный во время его выполнения, что позволяет существенно увеличить скорость выполнения. JIT требует выделения дополнительной памяти.
Метод АОТ не требует выделения дополнительной памяти и АОТ-компиляция проходит с минимальной нагрузкой на систему. Процесс компиляции полностью выполняется перед выполнением программы.
http://www.mono-project.com/docs/advanced/aot/
In some operating system configurations (mostly embedded systems) the operating system services for generating code dynamically are not available, this prevents Mono’s JIT from working. In those systems, you can use –aot=full to ensure that Mono precompiles everything, and then use the option –full-aot to ensure that Mono never uses the JIT engine.
# Do a full AOT:
$ mono --aot=full mscorlib.dll
$ mono --aot=full sample.exe
# Run, but request that Mono never tries to JIT:
$ mono --full-aot sample.exe
Full AOT is a fairly straightforward process except in the case of generic instantiations. In those cases Mono must perform a static analysis of the code and determine all of the possible instantiations of a type and generate the code required. For example if a program uses a List<int> and a List<double> mono will detect this and generate all of the referenced methods for both data types.
S>>>> Еще раз есть кроссплатформенный .Net Core, который кстати позволяет работать только с используемыми библиотеками.
S>>>>https://habrahabr.ru/post/311520/ и не зависить от Фреймворка. Так что твои умозаключения об зависимости от фреймвока нет.
S>>·>Я запутался. Зачем и core, и native?
S>> А, то что в для .Net Native нужны библиотеки по .NetStandard
·>Понятнее не стало. Зачем две технологии? Зачем два названия?
.Net Native это технология компиляции, но для компиляции он использует библиотеки созданные по определенным стандартам
https://docs.microsoft.com/en-us/dotnet/articles/standard/library
Я кстати тебе давал уже ссылку на
https://habrahabr.ru/post/312026/
https://blogs.msdn.microsoft.com/dotnet/2016/09/26/introducing-net-standard/
S>>>> Главное скорость, расход батареи, обфускация.
S>>·>Скорость чего? Инстолляции? Кого это парит? Расход батареи тут не причём, т.к. ART компилирует только в install time (времени расходутеся как правило меньше, чем на скачку). Сколько раз в день ты ставишь новый софт на свой мобильник?
S>> Специально для тебя выделил твои же слова.
·>У тебя путаница с ЖЦ приложения.
Значит я тебя понять не могу. NGEN ускоряет загрузку приложения. Будешь с эти спорить?