2011-09-24 33 views
6

我聽說一個android軟件可以通過使用C#開發。 (monodroid)monodroid較慢嗎?

但是當我研究它時,有人指出它運行會更慢。

您認爲如何?這是真的嗎?使用C#有效嗎?

+0

[Android開發中的MonoDroid VS Java的可能的重複?](http://stackoverflow.com/questions/5951673/monodroid-vs-java-in-android-development) –

回答

18

我們不知道。

如果有人能夠將Android Linpack應用移植到Android的Mono,那麼我們可以在兩者之間進行性能比較,這將非常方便。

這裏是我知道:

  • 有一個當前〜3秒啓動懲罰開銷首次加載在G1應用程序(你的里程將根據硬件有所不同)。這是由於初始化Mono運行時並加載引用的程序集。我們確實希望在未來改善這一點。
  • 單聲道和單聲道爲Android,JITs 一切。與此同時,Dalvik有一個可變大小的JITcache(ARMv7上目前爲1MB)和一個解釋器,所以根據您的應用程序,可能(可能)並非所有東西都會被打亂。
  • Mono for Android使用JNI來調用Android/Java代碼。

然後有koush's performance comparsion between Mono and Dalvik in 2009。這早於Dalvik JIT,但在相同的硬件上,Mono是打屁股 Dalvik。

那麼這是什麼意思?我完全不知道。 (同樣,Linpack測試中,以單端口爲Android將是美好的暗示暗示,眉來眼去!)

這就是說,有一些表現的意見建議:

  1. Use a splash screen during app startup.此過程中提供即時反饋應用程序啓動,這是大多數用戶關心的。
  2. 如果可能,儘量減少Mono和Java代碼之間的轉換。 JNI永遠不會贏得任何性能獎牌,所以如果您可以在沒有中間調用Java方法的情況下在Mono中執行更多代碼,請這樣做。
  3. 最小化併發保持活動的Java.Lang.Object實例的數量。跨VM GC參考可能導致性能問題。