2009-06-21 10 views
17

私は現在Androidプラットフォームで論文を書いています。 researchの後に、Dalvikに改善の余地があることは明らかです。私はこの目標を持つ開発者の時間を最大限に利用すると思いますか?Dalvikをどのように改善しますか? Androidの仮想マシン

JITコンパイルは大きなもののように思えるが、その後、私はまた、このような低リソースのマシン上で限られた用途であろう、これを聞きました。誰かがこれをバックアップするリソースまたはデータを持っていますか?

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

、記録およびDalvik VMに関するオンライン置かれている講義があります。

この質問はと表示されていますので、私は同意する回答に提案された変更の正当性があることを明確にします。 Sun JVMが導入されたときの改善など、バックアップするデータは非常に大きなものになります。

+1

「Dalvikが改善の余地があることは明らかです。 JITコンパイルを行うことは大いに重要です。すべての解釈された言語は、それから恩恵を受けるでしょう。それ以外に何を気付かれましたか? –

+0

謝罪、私はさらに明確にすべきだった。第一に、私が紙を言うとき、これは私の論文の予備的なものであり、それゆえ公開された論文ほど公式である必要はありません。第二に、上のテキストのリサーチリンクをクリックすると、私の初期の結果がいくつか表示されます。私が得意とするのは、Dalvikはネイティブコードと同じくらい速く、デスクトップ上のJVMと比べて、改善の余地があるということです。上記の他のリンクであるDalvik VMのトークを見ても、設計者はパフォーマンスが最適ではないことを認識しています。私はちょうどDalvikでまだ実装されていない最適化のためのいくつかのアイデアが欲しいです – gav

+0

今日このQ&Aを見て、不思議な人のために、Android/Dalvikの以前のバージョンはJITを持っていませんでした。 Android 2.2はDalvikのJITを導入しました。 Android 2.1にはソースコードが含まれていましたが、プロダクションビルドでは無効になっていました。 – HRJ

答えて

18
  1. より良いガベージコレクション:最低で圧縮(今日経験したメモリの断片化の問題を解消するために)、理想的に収集を行うこと自体に集中的少ないCPU(苦情を「私のゲームのフレームレートを吸う」削減する)
  2. JIT、あなたはNDKと組み合わせると、十分に狂気誰かが
  3. AOTコンパイルオプションのネイティブコードへのDalvikバイトコードをコンパイルすることができ、
  4. 十分な文書を引用して、他のプロジェクトは、それを試してみるかもしれないように、アンドロイド自体からそれが分離作り、コミュニティの貢献度は、より多くの量で、より速いクリップで

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

0

のDalvikの主な問題の一つは、私が聞いたひどいですが、私が最もたいものの一つは、より多くの言語の追加で、性能、です。

JVMは、プラットフォーム上で実行されているのPythonとRubyを取得コミュニティプロジェクトを持っており、そのようなスカラ座、Groovyのクロージャとしても、特殊な言語は、それのために開発しました。 Dalvikプラットフォームでこれらの(および/または他の)ものを見ることはいいことでしょう。 Sunは、ダヴィンチのマシンにも取り組んでいます。これは、JVMのダイナミックなタイピング拡張です。これは、過去15年間にSunが追い求めてきた「すべての言語に適合する」1つの哲学から大きく変わったことを示しています。

+0

Androidはスクリプト言語をサポートしています。それほど多くはありませんが、改善されます:http://stackoverflow.com/questions/101754/is-there-any-way-to-run-python-on-android。 –

3
  1. JIT。助けにならないことは、うんざりです。あなたはいつも

  2. まともなGCを制限するために何が起こっているかのコードをあなたJITが、1/10のネイティブコードのパフォーマンスを持っていることについて、より選択的であるかもしれません。現代世代のガベージコレクタには、大きな乱雑さはありません。

  3. より良いコード解析。割り振り/解放を行う必要がなく、ロックを保持するなど、多くの場合があります。それはあなたがマシンのクリーンなコードではなく、やって最適化を記述することができ、より良い、より高いレベルの言語のほとんどの理論的には

で(Javaのは、JavaScript、Pythonの、...)は、ほとんどの場合、ネイティブコードのパフォーマンスの20%以内でなければなりません。しかし、それはプラットフォームのベンダーが100年代+開発者の年を費やすことを必要とします。 Sun Javaは順調に進んでいます。彼らはまた、10年間それに取り組んできました。

+4

あなたの最後のポイントは、確立されたコードベースから始めるのではなく、Dalvikを書くという基本的な設計上の欠陥を強調しています。彼らがMonoを選んだ場合、彼らは今、プラットフォームとしての位置から何年も前になります。 –

関連する問題