IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Facebook Discussion :

Facebook optimise le bytecode d'Android avec Redex


Sujet :

Facebook

  1. #1
    Membre chevronné

    Inscrit en
    Août 2009
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 41
    Points : 2 144
    Points
    2 144
    Par défaut Facebook optimise le bytecode d'Android avec Redex
    Facebook voudrait se servir de son projet Redex
    pour optimiser le bytecode d’Android

    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.

    Nom : toph.jpg
Affichages : 2684
Taille : 43,2 Ko

    Source : blog Facebook

    Et vous?

    Que pensez-vous du projet Redex?

    Voir aussi

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

  2. #2
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 690
    Points : 20 211
    Points
    20 211
    Par défaut
    Quand on voit la taille de leur applications (44mo pour facebook ) ca m’étonne pas qu'ils cherchent à les optimiser
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Candidat au Club
    Inscrit en
    Avril 2009
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 2
    Points : 4
    Points
    4
    Par défaut Optimisation d'OS Android
    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 ?

  4. #4
    Membre actif Avatar de IsiTech
    Homme Profil pro
    Développeur mobile
    Inscrit en
    Janvier 2012
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur mobile

    Informations forums :
    Inscription : Janvier 2012
    Messages : 105
    Points : 268
    Points
    268
    Par défaut
    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.

  5. #5
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 690
    Points : 20 211
    Points
    20 211
    Par défaut
    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 .
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Membre habitué

    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2007
    Messages
    93
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 93
    Points : 145
    Points
    145
    Billets dans le blog
    1
    Par défaut
    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)

Discussions similaires

  1. Facebook dévoile sa plateforme de sécurité ThreatData
    Par Francis Walter dans le forum Sécurité
    Réponses: 4
    Dernier message: 28/03/2014, 13h22
  2. Facebook lance une plateforme de développement mobile en HTML5
    Par Idelways dans le forum APIs Réseaux sociaux
    Réponses: 0
    Dernier message: 11/10/2011, 12h59
  3. Réponses: 0
    Dernier message: 11/10/2011, 12h59
  4. Réponses: 3
    Dernier message: 01/06/2010, 17h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo