7
votes

Analyseur CSV avec empreinte à mémoire de mémoire faible pour iPhone

Après avoir testé mon application avec Instruments, j'ai réalisé que le courant CSV L'analyseur que j'utilise a une énorme empreinte mémoire. Est-ce que quelqu'un a une recommandation pour une avec une empreinte de mémoire faible?


0 commentaires

3 Réponses :


3
votes

Il existe d'autres analyseurs CSV pour essayer:

  • http://michael.stapelberg.de/ccsvsvsvsvst
  • http://cocoawithlove.com/2009/11 /writing-parser-utilisant-nsscanner-csv.html (mon propre blog)

    Vous pouvez expérimenter pour voir si soit soit une mémoire inférieure.

    aucun de ces supports ne supporte "l'analyse basée sur l'événement". En cas d'analyse basée sur l'événement, vous ne chargez jamais le fichier source entier en mémoire, juste assez du fichier pour lire la ligne actuelle (vous pouvez également le faire en cours sur un téléchargement). Vous devez gérer chaque ligne lorsqu'il est lu et que toutes les données de la source sont libérées entre rangées.

    Ce serait la solution de tête la plus basse théorique. Si vous aviez vraiment besoin de bas frais généraux, vous devez adapter une solution existante pour le faire (je n'ai aucun conseil sur la manière dont cela serait fait).


1 commentaires

Thx Matt. J'ai décidé d'aller avec la solution Marks pour le moment car sa nécessité nécessite moins de tests, puis changer les analyseurs. Mais passer à un analyseur basé sur l'événement est maintenant sur ma feuille de route. Libcsv ( sourceforge.net/projects/libcsv ) semble être un.



5
votes

Vous devriez probablement faire cette ligne à ligne, plutôt que de lire tout le fichier, de l'analyser et de renvoyer un tableau avec toutes les lignes dedans. Dans tous les cas, le code que vous avez lié à produire des zillions d'objets temporaires dans une boucle, ce qui signifie qu'il aura une tenue de mémoire très élevée.

Un correctif rapide serait de créer un NsAutoreleeePool à la corbeille de la boucle et de drainer en bas: xxx

... Bouquet de code ... xxx

Ceci éliminera le temporaire Objets, votre utilisation de la mémoire sera donc la taille des données, ainsi qu'un objet pour chaque chaîne dans le fichier (environ 8 octets * * lignes * colonnes)


0 commentaires

0
votes

Ce n'est pas un analyseur de CSV, mais ma structure de cacaa Parsekit Open Source a un jeton de chaîne puissant / pratique / configurable qui pourrait être pratique pour le CSV ou d'autres types d'analyse / de jobenisation.

Le cadre:

http://parsekit.com

Quelques documentation d'utilisation:

http://parsekit.com/tokenization.html

La classe PKTokenizer:

http://github.com/itod/parsekit /blob/master/include/parsekit/pktensizer.h http://github.com/itod/parsekit/blob/master/ src / pktensizer.m


0 commentaires