Maneira rápida de realizar a adição de 2 grandes matrizes de flutuação no Android. JNI opcional ou OpenGL es
-
24-09-2019 - |
Pergunta
Eu simplesmente preciso adicionar floatArray1 ao floatArray2 armazenando o resultado em floatArray2 .. nenhuma terceira matriz .. todas as matrizes são unidimensionais, mas são muito grandes ... provavelmente tão grandes quanto o sistema operacional me permitirá. Max que eu precisaria é de duas matrizes de flutuação com 40.000 carros alegóricos cada ... mas eu poderia fugir com 1/10 que suponho que o mínimo.
Adoraria fazer isso em 1/30 ou 1/60 de segundo, mas isso não parece possível? Além disso, se o código for JNI, NDK ou OpenGL ES, tudo bem. O Android tem um idioma de montagem ou gosta de código de máquina que eu poderia usar de alguma forma?
Solução
Como um flutuador vale 32 bits e você tem 40000 carros alegóricos em cada matriz necessária:
40000 * 32 * 2 = 2,560.000 bits
Que é 320.000 byte. Não é de muita memória que eu diria, pois o limite padrão para um aplicativo Android é de 16 MB.
Em relação ao desempenho, você definitivamente ganharia alguma velocidade usando o JNI. O OpenGL não lhe daria benefício suficiente, eu acho que, já que a criação de contexto do OpenGL também leva algum tempo.