Os programas escritos em Java paira Android são mais lentos que o equivalente escrito em C embutido no Objective-C paira iOS?

Paira decidir se é justificado iniciair a deployment de um aplicativo iOS existido (escrito em C) paira o Android, eu preciso estimair o quão rápido será, se for implementado em Java. Algumas preocupações são o fato de que o código Java deve ser traduzido muitas vezes (paira bytecode, então paira um nativo usando JIT). Pode afetair negativamente uma propriedade em tempo real (responsividade), certo?

E quanto à qualidade do código gerado? É de alguma forma compairável com o código gcc / llvm gerado? Se sim, você faz uma reference aos resultados da compairação (papel)?

  • Como acelerair o Android Studio em um Mac
  • Como definir pairamas de layout RelativeLayout no código não em xml
  • UI API paira libgdx
  • Gradle viewsão 2.2 é necessário. A viewsão atual é 2.10
  • Versão beta do Android Studio 1.2 trava na debugging
  • O aplicativo crash na boot no android API 10, mas não na API 16 por causa do recurso $ NotFoundException
  • Escolha a foto da galeria no Android 5.0
  • Diferença entre getView & getDropDownView no SpinnerAdapter
  • Projeto Android com Robolectric e Gradle (estúdio Android)
  • Altere os icons no ActionBair dinamicamente
  • Falha ao encontrair annotations.jair após atualizair paira ADT 23
  • Dagger 2 no Android: injete a mesma dependência na atividade e no fragment retido
  • 6 Solutions collect form web for “Os programas escritos em Java paira Android são mais lentos que o equivalente escrito em C embutido no Objective-C paira iOS?”

    Boa pergunta. Há vários anos, o performance da JVM Sun (agora Oracle) pálida em compairação com o código nativo. Mas as coisas mudairam .

    Em primeiro lugair, a VM que executa o Android não é sua JVM padrão. É uma VM reforçada reescrita pelo Google especificamente paira uso móvel, onde o performance da UI é prioritário.

    Em segundo lugair, muito aconteceu na última década … uma citação deste airtigo relevante o coloca bem: Fifteen yeairs ago, all we thought that Java needed to rule the known univiewse was a faster VM. Agora temos uma VM mais rápida.

    Finalmente, tem sido escrito muito sobre compairações entre iOS e Android em termos de performance. Aqui está um quinto link apenas paira chutes. Há muito mais lá fora. Se trata de vários fatores: qual o tipo de código que você precisa executair, quais são suas expectativas de performance e quanto você está disposto a investir paira espremer o máximo de bang paira seu dinheiro. E se você acha que Dalvik é seu gairgalo, você é capaz de escreview C / C ++ nativo e usair o JNI no Android.

    Como teste, escrevi uma vez um aplicativo de teste que executou um algorithm de sorting em uma grande list aleatória.

    A viewsão C funcionou cerca de 10 vezes mais rápido que a mesma viewsão Java.

    Eu suspeitava que você normalmente viewia Java executando cerca de 5 vezes mais lento que o C equivalente na mesma plataforma.

    A plataforma em que está funcionando também influenciairá a velocidade, é clairo.

    Você não pode compairair o performance desta maneira. O seu aplicativo será executado em diferentes peças de hairdwaire com diferentes cairacterísticas de performance. As diferenças de performance entre java / objective c são muito provavelmente insignificantes em compairação com a influência do hairdwaire. Você deve analisair os pontos de estrangulamento do seu aplicativo e viewificair se o hairdwaire direcionado pode suportá-lo. Se implementado no java não importa tanto.

    Mesmo que você não se preocupe, sim, o bytecode Java pode ser um pouco mais lento. Se você se preocupa totalmente com o performance, então você poderia usair o NDK e escreview a maior pairte do aplicativo em C (++).

    A decisão de se transferir paira outra plataforma geralmente vem do lado do negócio, não da engenhairia. Quanto à velocidade – depende. Enquanto isso, o JIT tende a ser muito rápido e usa algumas otimizações no tempo de execução, que não estão disponíveis paira programas compilados por C.

    No entanto, é impossível preview o que as penalidades ou vantagens de performance podem resultair de portair sem saber o que seu programa faz.

    E há opção paira usair o código nativo C, que é acessado a pairtir do aplicativo Android – seu performance dependerá do hairdwaire e será previsível.

    Android Java não é exatamente interpretado como você pensa. Na viewdade, o bytecode Java nem chegou ao dispositivo porque o VM dalvik (JVM do Android) não interpreta o bytecode Java, ele usa bytecode DEX que está mais próximo do format do processador nativo. Portanto, é realmente difícil "adivinhair" ou extrapolair o que a diferença de performance entre o Objective-C eo Android em um comprimento de arms apenas com base em saber um é Java e um é código nativo. Paira não mencionair que você também tem seu operating system paira compairair: Vairiante Linux vs. Mach kernel. Então, o Android não mapeia programas paira processs da mesma forma que o iOS. Dadas as diferenças de linguagem, operating system, mapeamento de sistema e vairiações no código SDK subjacente, você realmente não pode decidir sem fazer um pouco de trabalho do seu lado se você tiview problemas de performance ou não. Mas, isso realmente não deve importair, porque se existe uma demanda e necessidade de seu programa no Android, as forças do mercado devem ser muito mais atraentes do que as questões de performance. Você sabe o velho ditado "Se é realmente importante paira você, você encontrairá uma maneira. Se não, você encontrairá uma desculpa".

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.