SlideShare uma empresa Scribd logo
1 de 34
Baixar para ler offline
Comment	j’ai	diminué	la
consommation	d'énergie
d'une	application	native
Google	Android	(et
pourquoi)	?
Olivier	Philippot	-	@simplygreenit
Who	I	am?
CTO	Greenspector
@simplygreenit
Analyse	de	l'interface	Android	native
(System	UI)	pour	un	constructeur	de
smartphone
Systeme	UI?
Il	s'agit	de	l'interface	graphique	d'Android	intégrant	les	fonctionnalités	de	bases	*
*	4	milliards	d'utilisateur
Méthodologie	Greenspector
Se	focaliser	sur	les	"gros	cailloux"	:
Mesure	des	fonctionnalités	(les	tests	fonctionnels	existent	!)
Approche	progressive	et	top-down
Optimisation	du	temps	du	développeur
Explications	:
Reference	:	Smartphone	en	inactivité
Métrique	:	vitesse	de	décharge
(uAh/s)
Un	impact	fort	de	la	barre	de	statut
X3	sur	la	consommation	d'énergie	du
téléphone	en	inactivité
Autant	qu'une	video	(mais	sur
quelques	secondes)
Est-que	cette	fonctionnalité	mérite	ce	coût
?
Mesure	de	la	consommation	des
fonctionnalités
Et	maintenant,	pourquoi	en	est-on	là	?
On	suit	la	méthodologie,	et	on	profile	*...
Faits	notables	:
8	coeurs	sollicités	pendant	toutes	les	actions	!
Des	"glitchs"	hors	des	actions	(et	pendant)
Une	fermeture	aussi	couteuse	que	l'affichage
*	Usage	de	Systrace	d'Android
Trop	d'événements
Les	événements	systèmes	(Wifi,	Batterie...)	génèrent	des	traitements
graphiques	inutiles	(34	appels	en	quelques	secondes)
L'interface	est	traitée	à	60	FPS	(même	performance	que	les	jeux)	et	crée	des
appels	de	fonctions	importants	(>	1000)
Un	peu	plus	d'explication	sur	le
phénomène
Trop	d'évènement	+	vues	lourdes
Quels	impacts	au	final	?
L'impact	est	uniquement	sur	l'autonomie
batterie	?
Oui	mais	l'impact	va	plus	loin	:
Usage	des	8	coeurs	qui	ne	laisse	pas	la	place	aux	autres	applications	>
Obsolescence
Logiciel	adapté	à	des	plateformes	High	Tech	qui	laisse	de	côté	les	plateformes
plus	anciennes	>	Exclusion
Sollicitation	de	la	batterie	qui	diminue	sa	durée	de	vie	>	Obscolescence
Rejet	de	l'application	>	Gaspillage	de	Jour-Homme	de	développement
Corrections
2	jours	de	correction	pour	une
amélioration	notable
Exemple	de	correction	limitant	l'impact	des	events
public void setIsAirplaneMode(IconState icon) {
// Greenspector-UpdateReduce: We have to check if the airplane mode has changed
if (mInfo.airplaneModeEnabled == icon.visible) return;
mInfo.airplaneModeEnabled = icon.visible;
refreshState(mInfo);
}
Pour	des	gains	globaux	non	négligeables
Amélioration	globale	de	l'application
Exemple	:	moins	de	pression	mémoire	(Moins	de	GC)
Pourquoi	en	est-on	à	cette	situation	?
Recherche	du	framework	ideal,	et	pas
le	temps	de	maitriser	le	nouveau
framework
Effet	rebond.	Par	exemple,	l'event
programming	est	le	nouveau	polling
programming
Abstraction	pour	plus	de	flexibilité	mais
perte	de	contrôle	du	comportement
ressource
Silver	bullet	et	effet	rebond
There	is	no	doubt	that	the	grail	of
efficiency	leads	to	abuse.	Programmers
waste	enormous	amounts	of	time	thinking
about,	or	worrying	about,	the	speed	of
noncritical	parts	of	their	programs	[...]	We
should	forget	about	small	efficiencies,	say
about	97%	of	the	time:	premature
optimization	is	the	root	of	all	evil.	Yet	we
should	not	pass	up	our	opportunities	in
that	critical	3%.
Donald	Knuth	-	1974
"premature	optimization	is	the	root	of	all
evil"	?
Mesurer,	Mesurer	et	Mesurer
Efficient	?
Métrique	d'efficience	(par	unité
fonctionnelle)
Revenons	dans	notre	monde	(1/2)
*	Flame	Graph	Netflix
Revenons	dans	notre	monde	(2/2)
*	Profiling	Android
By	beagleboard.org	-
http://beagleboard.org/hardware,	CC	BY-
SA	3.0,
https://commons.wikimedia.org/w/index.php?
curid=5733966
L'énergie	comme	une	métrique	de
pilotage
Des	architectures	logicielles	et	matérielles
complexes	à	maitriser	en	terme
d'efficience
Car	hétérogénes	:	CPU,	GPU,	DSP,
FPGA...
Donc,	difficile	à	mesurer	avec	des
métriques	classiques
Tous	les	composants	nécessitent	de
l'énergie.
L'énergie	est	une	métrique	globale	et
permet	de	controler	l'ensemble.
Comment	fait	t'on	maintenant	?	Notion	de
budget
Exemple	de	budget	dans	la	performance
Comment	mettre	un	un	budget	en	place	?
Mise	en	place	d'un	budget	énergétique	de
x2	(par	rapport	à	la	référence)
En	bleu	:	le	développeur	ne	peut	rien,	à
moins	de	travailler	sur	l'OS	et	le	matériel
En	rouge	:	le	hors	budget
A	valider	sur	des	devices	réels	et
représentatifs.
Mise	en	place	de	budget	!
Une	implication	de	toutes	les	parties
prenantes
Actions	possibles	en	cas	de	dépassement
Identification	d’un	potentiel	bug
Optimisation	du	code
Remise	en	question	d’une	librairie
Simplification	de	l’UX	ou	du	besoin
Augmentation	du	budget	et	diminution	du	budget	d’une	autre	fonction
L'éco-conception	logicielle	apporte	des
gains	réels.
Les	gains	se	répercutent	sur	tout	le	cycle
de	vie.
C'est	un	domaine	complémentaire	à
d'autres.
La	dette	est	grande	et	il	est	urgent	d'agir	à
tous	les	niveaux	!
Breizhcamp 2017 - Comment j’ai diminué la consommation d'énergie d'une application native Google Android (et pourquoi) ?

