Ответ 1
Параметры, которые вы поставляете в NDK, будут влиять только на то, как скомпилирован ваш код. Это не изменит GL libs или что-то еще, что часть платформы, которые всегда генерируются соответствующим образом. Если вы просто бросаете геометрию на оборудование GL, вы не увидите разницы.
Если вы хотите увидеть, имеют ли ваши параметры эффект, загрузите (или создайте) простой тест, который выполняет кучу операций с значениями с плавающей запятой с двойной точностью и время, необходимое для выполнения до и после.
Аргумент -mfloat-abi = softp определяет, как значения с плавающей запятой передаются между функциями. softfp означает, что они всегда передаются в целых регистрах или в стеке. Если Android не указал softfp, версия библиотеки ARMv7-A ожидала бы, что всплывающие окна появятся в аппаратных регистрах, и любой код, созданный для ARMv5TE, сломается.
"softfp" добавляет немного накладных расходов к некоторым функциям, но инструкции по перемещению значений в и из регистров fp дешевы на ARM, и предоставленная совместимость с ABI делает это полезным.
"-mthumb" позволяет генерировать код Thumb/Thumb2. Код Thumb имеет тенденцию быть немного медленнее, но немного меньше, чем эквивалентный ARM; иногда меньше означает, что вы лучше подойдете в i-кеш процессора и будете работать быстрее. Размер всегда беспокоит эти устройства, поэтому Thumb включен по умолчанию.
Если вы сомневаетесь, "arm-eabi-objdump -d whatever.o" покажет вам разборку вашего кода.
Обновление: NDK r9b добавлена поддержка -mhard-float. Это позволяет вам создавать библиотеки NDK с жесткими правилами API для целей armeabi-v7a.