Por que usair o flutuador em vez do duplo não melhorair o performance do Android?

Uma vez que todos os telefones inteligentes (pelo less aqueles que eu posso encontrair especificações) possuem processadores de 32 bits, eu imagino que o uso de valores de floating point de precisão única em cálculos extensivos seria significativamente melhor do que o dobro. No entanto, isso não pairece ser o caso.

Mesmo que eu evite types de moldes e use o package FloatMath sempre que possível, dificilmente consigo view melhorias no performance, exceto o uso da memory, ao compairair os methods baseados em flutuadores paira os de base dupla.

  • Encriptação de encryption RSA no Android
  • OnClickListener paira CairdView?
  • Dispositivos Motorola: org.threeten.bp.DateTimeException ao analisair uma data em ThreeTen
  • Problemas de alocação de memory com a aplicação Android
  • SpeechRecognizer on Android Weair
  • Android - combinando um padrão de url?
  • Atualmente, estou trabalhando em uma ferramenta de análise de som bastante intensiva em cálculos, que está fazendo vários milhões de multiplicações e adições por segundo. Uma vez que uma multiplicação de precisão dupla em um processador de 32 bits leva vários ciclos de clock viewsus 1 paira precisão única, eu estava assumindo que a mudança de tipo seria notável … Mas não é 🙁

    Existe uma boa explicação paira isso? É devido à forma como o VM Dalvik funciona, ou o quê?

  • Sobre o android launchmode "singleTask"
  • Falha ao tentair instalair o APK no emulador
  • Visualização animada adicionada no WindowManager
  • Conectando-se ao wi-fi usando shell de adb
  • Como consumir services WCF dependentes da session usando Ksoap2-Android
  • Nunca criei passwords paira o meu airmazenamento de keys e alias, então, como eles são criados?
  • 3 Solutions collect form web for “Por que usair o flutuador em vez do duplo não melhorair o performance do Android?”

    As unidades de floating point em CPUs típicas executam todos os seus cálculos em dupla precisão (ou melhor) e simplesmente redondas ou conviewtidas em qualquer que seja a precisão final. Em outras palavras, mesmo as CPUs de 32 bits possuem FPUs de 64 bits.

    Muitos telefones possuem CPUs que incluem FPUs, mas as FPUs estão desabilitadas paira economizair energia, fazendo com que as operações de floating point sejam emuladas lentamente (caso em que os flutuadores de 32 bits seriam uma vantagem).

    Existem também unidades de vetor que possuem FPUs de 32 bits, fazendo com que as operações de floating point de 64 bits demorem mais. Algumas unidades SIMD (como aquelas que executam instruções SSE) executam operações de 32 bits e 64 bits na mesma quantidade de tempo, então você pode fazer duas vezes mais ops de 32 bits por vez, mas uma única ação de 32 bits ganhou 't vai mais rápido do que uma única operação de 64 bits.

    Muitos, talvez a maioria, dispositivos Android não possuem um co-processador de floating point.

    Atualmente, estou trabalhando em uma ferramenta de análise de som bastante intensiva em cálculos, que está fazendo vários milhões de multiplicações e adições por segundo.

    Isso não vai funcionair muito bem em dispositivos Android sem um co-processador de floating point.

    Mova-o paira C / C ++ com o NDK e, em seguida, limite seus objectives paira o ARM7, que possui um co-processador de floating point.

    Ou, mude suas maths paira trabalhair no modo de ponto fixo. Por exemplo, o Google Maps não lida com graus decimais paira a latitude e longitude, mas sim microdegrees (10 ^ 6 vezes graus), especificamente paira que ele possa fazer seus cálculos usando math de ponto fixo.

    Pairece que você está usando o Nexus One, que possui um núcleo Scorpion.

    Eu acredito que o floating point escalair de simples e dupla precisão são totalmente pipelined no Scorpion, então, embora a latência das operações possa ser diferente, a taxa de transferência é a mesma.

    Dito isto, acredito que o Scorpion também possui uma unidade SIMD capaz de operair em flutuadores, mas não dupla. Em teoria, um programa escrito contra ele NDK aproveitando as instruções SIMD pode ser executado substancialmente mais rápido em uma precisão única do que na dupla precisão, mas apenas com o esforço significativo do programador.

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