2011-09-24 24 views
6

He oído que un software de Android se puede desarrollar mediante el uso de C#. (monodroid)¿El monodroid es más lento?

Pero cuando lo investigo, alguien indicó que será más lento para funcionar.

¿Qué opinas? ¿Es real? ¿Es efectivo usar C#?

+0

posible duplicado de [MonoDroid VS Java en el desarrollo de Android?] (Http://stackoverflow.com/questions/5951673/monodroid-vs-java-in-android-development) –

Respuesta

18

No lo sabemos.

Con toda seriedad, sería muy útil si alguien pudiera portar la aplicación Android Linpack a Mono para Android para que pudiéramos obtener una comparación de rendimiento entre los dos.

Aquí es lo que hago saber:

  • Hay un momento ~ 3s inicio sobrecarga sanción al colocar primero la aplicación en un G1 (su kilometraje variará dependiendo del hardware). Esto se debe a la inicialización del tiempo de ejecución Mono y la carga de los ensambles a los que se hace referencia. Queremos mejorar esto en el futuro.
  • Mono y Mono para Android, JITs todo. Dalvik, por su parte, tiene un JITcache de tamaño variable (actualmente 1MB en ARMv7) y un intérprete, por lo que dependiendo de su aplicación es posible (probable) que no todo esté JIT.
  • Mono para Android utiliza JNI para invocar el código Android/Java.

Luego está koush's performance comparsion between Mono and Dalvik in 2009. Esto es anterior al Dalvik JIT, pero en hardware idéntico, Mono era nalgadas Dalvik.

Entonces, ¿qué significa todo eso? No tengo la mínima idea. (Una vez más, un puerto de Linpack en Mono para Android sería maravilloso pista pista, codazo codazo!)

Dicho esto, hay algunos consejos de rendimiento para sugerir:

  1. Use a splash screen during app startup. Esto proporciona retroalimentación inmediata durante inicio de la aplicación, que es lo que más les importa a los usuarios.
  2. Si es posible, minimice las transiciones entre el código Mono y Java. JNI nunca ganará medallas de rendimiento, por lo que si puede hacer más código en Mono sin llamadas intermedias a los métodos de Java, hágalo.
  3. Minimice el número de instancias de Java.Lang.Object que se mantienen activas al mismo tiempo. Las referencias de GC Cross-VM pueden causar problemas de rendimiento.
Cuestiones relacionadas