• Home
  • A Propos
  • Greasemonkey
  • HowTo GitHub
  • Performance JavaScript
  • SharepointPlus

18

Nov

Performance JavaScript

Posté par Aymeric  le dimanche 18 novembre 2012 Publié dans Kodono

Ci-dessous quelques tests de performance en JavaScript afin de voir quelles pratiques sont les plus rapides. A noter que les différences d’exécution sont parfois quasi-imperceptibles, mais peuvent avoir une certaine incidence si vous devez répéter une opération de très nombreuses fois.

1) Il est plus rapide d’utiliser === quand on compare un boolean ou un number avec “”. En effet la comparaison avec null, 0, true, false ou un string se fait avec une conversion implicite (le test sur jspref.com) :

var test = true;
if (myvar === true) {} // plus rapide

2) Pour convertir une string en chiffre il est plus rapide d’utiliser 1*string (test sur sperf.com) :

var test="2";
console.log(1*test + 3); // plus rapide
console.log(parseInt(test) + 3); // plus lent

3) Assigner la valeur à un tableau directement plutôt qu’utiliser Array.push (test sur jsperf.com) :

// plus lent
for (i = 0; i < len; i++) itemsCopy.push(items[i])

// plus rapide
for (i = 0; i < len; i++) itemsCopy[i] = items[i]

4) Utiliser String.indexOf lorsque vous voulez savoir si une sous-chaine appartient à une plus grande chaine (test sur jsperf.com) :

if ("this is a test perf".indexOf("perf") > -1) {} // plus rapide

5) Traiter un tableau par la fin (test sur jsperf.com) :

for (var i=arr.length; i--;) {} // plus rapide

for (var i=0,len=arr.length; i<len; i++) {} // légèrement plus lent

6) Avec jQuery il est beaucoup plus rapide d’utiliser .find() que d’insérer le sous sélecteur dans le sélecteur principal (test sur jsperf.com) :

$('#mynode').find('div'); // plus rapide
$('#mynode div'); // plus lent

Me Suivre

Suivre @aymkdn

Catégories

  • À bookmarker
  • Android
  • Application
  • Astuce
  • Debug
  • Divers
  • English
  • Français
  • Images
  • Linux
  • MacOS
  • Navigateur
  • Niveau débutant
  • Niveau expert
  • Niveau intermédiaire
  • Partage
  • Performance
  • Programmation
  • Sécurité
  • Téléphonie
  • Vidéo
  • Web Design
  • Windows

Étiquettes

android Application Astuce astuces convertisseur css debian Debug débutant email english facebook firefox Français github IE Images intermédiaire internet explorer javascript jquery Linux mysql Navigateur Niveau débutant Niveau expert Niveau intermédiaire Nokia Partage Performance php Programmation regexp sharepoint Sharepoint 2013 sharepointplus Sécurité traitement vidéo téléphone Téléphonie vidéo Web Design Windows wordpress À bookmarker

Méta

  • Flux RSS
  • Administration

Recent Entries

  • Freebox Player API
  • Windows Movie Maker pour Windows 7, Windows 8.1 et Windows 10
  • Mise à jour d’un serveur Kimsufi (OVH) depuis Debian 9 (Stretch) vers Debian 10 (Buster)
  • Connectivity issue with Qualcomm QCA61x4A 802.11ac in 5GHz
  • Let’s Encrypt Certificate: how to remove a domain from a certname that contains several domains
  • Upgrade from MySQL (5.6.40 – Debian 9.12) to MariaDB
  • Sharepoint error message “Invalid URL argument” with WebPartPages
  • chrome-search://local-ntp/local-ntp.html makes Chrome unresponsive
  • Our system has detected an unusual rate of unsolicited mail originating from your IP address
  • Sharepoint REST API to index a column or delete a column and more…

Recent Comments

  • Aymeric in Utiliser un email alias avec GMail [Astuce]
  • Chris in Utiliser un email alias avec GMail [Astuce]
  • alex91 in Create a self-signed certificate for localhost tes…
  • Coolwriter in Bien configurer eMule [Astuces]
  • Nico in Bien configurer eMule [Astuces]
  • Jim1988 in Permettre le retour en arrière sur une page PHP a…
  • rikimaru11273 in Bien configurer eMule [Astuces]
  • Aymeric in Execute an action before saving a form but after t…
  • liriarte in Execute an action before saving a form but after t…
  • Aymeric in Contrôler la Freebox avec Google Home
  • Random Selection of Posts

    • Quickly find if an object is an array [JavaScript]
    • For the error “Unknown OS character set ‘ISO-8859-15′”
    • CSS3 PIE pour créer un border-radius sur IE [webdesign]
    • Deep clone an object in JavaScript
    • Incruster des sous-titres dans une vidéo
    • Revenir à l’actualité récente de Facebook suite à la mise à jour [Astuce]
    • Mise à jour d’un serveur Kimsufi (OVH) depuis Debian 8 (Jessie) vers Debian 9 (Stretch)
© 2008 Kodono is proudly powered by WordPress
Theme designed by Roam2Rome