17

私は現在、Android プラットフォームに関する論文を書いています。いくつかの調査の結果、Dalvik には改善の余地があることが明らかになりました。この目標を達成するために、開発者の時間をどのように使うのが最善だと思いますか?

JIT コンパイルは大きなもののように思えますが、これはリソースの少ないマシンではあまり役に立たないと聞いたことがあります。これを裏付けるリソースまたはデータを持っている人はいますか?

考慮すべき他のオプションはありますか?VM をバイパスするための堅牢なネイティブ開発キットの開発は別として。

興味のある方は、 Dalvik VMに関する講義を録画してオンラインに公開しています。

この質問は主観的に見えるので、どんな考えも歓迎します。私が受け入れる答えには、提案された変更の正当性がなければならないことを明確にします。Sun JVM が導入されたときの改善など、それを裏付けるデータがあれば、非常にプラスになります。

4

3 に答える 3

18
  1. ガベージコレクションの改善:最小限の圧縮(今日発生するメモリの断片化の問題を排除するため)、理想的には収集自体の実行にかかるCPUの負荷を軽減する(「ゲームのフレームレートが低下する」という苦情を減らすため)
  2. JIT、あなたが引用するように
  3. NDKと組み合わせると、AOTコンパイルオプション用にDalvikバイトコードをネイティブコードにコンパイルできる十分なドキュメント
  4. Android自体から分離できるようにして、他のプロジェクトがAndroidを実験し、コミュニティの貢献がより多く、より速いクリップで届くようにします。

あなたがそれらを必要とするならば、私は他のアイデアを思いつくことができると確信しています。

于 2009-06-21T17:39:18.343 に答える
3
  1. JIT。それが役に立たないということは、がらくたの負荷です。どのコードを JIT するかについてはより選択的かもしれませんが、ネイティブ コードの 10 分の 1 のパフォーマンスが常に制限されることになります。

  2. まともなGC。現代の世代のガベージ コレクターには大きな吃音はありません。

  3. より良いコード分析。割り当て/解放を行う必要がない、ロックを保持するなどのケースがたくさんあります。マシンが得意とする最適化を行うのではなく、クリーンなコードを書くことができます。

理論的には、ほとんどの高レベル言語 (Java、Javascript、Python など) は、ほとんどの場合、ネイティブ コードのパフォーマンスの 20% 以内になるはずです。しかし、プラットフォーム ベンダーは数百年以上の開発工数を費やす必要があります。Sun Java は順調に進んでいます。彼らはまた、10年間それに取り組んできました。

于 2009-06-24T19:14:55.943 に答える
0

Dalvik の主な問題の 1 つはパフォーマンスです。これはひどいものだと聞きましたが、私が最も望んでいることの 1 つは、より多くの言語を追加することです。

JVM には、プラットフォーム上で Python と Ruby を実行するコミュニティ プロジェクトがあり、Scala、Groovy、Closure などの特別な言語も JVM 用に開発されています。これら (および/またはその他) を Dalvik プラットフォームでも見ることができれば幸いです。Sun は、JVM の動的型付け拡張である Da Vinci マシンにも取り組んでいます。これは、Sun が過去 15 年間従ってきた「1 つの言語がすべてに適合する」という哲学からの大きな転換を示しています。

于 2009-06-21T09:24:06.217 に答える