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

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

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

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

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

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


person gav    schedule 21.06.2009    source источник
comment
Как вы можете заявить в документе, что: ясно, что у Dalvik есть возможности для улучшения, не зная, что это за комнаты. Отдать компиляцию JIT - это много: от этого выиграют все интерпретируемые языки. Что еще вы заметили?   -  person e-satis    schedule 21.06.2009
comment
Извините, я должен был уточнить дальше. Во-первых, когда я говорю «статья», это скорее предварительная подготовка к моей статье, и поэтому она не должна быть такой формальной, как опубликованная диссертация. Во-вторых, если вы нажмете на ссылку исследования в приведенном выше тексте, вы увидите пару моих первых результатов. Я имею в виду, что Dalvik далеко не так быстр, как собственный код, по сравнению с JVM на рабочем столе, есть возможности для улучшения. Кроме того, посмотрев выступление Dalvik VM по другой ссылке выше, разработчики признали, что производительность не оптимальна. Мне просто нужны некоторые идеи по оптимизации, которые еще не реализованы в Dalvik.   -  person gav    schedule 21.06.2009
comment
Для тех, кто смотрит сегодня этот вопрос и задается вопросом: более ранние версии Android/Dalvik не имели JIT. Android 2.2 представил JIT для Dalvik. В Android 2.1 он был в исходном коде, но был отключен в производственных сборках.   -  person HRJ    schedule 27.12.2010


Ответы (3)


  1. Улучшенная сборка мусора: минимальное сжатие (чтобы устранить проблемы с фрагментацией памяти, возникающие сегодня), в идеале менее интенсивное использование ЦП при выполнении самой сборки (чтобы уменьшить жалобы на «отстойную частоту кадров в моей игре»).
  2. JIT, как вы цитируете
  3. Достаточно документации, чтобы в сочетании с NDK кто-то достаточно сумасшедший мог скомпилировать байт-код Dalvik в собственный код для варианта компиляции AOT.
  4. Сделайте его отделимым от самого Android, чтобы другие проекты могли экспериментировать с ним, а вклады сообщества могли поступать в большем количестве и быстрее.

Я уверен, что мог бы придумать другие идеи, если они вам нужны.

person CommonsWare    schedule 21.06.2009

  1. JIT. То, что это не помогает, — полная чушь. Вы можете быть более избирательны в отношении того, какой код вы JIT, но имея 1/10 производительность нативного кода всегда будет ограничивать

  2. Достойный ГК. Современные сборщики мусора поколений не имеют больших заиканий.

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

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

person hacken    schedule 24.06.2009
comment
Ваш последний пункт подчеркивает фундаментальный недостаток дизайна, заключающийся в выборе написания Dalvik вместо того, чтобы начинать с установленной кодовой базы. Если бы они выбрали Mono, то были бы на годы впереди своей платформы. - person Sam Harwell; 13.04.2010

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

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

person wvdschel    schedule 21.06.2009
comment
В Android теперь есть поддержка языка сценариев. Это немного, но улучшится: stackoverflow.com/questions/101754/. - person e-satis; 21.06.2009