Почему использование float вместо double не улучшает производительность Android?

Поскольку все смартфоны (по крайней мере те, которые я могу найти on) имеют 32-битные процессоры, я бы предположил, что использование значений с плавающей запятой одинарной точности в обширных вычислениях будет работать значительно лучше, чем удвоения. Однако это не так. Кажется, это так.

Даже если я избегаю приведений типов и использую пакет FloatMath, когда это возможно, я почти не вижу каких-либо улучшений в производительности, кроме использования памяти, при сравнении методов, основанных на float, с методами с двойным основанием

В настоящее время я работаю над довольно большим инструментом анализа звука с интенсивными вычислениями, который выполняет несколько миллионов операций умножения и сложения в секунду. Поскольку умножение двойной точности на 32-битном процессоре занимает несколько тактов против 1 для одинарной точности, я предполагал, что изменение типа будет заметным ... Но это не так: - (

Есть хорошее объяснение для этого? Это связано с тем, как работает виртуальная машина Dalvik, или что?

12
задан Andreass 25 March 2012 в 11:31
поделиться