2016-12-14 2 views
0

Je travaille sur un projet d'exploration de données C# où je traite avec des fichiers texte 16 mb. Je devrais traiter les fichiers en cours d'exécution donc après que l'utilisateur sélectionne les fichiers, le programme devrait les charger un par un, rechercher des mots-clés, les diviser en objets. Ainsi, le programme peut avoir environ 50 objets chacun d'entre eux est d'environ 10 mb, soit environ 500 Mo de RAM.Comment traiter les gros objets sur l'exécution

Je ne ai pas besoin de tous ces objets à la fois, alors je dois les stocker quelque part en dehors de la RAM puis chargez celui que je besoin.

Quelle est la meilleure façon de faire face à cette situation?

Répondre

0

à mon humble avis, je pense que vous devriez sauvegarder tous vos fichiers dans une base de données après que l'utilisateur de sélectionner les fichiers au cas où vous voulez les garder. Ensuite, vous pouvez gérer le problème de traitement. Par exemple:

Si vous voulez analyser vos fichiers et extraire des informations. Certainement, vous devriez envisager d'utiliser ANTLR. Pour effectuer toutes les opérations au-dessus de votre AST (Abstract Syntax Tree). Et si vous connaissez la structure de votre texte, vous pouvez définir une grammaire et charger l'intégralité de AST à partir de votre fichier.

Si vous essayez de faire juste une recherche sur le texte, essayez de pointer vers Knuth–Morris–Pratt algorithm ou utiliser un Trie

Et pour les performances, essayez d'utiliser un StringBuilder au lieu de la classe de chaîne régulière