Una búsqueda de hash debe ser más rápido en general, que va sobre todas las claves del diccionario, la creación de una serie de ellos (la asignación de memoria es relativamente costosa) y luego buscar en la matriz (que ni siquiera puede ser una búsqueda binaria ya que la matriz no está ordenada).
Por el bien de la ciencia, sin embargo, hice dos ejecutables que solo ejecutan cada estilo 1 millón de veces y los sincronicé.
Con AllKeys:
real 0m4.185s
user 0m3.890s
sys 0m0.252s
Con objectForKey:
real 0m0.396s
user 0m0.189s
sys 0m0.029s
Obviamente, varios factores pueden influir en esto - tamaño del diccionario, el almacenamiento en caché los AllKeys valor de retorno, etc. Yo no esperaría no obstante, hay un caso en el que la búsqueda en el array es más rápida que la búsqueda en el diccionario.
"¿Muestra su trabajo?" Tienes las mismas herramientas que nosotros. Debe intentar perfilar el código diferente si quiere saber la respuesta a algo como esto. – danielpunkass
Daniel tiene toda la razón, esta era una forma muy perezosa de obtener la respuesta a una pregunta fácil de probar. Pero obtuve una muy buena respuesta y algunos resultados de rendimiento real, así que gracias a todos por dejarme ser un poco flojo. – alfwatt
Me da la impresión de que la línea "Por favor, muestre su trabajo" desagrada a la gente en la pregunta anterior, pero pensé que el objetivo del desbordamiento de la pila es tener respuestas a todo tipo de preguntas básicas, ¿no? Entonces, para aclarar, no pregunté esto porque no sé la respuesta, no pude averiguarlo o ser un imbécil grosero. Más bien, debido a que la respuesta no es inmediatamente obvia a menos que esté familiarizado con las colecciones de la Fundación, parecía una buena pregunta y respuesta para tener disponible. – alfwatt