2009-09-22 18 views
8

He oído que podría ser una buena idea desactivar "compilar para pulgar" en la configuración de un objetivo de iPhone para aumentar el rendimiento. Sin embargo, estoy teniendo problemas para encontrar esta configuración. Como no pude encontrarlo en mi proyecto actual, decidí crear uno nuevo (donde pude encontrarlo y configurarlo) y copiar mis archivos (y también actualizar todas las librerías que estoy usando al mismo tiempo).)iPhone compile for thumb

Pero ahora parece que esta configuración también ha desaparecido de este nuevo proyecto. No importa qué SDK elijo, simulador o dispositivo, la configuración no se mostrará en la configuración de destino. Sin embargo, sigo teniendo una variable llamada GCC_THUMB_SUPPORT bajo la categoría "Definido por el usuario" de repente. ¿Que es esto?

He intentado hacer un nuevo objetivo, pero la configuración no aparecerá en eso tampoco (ni siquiera GCC_THUMB_SUPPORT).

Respuesta

14

GCC_THUMB_SUPPORT es la variable correcta. Simplemente configúrelo en NO para deshabilitar la generación de código THUMB.
Una regla general de THUMB es, para deshabilitarla si su código es punto flotante pesado :)
Más sobre eso here.

Actualización:
El consejo para compilar para el pulgar conjunto de instrucciones is no longer valid (en realidad, ya que el iPhone 3GS).

+2

+1 para la regla de oro: D – stigi

+0

¿Sigue siendo relevante a partir del iPhone 4, 4g y 5? – Kyle

+0

@weichsel ¿qué tal clang? ¿Qué se usa en xcode ahora ... es el modo de pulgar lo que sigue siendo relevante? – lppier

2

"Compilar para el pulgar" debe estar bajo Objetivo/Obtener Información/GCC 4.2 - Generación de código. Si no está allí (me sorprendería que no lo esté), configure la variable definida por el usuario.

Tenga en cuenta que esto mejora el rendimiento solo en un conjunto estrecho de circunstancias que debe comprender antes de manipularlo.

3

Descubrí que la configuración del compilador ("GCC 4.2 - Generación de código", "GCC 4.2 - Idioma", etc.) solo aparece en la ventana de configuración de generación de Target cuando el SDK activo está configurado como Dispositivo - y la categoría "Definido por el usuario" solo aparece cuando el SDK activo es Simulador.

Y sí, deshabilitar la compilación de pulgares puede ser una gran ayuda para el rendimiento si se trata de un montón de matemática de punto flotante (por ejemplo, procesamiento de audio de punto flotante). Aunque no es, por supuesto, una aceleración mágica para todos los propósitos (y supuestamente el código compilado con el pulgar puede funcionar más rápido en algunas situaciones), por lo que probablemente solo resultará útil deshabilitar el Thumb si tu código tiene ese tipo de cuello de botella.

2

El conjunto de instrucciones estándar para ARM es de 4 bytes. Usando "Compilar para pulgar", el compilador puede usar instrucciones de 2 bytes. Esto da como resultado una biblioteca mucho más pequeña, pero también más lenta (algo debatible). Más críticamente, hay problemas con correr bajo ARMv6. En nuestro caso, no pudimos generar salida estable desde Monotouch (corrección en MT4.0 alpha). En Xcode, puede encontrar la configuración haciendo clic en su Target, y buscando en Build y buscando "thumb". El mío está bajo GCC 4.2 - Generación de código, pero a veces está bajo LVVM GCC 4.2.

Compile for Thumb

Cuestiones relacionadas