Quelle est la manière la plus efficace dans JavaScript pour analyser d'énormes quantités de données d'un fichier? P>
Actuellement, j'utilise JSON Payse pour sérialiser un fichier de 250 Mo non compressé, ce qui est vraiment lent. Existe-t-il un moyen simple et rapide de lire beaucoup de données dans JavaScript dans un fichier sans boucle à travers tous les personnages? Les données stockées dans le fichier ne sont que quelques tableaux de points flottants? p>
5 Réponses :
Il n'y a pas de vraiment bon moyen de le faire, car tout le dossier va être chargé en mémoire et nous savons tous que tous ont de grandes fuites de mémoire. Pouvez-vous ne pas ajouter de pagination pour avoir visualisé le contenu de ce fichier? P>
Vérifiez s'il y a des plug-ins qui vous permettent de lire le fichier sous forme de flux, cela l'améliorera grandement. P>
http://www.html5rocks.com/fr/Tutorials/file/dndfiles / p>
Vous voudrez peut-être lire sur la nouvelle API HTML5 pour lire les fichiers locaux. Vous aurez le problème avec le téléchargement de 250 Mo de données toujours tho. p>
"Nous savons tous que tous ont de gros fuites de mémoire"? [citation requise]
C'est ma propre citation, étant donné mon expérience :)
Mais cela vous aidera au cas où vous vous demanderiez: programmeurs .stackexchange.com / Questions / 173627 / ...
Votre expérience me semble assez étrange. Je ne fermai presque jamais chrome et son utilisation de la mémoire ne semble jamais devenir scandaleuse. Je penserais après quelques semaines, le navigateur vieillissait et mourrait de toutes ces "grosses fuites de mémoire". : P
Est-ce que ça? Hmm, peut-être que la version de chrome que vous utilisez est différente de tout le monde: produitforums.google.com/forum/?fromgroups#!Topic/chrome/...
Parfois, une simple requête Google aide à effacer tous les doutes: Google.ie/Search? q = chrome + mémoire + fuite
Le 250 Mo est le cas non compressé des cas. pas la taille de l'utilisateur à télécharger.
OK, mais toujours sans connaître vos besoins en entreprise, il tenterait d'ajouter "pagination" à ces données.
@Marco: Cela semble un peu moins que la coïncidence que Chrome s'est écrasé peu de temps après avoir cliqué sur votre lien ... :)
Vous n'avez pas de chance sur le navigateur. Non seulement vous devez télécharger le fichier, mais vous devrez analyser le JSON, sans distinction. Analysez-le sur le serveur, rompez-le en plus petits morceaux, stockez ces données dans la DB et interrogez pour ce dont vous avez besoin. p>
Je recommanderais un analyseur basé sur la SAX pour ce type de JavaScript ou un analyseur à flux. P>
DOM analyse chargerait le tout en mémoire et ce n'est pas le moyen de passer par des fichiers volumineux tels que ceux mentionnés. P>
et p>
pour SAX analysant basé sur JavaScript (en XML) code> vous pourriez faire référence à
https://code.google.com/p/jssaxparser/ p>
pour JSON code> Vous pouvez écrire le vôtre, le lien suivant montre comment écrire un analyseur basé sur la SAX de base en JavaScript
http://ajaxian.com/archives/javascript-sax-based-Parser p>
Avez-vous essayé de le coder à un binaire et de le transférer comme une blob? p>
https://developer.mozilla.org/en-us/ DOCS / DOM / XMLHTTPRÉQUEST / SENDING_AND_RECEIVER_BINARY_DATA P>
Je peux penser à 1 solution et 1 hack p>
solution: Extension de la division des données dans des morceaux: il se résume au protocole HTTP. Pièces de repos sur la notion selon laquelle HTTP a suffisamment de "langue" pour la plupart des scénarios client-serveur. P>
Vous pouvez configurer sur le client un en-tête de demande Content-LEN pour établir la quantité de données dont vous avez besoin par demande p>
puis sur le backend a quelques options http://httpstatus.es p>
hack: Utilisez Websocket et obtenez le fichier binaire. Utilisez ensuite le HTML5 FILEAPI pour le charger dans la mémoire. Ceci est susceptible de manquer si ce n'est pas le téléchargement causant le problème, mais l'analyse d'un objet JS presque sans fin P>
Dans le navigateur ou dans le nœud.js?
Pourquoi le fichier est-il si gros et pourquoi doit-il être le navigateur?