Быстрый способ выполнить добавление 2-х больших массивов в Android. Опционально JNI или Opengl ES - PullRequest
1 голос
/ 04 апреля 2010

Мне просто нужно добавить floatArray1 к floatArray2, хранящему результат в floatArray2 .. нет третьего массива ... все массивы одномерные, но очень большие ... вероятно, такие большие, как операционная система позволит мне сойти с рук. Максимум, что мне понадобится, - это два массива с плавающей точкой по 40 000 в каждой ... но я мог бы получить 1/10, что я считаю минимальным.

Хотелось бы сделать это за 1/30 или 1/60 секунды, но это кажется невозможным? Кроме того, если код JNI, NDK или OpenGL ES, это нормально ... есть ли у Android язык ассемблера или подобный машинный код, который я мог бы использовать как-нибудь?

1 Ответ

3 голосов
/ 04 апреля 2010

Поскольку число с плавающей точкой стоит 32 бита, и у вас есть 40000 чисел с плавающей точкой в ​​каждом массиве, вам потребуется:

40000 * 32 * 2 = 2.560.000 бит

Что составляет 320.000 байт. Не очень много памяти, я бы сказал, так как ограничение по умолчанию для Android-приложения составляет 16 МБ.

Что касается производительности, вы определенно наберете скорость, используя JNI. Я думаю, OpenGL не принесет вам достаточной пользы, поскольку создание контекста OpenGL также занимает некоторое время.

...