par
Nagol » 10 avr. 2009, 02:48
Dans le cadre de mon boulot je jongle avec des données qui transite via de l'ajax et donc du json, ces données parfois atteignent des grosseurs assez fantastiques (ca peut aller jusqu'à 200mo et plus) j'aimerais donc vous faire part d'une astuce concernant les performances que vous pourrez trouver utile.
Les navigateurs n'aiment pas les données sur une ligne unique de plusieurs (dizaines de?) milliers de caractères, en revanche le fait d'ajouter quelques retours de chariot bien pensé permet d'avoir des gains de temps de l'ordre du *1000 (un fichier de 100 000 lignes est passé de 5minutes à 15s pour vous donner une idée)
Cette petite fonction vous découpera votre json en une version heredoc de celle ci qui n'aura besoin d'aucun changement javascript à prioris.
function makecolumnjson($text) {
return preg_replace('`(\}|\]),`', "$1,\\\n", $text);
}
Autre problème relatif à ce genre de probèmes de perf, un innerHTML est meilleur qu'un millier, il est bien plus performant de stocker dans une variable javascript pour faire un seul innerHTML que de boucler et faire des innerHTML à chaque occurence.
Voila, c'était les bons petits conseils de Looping qui n'arrive pas à dormir.
Dans le cadre de mon boulot je jongle avec des données qui transite via de l'ajax et donc du json, ces données parfois atteignent des grosseurs assez fantastiques (ca peut aller jusqu'à 200mo et plus) j'aimerais donc vous faire part d'une astuce concernant les performances que vous pourrez trouver utile.
Les navigateurs n'aiment pas les données sur une ligne unique de plusieurs (dizaines de?) milliers de caractères, en revanche le fait d'ajouter quelques retours de chariot bien pensé permet d'avoir des gains de temps de l'ordre du *1000 (un fichier de 100 000 lignes est passé de 5minutes à 15s pour vous donner une idée)
Cette petite fonction vous découpera votre json en une version heredoc de celle ci qui n'aura besoin d'aucun changement javascript à prioris.
[php]
function makecolumnjson($text) {
return preg_replace('`(\}|\]),`', "$1,\\\n", $text);
}
[/php]
Autre problème relatif à ce genre de probèmes de perf, un innerHTML est meilleur qu'un millier, il est bien plus performant de stocker dans une variable javascript pour faire un seul innerHTML que de boucler et faire des innerHTML à chaque occurence.
Voila, c'était les bons petits conseils de Looping qui n'arrive pas à dormir.