#18342 - Note : lenteur JS
https://lehollandaisvolant.net/?mode=links&id=20190220163207Rhaaa…
(oui, encore sur le JS)
Les fonctions sur les dates en JS sont pratique. Je parle celles des formats et l’internationnalisation, celle qui quand on lui dit "Fr" nous sort « mercredi 20 février » et quand on lui dit “de” nous sort « Mittwoch, 20. Februar ».
Voyez là :
https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/Date/toLocaleDateString
https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/DateTimeFormat
Mais bordel, qu’est-ce que c’est LENT !!
J’utilise ça pour afficher la date dans mon lecteur RSS.
Bah ça me prenait 700 ms pour afficher ~650 posts.
Vous ne voyez pas le problème : 1 ms par post, c’est pas énorme à première vue. Mais moi si : en mettant la fonction qui définit le format en dehors de la boucle, je ne mets plus que 50 ms pour afficher 650 posts.
Aaah, voilà qui est mieux =).
Donc faut faire comme ça :
var DateTimeFormat = new Intl.DateTimeFormat('fr', {year: "numeric", weekday: "short", month: "short", day: "numeric", hour: "numeric", minute: "numeric"});
feedList.forEach(function(item) {
…
…
li.querySelector('.post-head > .date').textContent = DateTimeFormat.format(item.datetime);
…
}
Ça semble logique, mais c’est tellement con et je m’en tape la tête contre les murs >_<.
C’est comme vider un nœud de ses éléments :
element.innerHTML = "" // trèèès lent.
// très rapide !
while (elementfirstChild) {
elementremoveChild(element.firstChild);
}
=_=