2009-09-28 19 views
27

I un perfil de mi aplicación de iPhone en destino, y de acuerdo con los instrumentos 65% del tiempo se gasta en mach_msg_trap.¿Cómo saber qué espera mach_msg_trap?

Tengo un hilo de fondo que se ejecuta para siempre y devuelve los resultados al hilo principal usando performSelectorOnMainThread:withObject:waitUntilDone:, aproximadamente cada 2 segundos. No estoy esperando hasta que esté hecho.

Respuesta

24

Resulta que mi aplicación no está gastando realmente el 65% de su tiempo en la función mach_msg_trap. Fue un error de configuración en Instruments por mi parte.

La herramienta Muestra por defecto es Todos los conteos de muestras, esto medirá todos los hilos independientemente de su estado.

En lugar de cambiar a Ejecución de tiempos de muestra que reflejará la carga de trabajo real actual. Screenshot of Instruments http://developer.apple.com/library/mac/qa/qa2009/images/qa1619_running_sample_times.png

+1

Fuente: http://developer.apple.com/mac/library/qa/qa2009/qa1619.html – Nickolay

+2

todos los enlaces están rotos aquí – grane2212

2

Si no espera que su subproceso principal haga otra cosa que esperar en este hilo de fondo (o esperar la entrada del usuario) no hay nada de qué preocuparse: su aplicación simplemente no tiene nada que ver la mayor parte del tiempo .

Si espera que el hilo principal esté haciendo otra cosa activamente, actualice su pregunta para describirlo. En este caso, es posible que desee mirar las pilas de llamadas completas a mach_msg_trap, ya que a menudo se encuentra en la parte inferior de una pila de llamadas donde la pérdida de tiempo real está más arriba.

+0

No espero que mi hilo principal haga mucho excepto recibir la actualización y volver a dibujar la pantalla una vez cada 2 segundos. Sin embargo, espero que mi hilo de fondo tome hasta el último ciclo del reloj. – PeyloW

+0

Todavía creo que puede valer la pena echar un vistazo a la pila de llamadas sobre mach_msg_trap solo para verificar dos veces su suposición de que el hilo principal debería estar al ralentí. – nall

Cuestiones relacionadas