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

C++Builder Discussion :

Réduisez jusqu'a plus de 65% la taille de vos exécutables


Sujet :

C++Builder

  1. #1
    Membre chevronné
    Avatar de DjmSoftware
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Mars 2002
    Messages
    1 044
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Responsable de compte
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 044
    Points : 2 187
    Points
    2 187
    Billets dans le blog
    1
    Par défaut Réduisez jusqu'a plus de 65% la taille de vos exécutables
    le compilateur de Borland C++ Builder n'efface pas dans
    les fichiers compilés de type .exe ou .ocx les fonctions exportés
    ce qui a pour effet d'alourdir la taille de l'exe

    de plus il genère également une table de relocation ,inutile dans le cas de fichiers de type .exe ou .ocx

    ces deux tables augmente la taille de votre exécutable d'environ 17%

    j'ai creé un outil permettant a l'aide de UPX de réduire la taille finale de
    l'exécutable de plus de 65 %

    cet outil s'appelle BCBStriper



    BCBStriper peut s'installer dans le menu contextuel de l'explorateur pour les extensions de fichier de type .exe et .ocx
    vous pouvez également l'installer dans la boîte à outils de C++Builder

    option de commande
    • /Install Installation de BCBStriper dans le menu contextuel
      /Uninstall suppression de BCBStriper du menu contextuel
      /FileName Stripping de l'exécutable


    en cas d'intérêt manifeste pour la structure interne des fichiers Exécutables (PE) je rédigerais un tutorial a cet effet

    vous pouvez le télécharger ici http://djmsoftware.developpez.com/Bc...StriperExe.zip
    vous trouverez mes tutoriels à l'adresse suivante: http://djmsoftware.developpez.com/
    je vous en souhaite une excellente lecture ...

    A lire : Les règles du forum

  2. #2
    Membre confirmé
    Homme Profil pro
    Consultant technique
    Inscrit en
    Juillet 2002
    Messages
    519
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2002
    Messages : 519
    Points : 523
    Points
    523
    Par défaut
    Bonsoir,
    Une petite question :
    C'est juste un frontend lancer upx? Ou il fait d'autres actions?
    C'est à dire est-ce que c'est ton programme qui enlève ce qui sert à rien ou upx?

    Sinon, j'ai aussi fait il y a quelques temps une application pour lancer upx sans ligne de commande : http://gandf.chez.tiscali.fr/dev.htm dans la partie pour upx.

  3. #3
    Membre chevronné
    Avatar de DjmSoftware
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Mars 2002
    Messages
    1 044
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Responsable de compte
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 044
    Points : 2 187
    Points
    2 187
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    cette application n'est pas un simple front-end pour Upx
    elle supprime également 2 table inutiles des fichiers executables

    • la table de relocation (gain environ 7%)
      la table d'exportation (gain environ 10%)


    on peut égalememt ensuite séléctionner l'option Upx qui permet d'obtenir des gains en taille de 65% et plus

    j'ai même otenu des facteurs impressionants de 73% avec des applications WxWidgets

    cordialement
    vous trouverez mes tutoriels à l'adresse suivante: http://djmsoftware.developpez.com/
    je vous en souhaite une excellente lecture ...

    A lire : Les règles du forum

  4. #4
    Membre averti Avatar de BOUBOU81
    Profil pro
    system integrator
    Inscrit en
    Juin 2004
    Messages
    358
    Détails du profil
    Informations personnelles :
    Localisation : Allemagne

    Informations professionnelles :
    Activité : system integrator

    Informations forums :
    Inscription : Juin 2004
    Messages : 358
    Points : 315
    Points
    315
    Par défaut
    salut moi j'ai essyé ton prog et magnifique de 8,1Mo, je suis passé a 1,7Mo
    Mais le truc c'est que je comprend pas comment il peut le réduire d'autant, que fait exactement la fonction upx j'ai bien compris ce que tu avais rajouté, mais upx ne fait qu'une compression ou auter chose.
    une fois effectué mon programme fonctionne t'il exactement comme avant, ou faut-il ajouter des composants quand on l'export sur une autre machine ou il n'y a pas builder?
    Désolé si mais question sont bete mais j'aimeraie comprendre un peu mieux comment ça fonctionne :
    Boubou from The SpAcE GaLaXy....
    AhAhAhAhAh

  5. #5
    Membre chevronné
    Avatar de DjmSoftware
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Mars 2002
    Messages
    1 044
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Responsable de compte
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 044
    Points : 2 187
    Points
    2 187
    Billets dans le blog
    1
    Par défaut
    bonjour,
    Upx est une compresseur de fichier executables comme l'est par exemple Winzip
    la différence est que un programme compressé avec UPX se décompresse automatiquement en mémoire lors de son chargement par l'OS
    dans ton cas le taux de compression est phénoménal ~79 %
    ce qui signifie probablement que tu a beaucoup de Fiches(Form)

    ton programme fonctione tout a fait comme avant
    UPX rajoute dans une partie du fichier exe le code pour décompresser
    le fichier en mémoire

    cordialement
    vous trouverez mes tutoriels à l'adresse suivante: http://djmsoftware.developpez.com/
    je vous en souhaite une excellente lecture ...

    A lire : Les règles du forum

  6. #6
    Membre à l'essai
    Inscrit en
    Juillet 2004
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 8
    Points : 10
    Points
    10
    Par défaut
    Bonjour,

    Je développe des applications de calculs avec interfaces et en effet j'ai essayé bcbstriper et upx. Cela marche très bien sauf pour certains exe où au démarrage j'ai une erreur d'adressage qui plante l'appli, ce qui n'est pas le cas sans compression. A quoi cela peut-il être dû ?
    Merci.

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 38
    Points : 37
    Points
    37
    Par défaut
    Merci !!! Allé luya (je sais pas comment on écrit) lol pour ton SUPER PROG !


    PS : UPX rend le code asm plus difficile à lire non en plus ? (cool contres crackers débutants) non ?

  8. #8
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Points : 20 778
    Points
    20 778
    Par défaut
    Merci beaucoup!!!elle est génial ton appli!!!

  9. #9
    Membre régulier Avatar de jagboys
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    166
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 166
    Points : 111
    Points
    111
    Par défaut
    Merci bien pour ton application !
    ça marche très bien !
    Bravo

  10. #10
    Invité
    Invité(e)
    Par défaut Licence
    Je n'ai rien compris dans les textes de licence ...

    On peut les utiliser gratuitement pour distribuer des logiciel dans le commerce ?

    Le texte de licence d'UPX spécifie "WITHOUT ANY WARRANTY", genre si l'exe du logiciel vendu ne fonctionne plus à cause d'upx, il nous reste les yeux pour pleurer, quoi.

    C'est un accessoire pour les amateurs de risque ou bien ?

  11. #11
    Membre averti
    Avatar de Superstivix
    Inscrit en
    Décembre 2003
    Messages
    250
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 250
    Points : 405
    Points
    405
    Par défaut Re: Licence
    Citation Envoyé par Kaji
    Le texte de licence d'UPX spécifie "WITHOUT ANY WARRANTY", genre si l'exe du logiciel vendu ne fonctionne plus à cause d'upx, il nous reste les yeux pour pleurer, quoi.

    C'est un accessoire pour les amateurs de risque ou bien ?
    Moi j'ai utilisé ce logiciel en tests uniquement et il n'y a jamais eu de problèmes!

    Si tu veux prévenir tout problème fait une copie de ton executable et comme ça tu pourras toujours revenir en arrière.
    Modérateur Taverne et C++Builder
    Règles du Club - Règles de la Taverne
    FAQ BCB - sources
    Et je mords

  12. #12
    Membre expert
    Avatar de Sunchaser
    Homme Profil pro
    OPNI (Objet Programmant Non Identifié)
    Inscrit en
    Décembre 2004
    Messages
    2 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : OPNI (Objet Programmant Non Identifié)
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 059
    Points : 3 204
    Points
    3 204
    Par défaut
    Bonsoir,
    J'ai pas pu m'empecher d'essayer...
    Comme pour BOUBOU81 dans son message du 28 juill 04, j'ai obtenu
    un taux de compression vertigineux (80 %) et un exe qui fonctionne toujours aussi bien.
    Aux persévérants aucune route n'est interdite.
    Celui qui ne sait pas se contenter de peu ne sera jamais content de rien.
    Current Status
    Avec 40% de pollinisateurs invertébrés menacés d'extinction selon les Nations Unies, l'homme risque fort de passer de la monoculture à la mono diète...
    Faîtes quelque chose de bien avec vos petits sous: Enfants du Mekong

  13. #13
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 29
    Points : 26
    Points
    26
    Par défaut
    Bonjour,

    bien que je n'utilise pas BC++ je connais bien Delphi et la taille des exécutables y est du meme volume.

    Je voudrais juste signaler deux ou trois points importants.

    Il semble que la compression faite par UPX empeche windows de gérer le swap correctement.

    J'ai fait des tests sur un exe compressé et sa consommation mémoire augmente de manière sensible par rapport a la version non compressé.

    Voila, juste pour dire que je pense que le systeme est valable pour réduire un petit exe qui a vocation a etre distribué ou exécuté a travers un réseau lacal, mais que cela doit etre réservé a de petite applications.

    Pour un exécutable de plusieurs MO je ne suis pas sur que réduire la taille de l'exe soit judicieux par rapport a garder une gestion mémoire correcte.

  14. #14
    Membre chevronné
    Avatar de DjmSoftware
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Mars 2002
    Messages
    1 044
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Responsable de compte
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 044
    Points : 2 187
    Points
    2 187
    Billets dans le blog
    1
    Par défaut
    bonsoir,
    pourrrais tu m'expliquer la méthode que tu a utilisée pour comparer la consommation mémoire de 2 executable, l'un compacté et l'autre non

    il est évident que lors du chargement de l'exécutable compressé la consomation mémoire soit plus grande que celle du même exeécutable compressé mais dés cette phase passée la consommation mémoire est identique

    la gestion mémore sous Win32 est faite de telle manière que lors du chargement du programme l'OS donne au programme un espace de travail plus grand que nécessaire au fonctionnement du programme
    ensuite de manière dymanique en fonction de la consommation générale de mémoire l'OS va réduire la mémoire utilisée par les différents process

    raison pour laquelle je ne suis pas d'accord avec ton analyse

    j'ai développé et utilisé des executables de gestion de base de donnée d'une taille de plus de 3 Mega que j'ai ensuite compressé avec BCBstriper sans aucun problème de stabilité de l'application et des PC sur lequel l'application était executée

    un avantage significatif de la compression d'éxécutable est la vitesse de chargement
    le temps de décompression en mémoire est négligable par rapport à la différence lors du chargement du même exécutable non compressé sur un support disque ou réseau

    cordialement
    vous trouverez mes tutoriels à l'adresse suivante: http://djmsoftware.developpez.com/
    je vous en souhaite une excellente lecture ...

    A lire : Les règles du forum

  15. #15
    Rédacteur
    Avatar de dvsoft
    Homme Profil pro
    Architecte technique
    Inscrit en
    Août 2002
    Messages
    176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2002
    Messages : 176
    Points : 622
    Points
    622
    Par défaut
    Bonjour,

    Allez faire un tour sur cette page

    http://www.jrsoftware.org/striprlc.php

    En bas de la page

    Why not use an EXE compressor?

    Alain

  16. #16
    Membre confirmé
    Homme Profil pro
    Consultant technique
    Inscrit en
    Juillet 2002
    Messages
    519
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2002
    Messages : 519
    Points : 523
    Points
    523
    Par défaut
    En fait, votre site indique juste que l'on consomme plus de mémoire si l'exécutable est lancé plusieurs fois et que sur les système avec peu de mémoire, c'est plus lent.

    Alors, pour les petits programmes, cela ne pose pas de problème au vu de la quantité de mémoire dont l'on dispose aujourd'hui.
    Pour les programme beaucoup plus gourmand et plus gros (imaginons que l'on face un logiciel comme 3DSmax), le projet consomme énormément mais le poid de l'exécutable n'est pas important. On ne le compresse donc pas.

    J'ai fait un test pour voir si cela était vrai. En lançant 2 fois mon exécutable compressé, obtient dans le taskmanager de windows 2 process consommant autant de ressource l'un que l'autre.
    Je les ferme et lance 2 fois l'exécutable non compressé.
    Résultat parfaitement identique. Soit, je me trompe et l'on ne peut pas se fier à cette méthode avec le taskmanager, soit le gars a émis des hypothèses sans même vérifier. Tout ce qui est écris sur internet n'est pas toujours vrai et je pense que cette personne n'a pas vérifié son information.

  17. #17
    Rédacteur
    Avatar de dvsoft
    Homme Profil pro
    Architecte technique
    Inscrit en
    Août 2002
    Messages
    176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2002
    Messages : 176
    Points : 622
    Points
    622
    Par défaut
    Bonjour,

    soit le gars a émis des hypothèses sans même vérifier.
    Jordan Russel n'est pas du genre à donner des informations sans avoir vérifier au paravent..

    Toujours est il que chacun est libre d’utiliser ou pas un compresseur d’exécutable.
    Il existe des pour et des contres, c’est a chacun de voir et faire en fonction de ce qui lui convient le mieux,
    nous ne somme là que pour échanger librement des idées.

    ALain

  18. #18
    Membre chevronné
    Avatar de DjmSoftware
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Mars 2002
    Messages
    1 044
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Responsable de compte
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 044
    Points : 2 187
    Points
    2 187
    Billets dans le blog
    1
    Par défaut
    Bonsoir,
    la gestion mémoire sous Win32 a toujours été un sujet diviseur
    je suis en partie d'accord avec l'avis de Jordan Russel
    mais avec les PC équipé en standard de plus de 128 Mega sous XP ou 2000 le fait d'utiliser un programme compressé avec UPX en momo ou multi instance n'affecte d'aucune manière la stabilité du programme compressé et ou de l'OS

    cordialement
    vous trouverez mes tutoriels à l'adresse suivante: http://djmsoftware.developpez.com/
    je vous en souhaite une excellente lecture ...

    A lire : Les règles du forum

  19. #19
    Membre confirmé
    Homme Profil pro
    Consultant technique
    Inscrit en
    Juillet 2002
    Messages
    519
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2002
    Messages : 519
    Points : 523
    Points
    523
    Par défaut
    Multiple instances of a compressed EXE/DLL create multiple instances of the code in memory. If you have a compressed EXE that contains 1 MB of code (before compression) and the user starts 5 instances of it, approximately 4 MB of memory is wasted. Likewise, if you have a DLL that is 1 MB and it is used by 5 running applications, approximately 4 MB of memory is wasted. With uncompressed EXE/DLLs, code is only stored in memory once and is shared between instances.
    Comment faire pour vérifier ceci?

    Je ne connais pas cette personne et c'est justement pour cela que je demandait si l'on pouvait vérifier avec le taskmanager ce problème.

    Ayant fait le test ci dessus, je ne trouve pas de différence comme indiqué sur son site.

  20. #20
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    40
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2005
    Messages : 40
    Points : 48
    Points
    48
    Par défaut C'est énorme
    Mon exe est passé de 2914ko à 610ko soit -79%.
    Génial

Discussions similaires

  1. Réponses: 15
    Dernier message: 14/11/2011, 17h49
  2. Windows 7 sera jusqu'à 163 % plus cher en Europe qu'aux USA
    Par Katleen Erna dans le forum Windows 7
    Réponses: 209
    Dernier message: 08/09/2009, 15h07
  3. Windows 7 sera jusqu'à 163 % plus cher en Europe qu'aux USA
    Par Katleen Erna dans le forum Actualités
    Réponses: 210
    Dernier message: 17/08/2009, 11h16
  4. Réponses: 3
    Dernier message: 22/09/2008, 10h27
  5. Réponses: 2
    Dernier message: 16/05/2008, 10h32

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