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

Langages de programmation Discussion :

Langages et bibliothèques légères


Sujet :

Langages de programmation

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 19
    Points : 17
    Points
    17
    Par défaut Langages et bibliothèques légères
    Bonjour,

    Aujourd'hui, on parle beaucoup de utorrent à cause de son rachat par bitTorrent. J'ai utilisé longuement ce logiciel et j'ai toujours été agréablement surpris par sa faible taille, sa rapidité, sa faible consommation CPU et mémoire et malgré tout ça il avait en plus un grand nombre de fonctionnalités.
    Du coup, je me suis retrouvé à aller consulter le lien wikipedia de utorrent (http://fr.wikipedia.org/wiki/Utorrent) et j'y ai lu ça :

    Composé d'un seul fichier exécutable de 170 Kilo-octet (aucune installation n'est requise), μTorrent est un client extrêmement compact. Cette petite taille a pu être atteinte en évitant d'utiliser des bibliothèques massives (telle que la bibliothèque C++ standard et le stream facilities) et en créant des substituts écrits spécialement pour ce programme. Le fichier exécutable est également compressé à un ratio de 50% en utilisant PECompact.
    J'ai été assez surpris d'apprendre que la bibliothèque standard avait pour défaut de faire des logiciels "lourds". En plus, quelle bibliothèque les concepteurs ont-ils utilisé pour limiter le poids de leur logiciel? Ont-ils seulement utilisé le C++? Est-ce que la bibliothèque standard provoque aussi une perte de performance ou/et une grosse utilisation mémoire? qu'est-ce que le stream facilities?

    En fait, j'aimerais comprendre quelles sont les méthodes les plus adaptées pour écrire un logiciel le moins lourd (qui prend le moins de ressources CPU, mémoire et disque) et le plus rapide possible (là, je pense que je suis un peu redondant parce qu'un programme rapide doit automatiquement utiliser moins de ressource CPU qu'un moins rapide...).
    Quels sont les langages et les bibliothèques les plus adpatés à l'écriture d'un programme "léger"? (Sans parler de l'assembleur...)

  2. #2
    Membre éprouvé Avatar de Caine
    Inscrit en
    Mai 2004
    Messages
    1 028
    Détails du profil
    Informations personnelles :
    Âge : 52

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 028
    Points : 1 122
    Points
    1 122
    Par défaut
    Le problème des bibliothèques C++/C et des compilateurs c'est que même si tu n'utilises qu'une fonction de la bibliothèque, le linker te la remonte en entier.

    C'était du moins vrai à une époque. Je crois (sans garanti) que ça c'est amélioré.

    Par définition, les flux, les fonctions génériques...sont plus lourdes en conséquences (cpu, mémoire) que le code spécifique. Mais elles ont l'avantage par contre (lorsque c'est bien utiliser) de réduire la taille de l'exécutable.

    Après, à moins que l'auteur ne donne les infos, ça va être dur de savoir comment il a fait.

    Ca impressionne

  3. #3
    Membre confirmé Avatar de Lunixinclar
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2006
    Messages
    416
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 416
    Points : 489
    Points
    489
    Par défaut
    En fait, j'aimerais comprendre quelles sont les méthodes les plus adaptées pour écrire un logiciel le moins lourd (qui prend le moins de ressources CPU, mémoire et disque) et le plus rapide possible.
    C'est principalement une question d' algorithme. J'ai vu des programmes VB tourner plus vite que les mêmes en C ou en assembleur. L' optimisation de la taille de l' exe vient après.

    Ceci dit c'est vrai que les fonctions standard ne sont pas forcément les plus rapides. Je passe la moitié de mon temps à les mesurer, l' autre moitié à les ré-écrire. Résultat: des vitesses jusqu'à 12 fois supérieures.

    En C, l'intégralité de la lib n'est pas incluse, mais le header, oui. C'est très simple: quand on écrit #include <stdio.h> le préprocesseur ne réfléchit pas et se borne à copier/coller le contenu du fichier stdio.h exactement comme s'il était écrit dans le programme. Et substitue les macros, qui dupliquent le code rendant le code plus gros... Ensuite seules les fonctions utilisées sont effectivement incluses à l' édition de liens.

    Pour avoir de bonnes performances il faut partir d'un bon algorithme, puis faire du profilage de code, pour identifier les parties les plus couteuses. En général un programme passe 90% de son temps sur une seule partie du code. Celle-là mérite alors d'être écrite en assembleur.

  4. #4
    Membre Expert

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Juin 2003
    Messages
    4 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 506
    Points : 5 723
    Points
    5 723
    Par défaut
    quelle bibliothèque les concepteurs ont-ils utilisé pour limiter le poids de leur logiciel?
    Je ne sais pas exactement ce que tu entends par poid du logiciel mais une technique consiste à utiliser des library partagées(dll/ISO) et à régler comme il faut les options d'optimisations dans ton EDI.

Discussions similaires

  1. Bibliothèque légère pour stocker des données de maillage
    Par Takido dans le forum Bibliothèques
    Réponses: 1
    Dernier message: 25/03/2014, 14h51
  2. Sortie de Underscore 1.4.0, la bibliothèque légère et performante
    Par vermine dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 30/01/2013, 11h40
  3. Langage et bibliothèques pour traitement audio
    Par kalipka dans le forum Langages de programmation
    Réponses: 0
    Dernier message: 26/11/2008, 18h52
  4. [Recherche] Une Bibliothèque légère HBITMAP -> Fichier PNG
    Par prgasp77 dans le forum Bibliothèques
    Réponses: 5
    Dernier message: 15/06/2007, 16h55
  5. Bibliothèque utilisable par tous langages ?
    Par @v@lon dans le forum Langages de programmation
    Réponses: 8
    Dernier message: 03/04/2007, 22h25

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