La méthode de vérification pour voir si un NSDictionary contient une clé particulier est le plus rapide?

Je peux tester la présence d'une clé dans un NSDictionary de deux façons:

BOOL containsKey = [[dictionary allKeys] containsObject:foo];

BOOL containsKey = ([dictionary objectForKey:foo] != nil);

quelle méthode est la plus rapide, et pourquoi?

  • "S'il vous plaît montrer votre travail?" Vous avez les mêmes outils que nous faisons. Vous devriez essayer de profilage le code différent si vous voulez connaître la réponse à quelque chose comme cela.
  • Daniel est tout à fait exact, c'était une très paresseux façon d'obtenir la réponse facile à la question du test. Mais j'ai eu une très bonne réponse et quelques vrais résultats de performance, donc merci à tous de me permettre de faire un peu paresseux.
  • Je reçois que les gens sont un peu mis par le "s'il vous Plaît montrer votre travail" ligne de la question ci-dessus, mais j'ai pensé que le point de débordement de pile est d'avoir des réponses à toutes sortes de questions de base, non? Donc, pour clarifier, je n'ai pas demandé cela parce que je ne connais pas la réponse, ne pouvait pas trouver moi-même, ou d'être une rude secousse. Plutôt, parce que la réponse n'est pas immédiatement évident, sauf si vous êtes familier avec la Fondation des collections que c'était une bonne question et la réponse disponibles.
  • Cette question a été la cause de plus de plusieurs drapeaux de notre communauté. J'ai fait une modification mineure à votre question, veuillez envisager de garder (ou de la révision de mon montage à rien de ce qu'il était à l'origine).
  • Je suis totalement ne savais pas que je pouvais modifier la question après le fait. /facepalm
  • Est-il une différence entre le fait d'avoir une clé = nil et de ne pas avoir la clé à tous?
  • Pour info vous pouvez gagner un peu de vitesse à l'aide de CFDictionaryContainsKey ((__bridge CFDictionaryRef) (dictionary), foo);

InformationsquelleAutor alfwatt | 2009-05-06