Mais conteúdo relacionado

Semelhante a Breizhcamp 2017 - Comment j’ai diminué la consommation d'énergie d'une application native Google Android (et pourquoi) ?

Introduction à l'ergonomie - Drupal Lyon
Introduction à l'ergonomie - Drupal LyonIntroduction à l'ergonomie - Drupal Lyon
Introduction à l'ergonomie - Drupal LyonOlivier Lorrain
 
Retour d'expérience sur la conception et la construction d'une application ME...
Retour d'expérience sur la conception et la construction d'une application ME...Retour d'expérience sur la conception et la construction d'une application ME...
Retour d'expérience sur la conception et la construction d'une application ME...Microsoft Technet France
 
Android workshop - Bootcamp du Mauriapp Challenge 2016
Android workshop - Bootcamp du Mauriapp Challenge 2016Android workshop - Bootcamp du Mauriapp Challenge 2016
Android workshop - Bootcamp du Mauriapp Challenge 2016Hadina RIMTIC
 
Devops, ça change quoi pour moi développeur ?
Devops, ça change quoi pour moi développeur ?Devops, ça change quoi pour moi développeur ?
Devops, ça change quoi pour moi développeur ?antony_guilloteau
 
Reboot your mobile app or not? - Mobile PM meetup by Thiga (sept 2016)
Reboot your mobile app or not? - Mobile PM meetup by Thiga (sept 2016)Reboot your mobile app or not? - Mobile PM meetup by Thiga (sept 2016)
Reboot your mobile app or not? - Mobile PM meetup by Thiga (sept 2016)Alexandre Takacs
 
Introduction à l'agilité numélink - 24 mai 2012 - #3 etapes proj
Introduction à l'agilité   numélink - 24 mai 2012 - #3 etapes projIntroduction à l'agilité   numélink - 24 mai 2012 - #3 etapes proj
Introduction à l'agilité numélink - 24 mai 2012 - #3 etapes projagnes_crepet
 
SymBiOT-X portfolio
SymBiOT-X portfolioSymBiOT-X portfolio
SymBiOT-X portfolioSymBiOT-X
 
"Introduction aux Developements iOS" in Three hours
"Introduction aux Developements iOS" in Three hours"Introduction aux Developements iOS" in Three hours
"Introduction aux Developements iOS" in Three hoursLaurent MEURISSE
 
