Как бы вы улучшили Далвик? Виртуальная машина Android


В настоящее время я пишу статью на платформе Android. После некоторых исследований становится ясно, что у Dalvik есть место для улучшения. Мне было интересно, что, по-вашему, было бы лучшим использованием времени разработчика с этой целью?

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

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

Для тех, кто заинтересован, есть лекция, которая была записана и размещена в интернете относительно Dalvik VM.

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

3 17

3 ответа:

  1. лучшая сборка мусора: сжатие по минимуму (чтобы устранить проблемы фрагментации памяти, испытываемые сегодня), в идеале менее интенсивное использование процессора при выполнении самой сборки (чтобы уменьшить жалобы на "частоту кадров моей игры")
  2. JIT, как вы цитируете
  3. достаточно документации, чтобы в сочетании с NDK кто-то достаточно сумасшедший мог скомпилировать байт-код Dalvik в машинный код для варианта компиляции AOT
  4. Сделать его отделимым от самого андроида, таким что другие проекты могли бы экспериментировать с ним, и вклад сообщества мог бы прибыть в большем количестве и в более быстром клипе
Я уверен, что смогу придумать другие идеи, если они вам понадобятся.
  1. Джит. То, что это не помогает, - полная чушь. Вы можете быть более избирательны в отношении того, какой код вы JIT, но имея 1/10 производительность машинного кода всегда будет ограничивать

  2. Приличный GC. Современные поколения мусорщиков не имеют большого заикания.

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

В теории большинство языков более высокого уровня (Java, Javascript, python,...) должно быть в пределах 20% от производительности машинного кода в большинстве случаев. Но для этого требуется, чтобы поставщик платформы потратил 100 лет на человека-разработчика. Солнце Явы становится все лучше. Они также работали над этим в течение 10 лет.

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

У JVM были проекты сообщества, которые запускали Python и Ruby на платформе, и даже специальные языки, такие как Scala, Groovy и Closure, разработанные для нее. Было бы неплохо увидеть их (и / или других) на платформе Dalvik. Sun также работает над машиной да Винчи, динамическим расширением набора текста. JVM, что указывает на значительный сдвиг от философии" один язык подходит всем", которой Sun следовал в течение последних 15 лет.