SlideShare une entreprise Scribd logo
1  sur  18
Télécharger pour lire hors ligne
Bonnes pratiques, optimisations et outils
PERFORMANCES
CSS
Can I haz speed?
RENDU PAR LE
NAVIGATEURPetit rappel sur le parsing, le layout, les layers et le painting
ANIMATIONSForcer l'utilisation du GPU: "Hack" translate3d
.view { 
  ‐webkit‐transform: translateZ(0); 
}
ANIMATIONS (2)Appliquer la propriété backface-visibilitysur
les div qui prennent tout l'écran/qui cachent le reste
.view { 
  backface‐visibility: hidden; 
  ‐webkit‐backface‐visibility: hidden; 
}
=> De 10 à 60 fps sur une tablette Nexus pour un fading
ANIMATIONS (3)Aidez le navigateur :
Propriété CSS will-change
.slide { 
  will‐change: transform; 
}
A l'avenir, l'API Web Animations pourra servir
ASSETSImages énormes + device non retina = ça rame
Utilisez des media query:
@media 
(‐webkit‐min‐device‐pixel‐ratio: 2), 
(min‐resolution: 192dpi) { 
    /* Retina‐specific stuff here */ 
}
ou des mixins pour sass: https://github.com/kaelig/hidpi
ASSETS (2)Au premier affichage d'un écran, les images (notamment
backgrounds, boutons...) ne sont pas forcéments prêts
Forcer le navigateur à précharger les images:
var myImage = new Image(100, 200); 
myImage.src = 'picture.jpg';
JAVASCRIPT
Can I haz speed too?
LEAKSPas de new, malloc !=ne pas savoir comment on gère
la mémoire
Identifiez bien qui est le propriétaire de chaque objet
delete/ null-ifiez les objets pour qu'ils soient
garbage collectés
class SoundManager { 
  constructor() { 
    this._sounds = {}; 
  } 
  playAudio(url) { 
    this._sounds[url] = new Howler({...}); 
  } 
  releaseGarbage(url) { 
    for(var p in this._sounds) { 
      if (this._sounds[p].canBeDestroyed()) { 
        delete this._sounds[p]; 
      } 
    } 
  } 
}
On libère régulièrement les objets inutilisés
LEAKS (2)Attention aux event listeners! Si vous
addEventListener, assurez vous que:
Le propriétaire/élement DOM est supprimé
ou que vous removeEventListener
class MyComponent { 
  updateOrientation(event) { 
    // Whatever 
  } 
  componentDidMount(url) { 
    window.addEventListener("deviceorientation", this.updateOrientation, false); 
  } 
  componentWillUnmount(url) { 
    window.removeEventListener("deviceorientation", this.updateOrientation); 
  } 
}
angular.module('myApp') 
.controller('MyCtrl', function ($scope, ...) { 
  var checkInterval = $interval(checkProgress, 700); 
  function checkProgress() { 
    // Whatever 
  } 
  $scope.$on('$destroy', function() { 
    $interval.cancel(checkInterval); 
  }); 
}
LE DEBUGGER
CHROME
DEMO TIME
CLICK ME COMPUTE
"Click me" ajoute des objets => Heap timeline, Heap snapshot
"Compute" fait un long calcul => Profiler (Tree & Flamechart)
Premature optimization is
the root of all evil
- Donald Knuth
Ne soyez pas
prématurement
pessimistes

Contenu connexe

En vedette

IBM JavaOne Community Keynote 2015: Cask Strength Java Aged 20 years
IBM JavaOne Community Keynote 2015: Cask Strength Java  Aged 20 yearsIBM JavaOne Community Keynote 2015: Cask Strength Java  Aged 20 years
IBM JavaOne Community Keynote 2015: Cask Strength Java Aged 20 yearsJohn Duimovich
 
Seo upgrade - аналитика накрутки пф
Seo upgrade - аналитика накрутки пфSeo upgrade - аналитика накрутки пф
Seo upgrade - аналитика накрутки пфSergey Yurkov
 
What We Have Learned
What We Have LearnedWhat We Have Learned
What We Have Learnedtfondren
 
κλασικη εποχη
κλασικη εποχηκλασικη εποχη
κλασικη εποχηbasinari
 
Psych 1 clinical disorders
Psych 1 clinical disordersPsych 1 clinical disorders
Psych 1 clinical disorderstlassiter80
 
Levi and Poppy
Levi and PoppyLevi and Poppy
Levi and PoppyMrCarr
 
Ski Pro Fall 2015 Digital File
Ski Pro Fall 2015 Digital FileSki Pro Fall 2015 Digital File
Ski Pro Fall 2015 Digital FileAllison Sharpe
 
Is your lunch box making you sick
Is your lunch box making you sickIs your lunch box making you sick
Is your lunch box making you sickmanojitsingh
 
que es psoriasis
 que es psoriasis que es psoriasis
que es psoriasismeyrosama
 
Ahma Optima Oy Meriturvallisuuseminaari K Laakso
Ahma Optima Oy Meriturvallisuuseminaari K LaaksoAhma Optima Oy Meriturvallisuuseminaari K Laakso
Ahma Optima Oy Meriturvallisuuseminaari K LaaksoKimmo Laakso
 

En vedette (13)

IBM JavaOne Community Keynote 2015: Cask Strength Java Aged 20 years
IBM JavaOne Community Keynote 2015: Cask Strength Java  Aged 20 yearsIBM JavaOne Community Keynote 2015: Cask Strength Java  Aged 20 years
IBM JavaOne Community Keynote 2015: Cask Strength Java Aged 20 years
 
Powerpoint
PowerpointPowerpoint
Powerpoint
 
Resume
ResumeResume
Resume
 
Seo upgrade - аналитика накрутки пф
Seo upgrade - аналитика накрутки пфSeo upgrade - аналитика накрутки пф
Seo upgrade - аналитика накрутки пф
 
What We Have Learned
What We Have LearnedWhat We Have Learned
What We Have Learned
 
κλασικη εποχη
κλασικη εποχηκλασικη εποχη
κλασικη εποχη
 
Psych 1 clinical disorders
Psych 1 clinical disordersPsych 1 clinical disorders
Psych 1 clinical disorders
 
Ignite ETRM in Fintech Publication[4]
Ignite ETRM in Fintech Publication[4]Ignite ETRM in Fintech Publication[4]
Ignite ETRM in Fintech Publication[4]
 
Levi and Poppy
Levi and PoppyLevi and Poppy
Levi and Poppy
 
Ski Pro Fall 2015 Digital File
Ski Pro Fall 2015 Digital FileSki Pro Fall 2015 Digital File
Ski Pro Fall 2015 Digital File
 
Is your lunch box making you sick
Is your lunch box making you sickIs your lunch box making you sick
Is your lunch box making you sick
 
que es psoriasis
 que es psoriasis que es psoriasis
que es psoriasis
 
Ahma Optima Oy Meriturvallisuuseminaari K Laakso
Ahma Optima Oy Meriturvallisuuseminaari K LaaksoAhma Optima Oy Meriturvallisuuseminaari K Laakso
Ahma Optima Oy Meriturvallisuuseminaari K Laakso
 

Similaire à Performances

Codedarmor 2012 - 06/03 - HTML5, CSS3 et Javascript
Codedarmor 2012 - 06/03 - HTML5, CSS3 et JavascriptCodedarmor 2012 - 06/03 - HTML5, CSS3 et Javascript
Codedarmor 2012 - 06/03 - HTML5, CSS3 et Javascriptcodedarmor
 
Mobiz - 2012-11-15 - HTML5, une révolution à plusieurs niveaux
Mobiz - 2012-11-15 - HTML5, une révolution à plusieurs niveauxMobiz - 2012-11-15 - HTML5, une révolution à plusieurs niveaux
Mobiz - 2012-11-15 - HTML5, une révolution à plusieurs niveauxFrédéric Harper
 
[AzureCamp 24 Juin 2014] Azure Media Services par Xavier Pouyat
[AzureCamp 24 Juin 2014] Azure Media Services par Xavier Pouyat[AzureCamp 24 Juin 2014] Azure Media Services par Xavier Pouyat
[AzureCamp 24 Juin 2014] Azure Media Services par Xavier PouyatMicrosoft Technet France
 
Création d'une application html5 utilisant canvas, svg et les animations css3
Création d'une application html5 utilisant canvas, svg et les animations css3Création d'une application html5 utilisant canvas, svg et les animations css3
Création d'une application html5 utilisant canvas, svg et les animations css3davrous
 
Infrastructure agile avec Cloudformation - AWS Summit 2016
Infrastructure agile avec Cloudformation - AWS Summit 2016Infrastructure agile avec Cloudformation - AWS Summit 2016
Infrastructure agile avec Cloudformation - AWS Summit 2016Antoine Guy
 
Cours de Web Design part.1
Cours de Web Design part.1Cours de Web Design part.1
Cours de Web Design part.1MC Casal
 
La mobilité dans Drupal
La mobilité dans DrupalLa mobilité dans Drupal
La mobilité dans DrupalAdyax
 
Glossaire web pour les profanes - Webdesign
Glossaire web pour les profanes - WebdesignGlossaire web pour les profanes - Webdesign
Glossaire web pour les profanes - WebdesignRelax In The Air
 
Kubernetes Meetup Paris #5 - Metriques applicatives k8s
Kubernetes Meetup Paris #5 - Metriques applicatives k8sKubernetes Meetup Paris #5 - Metriques applicatives k8s
Kubernetes Meetup Paris #5 - Metriques applicatives k8sArnaud MAZIN
 
Les défis d’une application mobile multi-périphériques avec HTML5
Les défis d’une application mobile multi-périphériques avec HTML5Les défis d’une application mobile multi-périphériques avec HTML5
Les défis d’une application mobile multi-périphériques avec HTML5davrous
 
Expresso Rennes Atalante - Html5 / Css3D - 17 sept. 2013
Expresso Rennes Atalante - Html5 / Css3D - 17 sept. 2013Expresso Rennes Atalante - Html5 / Css3D - 17 sept. 2013
Expresso Rennes Atalante - Html5 / Css3D - 17 sept. 2013MBA Multimedia
 
HTML5/CSS3D - Expresso Rennes Atalante - 17 sept. 2013
HTML5/CSS3D - Expresso Rennes Atalante - 17 sept. 2013HTML5/CSS3D - Expresso Rennes Atalante - 17 sept. 2013
HTML5/CSS3D - Expresso Rennes Atalante - 17 sept. 2013Julien LE THUAUT
 
Paris ember js lab #6 - Taking over server-side rendering websites
Paris ember js lab #6 - Taking over server-side rendering websitesParis ember js lab #6 - Taking over server-side rendering websites
Paris ember js lab #6 - Taking over server-side rendering websitesGuillaume Gérard
 
Css.more.or.less
Css.more.or.lessCss.more.or.less
Css.more.or.lessVISEO
 
Créer des jeux 3D pour le web et pour le Windows Store avec BabylonJS/WebGL
Créer des jeux 3D pour le web et pour le Windows Store avec BabylonJS/WebGL Créer des jeux 3D pour le web et pour le Windows Store avec BabylonJS/WebGL
Créer des jeux 3D pour le web et pour le Windows Store avec BabylonJS/WebGL Microsoft
 
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseries
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseriesBreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseries
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseriesXavier MARIN
 
Développez dans le futur, dès maintenant !
Développez dans le futur, dès maintenant !Développez dans le futur, dès maintenant !
Développez dans le futur, dès maintenant !matparisot
 
Développez dans le futur, dès maintenant !
Développez dans le futur, dès maintenant !Développez dans le futur, dès maintenant !
Développez dans le futur, dès maintenant !Mathieu Parisot
 

Similaire à Performances (20)

Codedarmor 2012 - 06/03 - HTML5, CSS3 et Javascript
Codedarmor 2012 - 06/03 - HTML5, CSS3 et JavascriptCodedarmor 2012 - 06/03 - HTML5, CSS3 et Javascript
Codedarmor 2012 - 06/03 - HTML5, CSS3 et Javascript
 
Mobiz - 2012-11-15 - HTML5, une révolution à plusieurs niveaux
Mobiz - 2012-11-15 - HTML5, une révolution à plusieurs niveauxMobiz - 2012-11-15 - HTML5, une révolution à plusieurs niveaux
Mobiz - 2012-11-15 - HTML5, une révolution à plusieurs niveaux
 
[AzureCamp 24 Juin 2014] Azure Media Services par Xavier Pouyat
[AzureCamp 24 Juin 2014] Azure Media Services par Xavier Pouyat[AzureCamp 24 Juin 2014] Azure Media Services par Xavier Pouyat
[AzureCamp 24 Juin 2014] Azure Media Services par Xavier Pouyat
 
Création d'une application html5 utilisant canvas, svg et les animations css3
Création d'une application html5 utilisant canvas, svg et les animations css3Création d'une application html5 utilisant canvas, svg et les animations css3
Création d'une application html5 utilisant canvas, svg et les animations css3
 
Infrastructure agile avec Cloudformation - AWS Summit 2016
Infrastructure agile avec Cloudformation - AWS Summit 2016Infrastructure agile avec Cloudformation - AWS Summit 2016
Infrastructure agile avec Cloudformation - AWS Summit 2016
 
Webdesign, UX et UCD #1
Webdesign, UX et UCD #1Webdesign, UX et UCD #1
Webdesign, UX et UCD #1
 
Cours de Web Design part.1
Cours de Web Design part.1Cours de Web Design part.1
Cours de Web Design part.1
 
La mobilité dans Drupal
La mobilité dans DrupalLa mobilité dans Drupal
La mobilité dans Drupal
 
Glossaire web pour les profanes - Webdesign
Glossaire web pour les profanes - WebdesignGlossaire web pour les profanes - Webdesign
Glossaire web pour les profanes - Webdesign
 
Kubernetes Meetup Paris #5 - Metriques applicatives k8s
Kubernetes Meetup Paris #5 - Metriques applicatives k8sKubernetes Meetup Paris #5 - Metriques applicatives k8s
Kubernetes Meetup Paris #5 - Metriques applicatives k8s
 
Les défis d’une application mobile multi-périphériques avec HTML5
Les défis d’une application mobile multi-périphériques avec HTML5Les défis d’une application mobile multi-périphériques avec HTML5
Les défis d’une application mobile multi-périphériques avec HTML5
 
Expresso Rennes Atalante - Html5 / Css3D - 17 sept. 2013
Expresso Rennes Atalante - Html5 / Css3D - 17 sept. 2013Expresso Rennes Atalante - Html5 / Css3D - 17 sept. 2013
Expresso Rennes Atalante - Html5 / Css3D - 17 sept. 2013
 
HTML5/CSS3D - Expresso Rennes Atalante - 17 sept. 2013
HTML5/CSS3D - Expresso Rennes Atalante - 17 sept. 2013HTML5/CSS3D - Expresso Rennes Atalante - 17 sept. 2013
HTML5/CSS3D - Expresso Rennes Atalante - 17 sept. 2013
 
Paris ember js lab #6 - Taking over server-side rendering websites
Paris ember js lab #6 - Taking over server-side rendering websitesParis ember js lab #6 - Taking over server-side rendering websites
Paris ember js lab #6 - Taking over server-side rendering websites
 
Plasticité2015 technovf
Plasticité2015 technovfPlasticité2015 technovf
Plasticité2015 technovf
 
Css.more.or.less
Css.more.or.lessCss.more.or.less
Css.more.or.less
 
Créer des jeux 3D pour le web et pour le Windows Store avec BabylonJS/WebGL
Créer des jeux 3D pour le web et pour le Windows Store avec BabylonJS/WebGL Créer des jeux 3D pour le web et pour le Windows Store avec BabylonJS/WebGL
Créer des jeux 3D pour le web et pour le Windows Store avec BabylonJS/WebGL
 
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseries
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseriesBreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseries
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseries
 
Développez dans le futur, dès maintenant !
Développez dans le futur, dès maintenant !Développez dans le futur, dès maintenant !
Développez dans le futur, dès maintenant !
 
Développez dans le futur, dès maintenant !
Développez dans le futur, dès maintenant !Développez dans le futur, dès maintenant !
Développez dans le futur, dès maintenant !
 

Performances