2-historique d'android.pdf
2-historique d'android.pdf2-historique d'android.pdf
2-historique d'android.pdfFethiBenYahia1
 
[WEBINAR] Kaliterre : 10 raisons d'intégrer l'éco-conception logicielle
[WEBINAR] Kaliterre : 10 raisons d'intégrer l'éco-conception logicielle[WEBINAR] Kaliterre : 10 raisons d'intégrer l'éco-conception logicielle
[WEBINAR] Kaliterre : 10 raisons d'intégrer l'éco-conception logicielleGreenLabCenter
 
Meetup #1 low-code, Pourquoi ? Pour qui ? Comment ? Rencontrons-nous !
Meetup #1 low-code, Pourquoi ? Pour qui ? Comment ? Rencontrons-nous !Meetup #1 low-code, Pourquoi ? Pour qui ? Comment ? Rencontrons-nous !
Meetup #1 low-code, Pourquoi ? Pour qui ? Comment ? Rencontrons-nous !Simplicité Software
 
Une application sans framework en 2019
Une application sans framework en 2019Une application sans framework en 2019
Une application sans framework en 2019Rodrigue Villetard
 
Niji rapport de prévention 2021 - android 12
Niji   rapport de prévention 2021 - android 12Niji   rapport de prévention 2021 - android 12
Niji rapport de prévention 2021 - android 12Gabriel DUPONT
 

Semelhante a Breizhcamp 2017 - Comment j’ai diminué la consommation d'énergie d'une application native Google Android (et pourquoi) ? (20)

Introduction à l'ergonomie - Drupal Lyon
Introduction à l'ergonomie - Drupal LyonIntroduction à l'ergonomie - Drupal Lyon
Introduction à l'ergonomie - Drupal Lyon
 
Retour d'expérience sur la conception et la construction d'une application ME...
Retour d'expérience sur la conception et la construction d'une application ME...Retour d'expérience sur la conception et la construction d'une application ME...
Retour d'expérience sur la conception et la construction d'une application ME...
 
Android workshop - Bootcamp du Mauriapp Challenge 2016
Android workshop - Bootcamp du Mauriapp Challenge 2016Android workshop - Bootcamp du Mauriapp Challenge 2016
Android workshop - Bootcamp du Mauriapp Challenge 2016
 
Devops, ça change quoi pour moi développeur ?
Devops, ça change quoi pour moi développeur ?Devops, ça change quoi pour moi développeur ?
Devops, ça change quoi pour moi développeur ?
 
Reboot your mobile app or not? - Mobile PM meetup by Thiga (sept 2016)
Reboot your mobile app or not? - Mobile PM meetup by Thiga (sept 2016)Reboot your mobile app or not? - Mobile PM meetup by Thiga (sept 2016)
Reboot your mobile app or not? - Mobile PM meetup by Thiga (sept 2016)
 
Introduction à l'agilité numélink - 24 mai 2012 - #3 etapes proj
Introduction à l'agilité   numélink - 24 mai 2012 - #3 etapes projIntroduction à l'agilité   numélink - 24 mai 2012 - #3 etapes proj
Introduction à l'agilité numélink - 24 mai 2012 - #3 etapes proj
 
Dimo fiche maint_app_2016_fr_web
Dimo fiche maint_app_2016_fr_webDimo fiche maint_app_2016_fr_web
Dimo fiche maint_app_2016_fr_web
 
#3 etapes projet
#3 etapes projet#3 etapes projet
#3 etapes projet
 
android.pdf
android.pdfandroid.pdf
android.pdf
 
SymBiOT-X portfolio
SymBiOT-X portfolioSymBiOT-X portfolio
SymBiOT-X portfolio
 
"Introduction aux Developements iOS" in Three hours
"Introduction aux Developements iOS" in Three hours"Introduction aux Developements iOS" in Three hours
"Introduction aux Developements iOS" in Three hours
 
2-historique d'android.pdf
2-historique d'android.pdf2-historique d'android.pdf
2-historique d'android.pdf
 
ActionBar Android
ActionBar AndroidActionBar Android
ActionBar Android
 
[WEBINAR] Kaliterre : 10 raisons d'intégrer l'éco-conception logicielle
[WEBINAR] Kaliterre : 10 raisons d'intégrer l'éco-conception logicielle[WEBINAR] Kaliterre : 10 raisons d'intégrer l'éco-conception logicielle
[WEBINAR] Kaliterre : 10 raisons d'intégrer l'éco-conception logicielle
 
