Android NDK - ¿Es compatible con código de brazo recto o simplemente Pulgar
-
24-09-2019 - |
Pregunta
Se me ha pedido para evaluar la plataforma Android para nuestro producto y lo estoy estudiando varias opciones, estoy hecho más que arañar la superficie en este momento y la única cosa que me está molestando es que no puedo ver cómo compilar código como código brazo recto (sin el pulgar), sé que corre más lento pulgar y necesitaremos el rendimiento en las secciones clave de nuestro código.
pensar sólo se debe establecer el indicador -march
en el LOCAL_CFLAGS
del archivo Android.mk
, pero no puedo conseguir que funcione ...
¿Alguien puede ayudar?
Solución
Especificación de la siguiente bandera para un módulo en Android.mk
compilará el código brazo recto.
LOCAL_ARM_MODE := arm
Activación de optimización puede también ayuda:
LOCAL_CFLAGS := -O3
Otros consejos
Se puede construir en ARM, Pulgar, o una mezcla de los dos.
En el makefile, en LOCAL_SRC_FILES
, donde enumeraría MyFile.c
, especifique MyFile.c.arm
(no cambie el nombre del archivo en el disco, sólo lo hacen en la lista de archivos de origen). Esta convención se utiliza a través de Android para el código que es el rendimiento crítico (o sólo tiene que ser ARM por alguna razón).
Se aplican las notas habituales, por supuesto: Código Pulgar tiende a requerir más instrucciones para lograr algo, pero cada instrucción es la mitad del tamaño, por lo que el código es por lo general un poco más lento, pero también una feria poco más pequeño. En algunas situaciones el tamaño más pequeño permite un mejor ajuste con los (pequeños) cachés de la CPU ARM, y en realidad podría ser más rápido.