J'ai une application Iphone avec un grand NSArray imbriqué de chaînes. Le NSArray va à 3 niveaux de profondeur, et il y a un total d'environ 15 000 cordes aux niveaux les plus profonds. La grande majorité des chaînes ont moins de 20 caractères. De temps à autre, mon appli est suspendue pendant un moment, puis reprend son fonctionnement après 5-25 secondes. C'est évidemment inacceptable. Si je lance l'application avec seulement 2 000 des chaînes, les accroches deviennent beaucoup plus rares. Donc, je suis assez sûr que le grand NSArray est à l'origine du problème.iphone grand NSArray de chaînes performances malheurs
Quelle structure de données alternative serait susceptible de mieux fonctionner? Tout ce dont j'ai besoin est de lire rapidement le tableau à partir d'un fichier lorsque l'application démarre, puis pouvoir accéder aux chaînes de manière aléatoire à partir du tableau. [C'est en fait un peu plus compliqué que ça; Je dois être capable de saisir des chaînes aléatoires à partir de sous-ensembles prédéterminés du tableau.] Le programme peut saisir une chaîne aléatoire aussi souvent qu'une fois par seconde. Par ailleurs, NSArray est actuellement stocké dans une classe singleton.
Vous devez rechercher les causes du raccrochage. Comment demandez-vous ces articles? Il n'y a aucune raison que l'indexation directe ('objectAtIndex:') trois fois provoque 20 secondes d'attente. –
Une partie de mon problème est que je ne comprends pas vraiment les outils. J'ai profilé avec Shark et il a été dit que 90 +% de mon CPU était utilisé par le PID # 0. Mais je n'ai aucune idée de ce qu'est le PID # 0. –