Meetup #1 low-code, Pourquoi ? Pour qui ? Comment ? Rencontrons-nous !
Meetup #1 low-code, Pourquoi ? Pour qui ? Comment ? Rencontrons-nous !Meetup #1 low-code, Pourquoi ? Pour qui ? Comment ? Rencontrons-nous !
Meetup #1 low-code, Pourquoi ? Pour qui ? Comment ? Rencontrons-nous !
 
Une application sans framework en 2019
Une application sans framework en 2019Une application sans framework en 2019
Une application sans framework en 2019
 
Etude Stardust
Etude StardustEtude Stardust
Etude Stardust
 
Présentation stardust
Présentation stardustPrésentation stardust
Présentation stardust
 
Niji rapport de prévention 2021 - android 12
Niji   rapport de prévention 2021 - android 12Niji   rapport de prévention 2021 - android 12
Niji rapport de prévention 2021 - android 12
 
Plasticité2014 part4vf
Plasticité2014 part4vfPlasticité2014 part4vf
Plasticité2014 part4vf
 

Mais de Olivier Philippot

DevFest Toulouse - Comment être une développeuse (un développeur) ethique et ...
DevFest Toulouse - Comment être une développeuse (un développeur) ethique et ...DevFest Toulouse - Comment être une développeuse (un développeur) ethique et ...
DevFest Toulouse - Comment être une développeuse (un développeur) ethique et ...Olivier Philippot
 
IotCeption - Energy Measurement of Android Things on Raspberry PI 3 with Ardu...
IotCeption - Energy Measurement of Android Things on Raspberry PI 3 with Ardu...IotCeption - Energy Measurement of Android Things on Raspberry PI 3 with Ardu...
IotCeption - Energy Measurement of Android Things on Raspberry PI 3 with Ardu...Olivier Philippot
 
IotCeption - Energy Measurement of Android Things on Raspberry PI 3 with Ardu...
IotCeption - Energy Measurement of Android Things on Raspberry PI 3 with Ardu...IotCeption - Energy Measurement of Android Things on Raspberry PI 3 with Ardu...
IotCeption - Energy Measurement of Android Things on Raspberry PI 3 with Ardu...Olivier Philippot
 
Green Code Lab Challenge 2015 Subject Details
Green Code Lab Challenge 2015 Subject DetailsGreen Code Lab Challenge 2015 Subject Details
Green Code Lab Challenge 2015 Subject DetailsOlivier Philippot
 
Green it Olivier Philippot usf_2010
Green it Olivier Philippot usf_2010Green it Olivier Philippot usf_2010
Green it Olivier Philippot usf_2010Olivier Philippot
 

Mais de Olivier Philippot (6)

DevFest Toulouse - Comment être une développeuse (un développeur) ethique et ...
DevFest Toulouse - Comment être une développeuse (un développeur) ethique et ...DevFest Toulouse - Comment être une développeuse (un développeur) ethique et ...
DevFest Toulouse - Comment être une développeuse (un développeur) ethique et ...
 
IotCeption - Energy Measurement of Android Things on Raspberry PI 3 with Ardu...
IotCeption - Energy Measurement of Android Things on Raspberry PI 3 with Ardu...IotCeption - Energy Measurement of Android Things on Raspberry PI 3 with Ardu...
IotCeption - Energy Measurement of Android Things on Raspberry PI 3 with Ardu...
 
IotCeption - Energy Measurement of Android Things on Raspberry PI 3 with Ardu...
IotCeption - Energy Measurement of Android Things on Raspberry PI 3 with Ardu...IotCeption - Energy Measurement of Android Things on Raspberry PI 3 with Ardu...
IotCeption - Energy Measurement of Android Things on Raspberry PI 3 with Ardu...
 
Green Code Lab Challenge 2015 Subject Details
Green Code Lab Challenge 2015 Subject DetailsGreen Code Lab Challenge 2015 Subject Details
Green Code Lab Challenge 2015 Subject Details
 
Green it Olivier Philippot usf_2010
Green it Olivier Philippot usf_2010Green it Olivier Philippot usf_2010
Green it Olivier Philippot usf_2010
 
Introduction Green IT
Introduction Green ITIntroduction Green IT
Introduction Green IT
 

Breizhcamp 2017 - Comment j’ai diminué la consommation d'énergie d'une application native Google Android (et pourquoi) ?