Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Facebook voudrait se servir de son projet Redex
Pour optimiser le bytecode d'Android

Le , par saigone

58PARTAGES

5  0 
Les ingénieurs de Facebook ont annoncé avoir optimisé le bytecode d’Android via le projet Redex. Les utilisateurs qui sollicitent la plateforme Facebook ne cessent d’augmenter. Maintenir la fluidité dans l’échange et le traitement de données est de la responsabilité des ingénieurs du géant des réseaux sociaux.

La plateforme Android est l’une des plateformes qui disposent du plus de diversité en terme de terminaux mobiles. Améliorer l’efficacité de cette plateforme peut s’avérer bénéfique pour des millions d’utilisateurs. C’est dans ce but que les ingénieurs de Facebook ont mis sur pieds le projet Redex. Redex est un tunnel d’optimisation des fichiers « .dex » d’Android. Il a pour but d’appliquer une série de transformations personnalisables aux fichiers sources .dex afin de les optimiser avec leur insertion dans l’APK.

L’idée première lors de la mise sur pieds du projet redex était de situer les procédures d’optimisation entre la création des fichiers .dex et l’assemblage des fichiers .dex dans l’APK. L’avantage de cette approche est qu’elle offre une capacité maximale pour l’optimisation d’interclasses globales sur l’ensemble du binaire. Les ingénieurs de Facebook affirment avoir opté pour les travaux d’amélioration plutôt sur le dex bytecode que sur celui du Java bytecode à cause de certaines transformations qui ne peuvent être effectuées Post-Dxing.

Afin de permettre à d’autres ingénieurs d’optimiser le bytecode, les ingénieurs de Facebook ont souhaité mettre en place une architecture bénéfique pour tous. Pour ce faire ils ont organisé le tunnel d’optimisation en série de stages. Chaque stage pouvant ainsi être repensé et amélioré de manière unique. Cette approche offre au projet une certaine flexibilité permettant à plusieurs ingénieurs d’optimiser Redex et en parallèle. Le tunnel Redex a été conçu pour permettre tout type de transformation de fichiers .dex . Ci-dessous une liste (non exhaustive) des mécanismes mis en place.

  • Réduction du bytecode

Il a consisté à optimiser les stages ajoutés au tunnel redex afin de réduire la taille des fichiers .dex

  • Minification et compression

Généralement utilisé par les langages web (HTML, etc.) pour réduire les octets. Ce mécanisme consistera à remplacer les longues chaines de caractères par des plus courtes de réserve afin de réduire les octets dédiés aux chaines sans affecter la fonctionnalité de l’application.

  • Élimination du code mort

Ce mécanisme quant à lui consiste a éliminé le code mort ou inaccessible accumulé dans le code source. Ce mécanisme à l’apparence facile nécessite une certaine attention quant aux classes et fonctions qui seront manipulées.


Source : blog Facebook

Et vous?

Que pensez-vous du projet Redex?

Voir aussi

Forum Facebook
la Rubrique Android ( Cours, Tutoriels, FAQ, etc.)

Une erreur dans cette actualité ? Signalez-le nous !

Avatar de grunk
Modérateur https://www.developpez.com
Le 05/10/2015 à 16:20
Quand on voit la taille de leur applications (44mo pour facebook ) ca m’étonne pas qu'ils cherchent à les optimiser
0  0 
Avatar de prince-sat
Candidat au Club https://www.developpez.com
Le 06/10/2015 à 0:50
Salut à tous,
Beaucoup des fabricants des smartphones ont développés leurs couches spécifique au-dessus du système Android pour mieux l’optimiser et mieux gérer les ressources et les mémoires vives, est ce que Facebook essai d’optimiser le système d’exploitation ou le code de développement de leurs application ?
0  0 
Avatar de IsiTech
Membre actif https://www.developpez.com
Le 06/10/2015 à 9:41
Citation Envoyé par grunk Voir le message
Quand on voit la taille de leur applications (44mo pour facebook ) ca m’étonne pas qu'ils cherchent à les optimiser
44Mo ça fait beaucoup. J'ai travaillé sur une grosse application avec pas mal de bibliothèques externes et on est "seulement" monté à 13Mo. Je me demande ce qui pèse aussi lourd dans leur application.

Citation Envoyé par prince-sat Voir le message
Salut à tous,
Beaucoup des fabricants des smartphones ont développés leurs couches spécifique au-dessus du système Android pour mieux l’optimiser et mieux gérer les ressources et les mémoires vives, est ce que Facebook essai d’optimiser le système d’exploitation ou le code de développement de leurs application ?
Facebook cherche à optimiser le code de leur application, ils n'ont aucun moyen de toucher au système d'exploitation.
0  0 
Avatar de grunk
Modérateur https://www.developpez.com
Le 06/10/2015 à 12:41
Citation Envoyé par IsiTech Voir le message
Je me demande ce qui pèse aussi lourd dans leur application.
J'ai regardé l'apk par curiosité. Décompressé ca prend ~150 Mo , Y'a 10Mo de lib jni , 37Mo de ressources (1.5Mo rien que pour les traductions) et 80Mo de dex. Du coup ca prend tout son sens de vouloir optimiser tout ça. Par contre j'ai du mal à comprendre ce que fait cette appli facebook pour avoir autant de code O_o .
0  0 
Avatar de ddrmax
Membre habitué https://www.developpez.com
Le 06/10/2015 à 13:09
Pour info le fait que l'app fait 46Mo est que de base il y a beaucoup de choses qui sont peu compresables.
Pour info l'apk V50 fait 46Mo pour Android 5.0
Décompressée elle fait 127Mo dont:
  • ressources (xml/images) :14Mo
  • librairies tierces: 10Mo
  • assets : 14Mo (dont 11Mo de strings dédiée au multi langage)
  • dex : 80Mo
  • resources.arsc : 8Mo


Ici les dex représentent 70% de la taille décompressée de l'apk et environ 55% compressée (25Mo)

Donc une optimisation des dex est bienvenue (sachant que facebook préfère réinventer la roue que de rajouter des librairies de support tierces)
sachant qu'il ont 11 fichiers dex on peut estimer que le code source contient environ 655000 fonctions (multidex obligatoire quand on dépasse les 65535 fonctions et il y a génération d'un nouveau fichier Dex des qu'on dépasse a chaque fois la limite dépassée).
source:https://developer.android.com/tools/.../multidex.html

pour info 75% du code source doit provenir d'un fork de web-kit / chromium for android)
0  0