Поскольку все смартфоны (по крайней мере, те, на которые я могу найти спецификации) имеют 32-разрядные процессоры, я бы предположил, что использование значений с плавающей запятой с одиночной точностью в обширных расчетах будет выполнять значительно лучше, чем удваивает. Однако, похоже, это не так.
Даже если я избегаю приведения типов и использую пакет FloatMath, когда это возможно, я вряд ли смогу увидеть какие-либо улучшения в производительности, кроме использования памяти, при сравнении методов на основе float с двунаправленными.
В настоящее время я работаю над довольно большим, интенсивно использующим вычисления инструментом анализа звука, который выполняет несколько миллионов умножений и добавлений в секунду. Поскольку умножение с двойной точностью на 32-битном процессоре занимает несколько тактовых импульсов против 1 для одиночной точности, я предполагал, что изменение типа будет заметным... Но это не так: - (
Есть ли хорошее объяснение этому? Это связано с тем, как работает Dalvik VM, или что?