Запрещено ли использование типов с плавающей точкой на Android?

На странице сайта разработчика Android упоминается, что вам следует (цитата): "Избегать использования чисел с плавающей запятой" (ссылка: Советы по повышению производительности)

После прочтения всей статьи, кажется, что некоторые пункты там могут быть немного устаревшими (возможно, написанными несколько лет назад).

Я хотел бы знать, действует ли это руководство до сих пор или действительно плохо (с падением производительности x2, даже на современном оборудовании) использовать типы с плавающей запятой?

2 ответа

Старые устройства Android, такие как ARMv6, не имели поддержки процессора для арифметики с плавающей запятой. Если вы придерживаетесь Java, использование поплавков будет реализовано с помощью эмуляции, и хотя оно будет работать на старых устройствах, ваше программное обеспечение будет работать очень медленно и потреблять много энергии, если вы используете поплавки в цикле отображения или что-то подобное, которое обновляется более 20 раз. в секунду.

ARMv7 и более поздние версии имеют поддержку арифметики с плавающей запятой, так что это не такая уж большая проблема, хотя предпочтительнее использовать целочисленную или целочисленную арифметику, если вы полагаете, что ваше программное обеспечение также должно поддерживать более старые устройства.

См. Связанный вопрос для OpenGL/ высокопроизводительных приложений Android: с плавающей или фиксированной точкой для приложений Android NDK OpenGL?

ИМХО, заявление " Избегать использования чисел с плавающей запятой" смешно. Если вам нужна плавающая точка, вам нужна плавающая точка. Конец линии. Вы не должны избегать этого, когда вам это нужно. Потому что вы, вероятно, попытаетесь найти способы обойти это целыми числами, но вычисления будут более сложными и менее понятными для программиста для чтения / отладки кода.

Когда вы посмотрите на этот великолепный ответ по SO, вы увидите, что операции с плавающей запятой (FLOPS) все еще очень быстрые. FLOPS за цикл для песчаных мостов и скважин SSE2 / AVX / AVX2. Они говорят о нескольких ШОПОВ за цикл!

Другие вопросы по тегам