Привет всем!
У меня есть небольшая мобильная игрушка на OpenGL ES 2.0, написанная на Java. В последнее время, после добавления большого к-ва объектов, для которых вычисляются координаты, матрицы, нормали итд (именно на процессоре, не GPU. Мне нужно потом эти данные хранить), появляются небольшие подвисания. Конечно, я тестирую не на самом топовом устройстве, но все же.
Будет ли толк от того, что я перепишу мат. функции по вычислению нормалей, перемножению матриц и векторов на С? Какой при этом будет прирост в скорости работы этих функций и стоит ли оно того?
"подвисания"... Надо отлаживать, профилировать - смотреть, где именно подвисает, именно то и пробовать переписывать. С чего вы взяли, что именно мат.функции?
Hakito: это вам ничего не даст. Вызовы нативных методов гораздо дороже, чем обычные вызовы. Кроме того, джава байт-код переводится в машинный код (JIT, ART). Станет только хуже. Если переписать всё - возможно, будет лучше.
Hakito: могу только предположить, что так сделано для обеспечения производительности на всех платформах, в т.ч. тех, где нет компиляции на лету. Кроме того пакет java.lang не совсем обычный, и там могут быть всякие хитрые оптимизации на уровне JVM(т.е. возможно, эти вызовы не настолько дороги.) Но это, конечно, мои домыслы.
Вы можете провести простенькие бенчмарки и посмотреть, будет ли нативная реализация лучше.