2011-09-24 14 views
6

Słyszałem, że oprogramowanie dla systemu Android można opracować za pomocą C#. (monodroid)Czy monodroid jest wolniejszy?

Ale kiedy go badam, ktoś wskazał, że będzie wolniejszy.

Co myślisz? To się dzieje naprawdę? Czy to jest skuteczne przy użyciu C#?

+0

możliwy duplikat [MonoDroid VS Java w wersji dla Androida?] (Http://stackoverflow.com/questions/5951673/monodroid-vs-java-in-android- development) –

Odpowiedz

18

Nie wiemy.

Byłoby naprawdę przydatny, gdyby ktoś mógł przenieść aplikację Android Linpack do Mono na Androida, abyśmy mogli uzyskać porównanie wydajności między tymi dwoma.

Oto co zrobić wiedzieć:

  • Istnieje obecnie ~ 3s kara napowietrznych uruchamiania podczas pierwszego ładowania aplikacji na G1 (twój przebieg będzie się różnić w zależności od sprzętu). Wynika to z zainicjowania środowiska wykonawczego Mono i załadowania zwoływanych zespołów. Chcemy to poprawić w przyszłości.
  • Mono i Mono dla Androida, JITs wszystko. Tymczasem Dalvik ma JITcache o zmiennej wielkości (obecnie 1 MB na ARMv7) i tłumacza, więc w zależności od twojej aplikacji jest możliwe (prawdopodobnie), że nie wszystko będzie JITowane.
  • Mono dla systemu Android używa interfejsu JNI do wywoływania kodu Android/Java.

Następnie jest koush's performance comparsion between Mono and Dalvik in 2009. To poprzedza JIT Dalvik, ale na identycznym sprzęcie, Mono był klapsy Dalvik.

Co to wszystko oznacza? Nie mam absolutnie żadnego pojęcia. (Ponownie, port Linpacka Mono for Android byłoby wspaniałe hint hint, szturchać szturchać!)

Powiedział, że jest jakaś rada wydajność zaproponować:

  1. Use a splash screen during app startup. To zapewnia natychmiastową informację zwrotną w czasie uruchamianie aplikacji, na czym najbardziej zależy użytkownikom.
  2. Jeśli to możliwe, należy zminimalizować przejścia między kodami Mono i Java. JNI nigdy nie wygra żadnych medali wydajności, więc jeśli możesz zrobić więcej kodu w Mono bez pośrednich wywołań metod Java, zrób to.
  3. Zminimalizuj liczbę instancji Java.Lang.Object, które są utrzymywane przy życiu jednocześnie. Odwołania GC Cross-VM mogą powodować problemy z wydajnością.
Powiązane problemy