Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1722 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  Vos trucs pour réduire la taille de votre executable

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Vos trucs pour réduire la taille de votre executable

n°500352
Ace17
Posté le 28-08-2003 à 11:13:49  profilanswer
 

Cas particulier : je viens de compiler mon projet, l'exe prend 6 megas... alors que le programme ne fait pas grand chose... J'utilise gcc avec mingw. (La moitié de la taille de l'exe est apparament occupée par des symboles exportés... )Comment me débarrasser de ce qui prend de la place?
 
Cas général : Dans un plus large contexte, qu'est-ce qui bouffe la place dans un exe, comment garder mon exe de taille "raisonnable"?

mood
Publicité
Posté le 28-08-2003 à 11:13:49  profilanswer
 

n°500356
*syl*
--> []
Posté le 28-08-2003 à 11:15:54  profilanswer
 

6Mo :o
T'as pas compilé en debug au moins ?

n°500361
Joel F
Real men use unique_ptr
Posté le 28-08-2003 à 11:19:51  profilanswer
 

1. compile en mode Release
2. Utilise strip.
3. cherche goolgle pour UPX (Ultimate PAcker For Executabel)
c une appli en ligne de commande qui nettoie bien les exe et les compresse.
On gagane facilement 50% de taille pr 0% de perte de temps d'execution.

n°500369
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 28-08-2003 à 11:24:59  profilanswer
 

Sinon tu peux aussi écrire tes programmes en assembleur, tu gagneras environ 60% en taille d'éxécutable !
Et je te parle pas de la rapidité :o

n°500372
BifaceMcLe​OD
The HighGlandeur
Posté le 28-08-2003 à 11:25:52  profilanswer
 

Réduire les fonctionnalités.  :o

n°500388
LetoII
Le dormeur doit se réveiller
Posté le 28-08-2003 à 11:42:13  profilanswer
 

Joel F a écrit :

1. compile en mode Release
2. Utilise strip.
3. cherche goolgle pour UPX (Ultimate PAcker For Executabel)
c une appli en ligne de commande qui nettoie bien les exe et les compresse.
On gagane facilement 50% de taille pr 0% de perte de temps d'execution.


 
Je confirme je suis passé de d'un exe de 400 ko à moin de 80ko en utilisant ces deux utilitaires


---------------
Le Tyran
n°500390
skeye
Posté le 28-08-2003 à 11:43:26  profilanswer
 

flag...ca pourrait me servir! :jap:

n°500391
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 28-08-2003 à 11:43:39  profilanswer
 

Il me semble qu'il y a une option -fstrength-reduce ou quelque chose comme ça dans gcc, non ?


---------------
J'ai un string dans l'array (Paris Hilton)
n°500393
Taz
bisounours-codeur
Posté le 28-08-2003 à 11:46:10  profilanswer
 

gcc -s déjà
 
après tu peux compiler en -Os en plus (optimisation, mais pas celle qui grossisse la taille du code)

n°500398
Taz
bisounours-codeur
Posté le 28-08-2003 à 11:51:43  profilanswer
 

Harkonnen a écrit :

Il me semble qu'il y a une option -fstrength-reduce ou quelque chose comme ça dans gcc, non ?

rien à voir

mood
Publicité
Posté le 28-08-2003 à 11:51:43  profilanswer
 

n°500400
Joel F
Real men use unique_ptr
Posté le 28-08-2003 à 11:53:04  profilanswer
 

-fstrength-reduce c pour forcer un algo de reduction de boucle.

n°500423
Taz
bisounours-codeur
Posté le 28-08-2003 à 12:07:35  profilanswer
 

ah oui, je sais, c'est une option à la con au préprocesseur, j'avais envoyé un rapport de bugs y longtemps, parce que toute l'API windows est envoyé au cc (y en a pour un 1Mo à chaque fois)
je cherche

n°500427
Taz
bisounours-codeur
Posté le 28-08-2003 à 12:11:34  profilanswer
 

-D__GTHREAD_HIDE_WIN32API

n°500429
Taz
bisounours-codeur
Posté le 28-08-2003 à 12:13:08  profilanswer
 

amusez vous à faire
 
gcc -E hello.c | wc
 
et gcc -E -D__GTHREAD_HIDE_WIN32API | wc
 
 
et mesurez aussi le temps de compilation


Message édité par Taz le 28-08-2003 à 16:20:40
n°500489
Ashe2
Posté le 28-08-2003 à 13:54:36  profilanswer
 

- build release (forcément)
- ne pas linker avec le runtime
- flag d'optimisation pour la taille
- /MERGE
 
Il y en a d'autres, mais bon j'ai jamais eu besoin d'optimiser pour la taille, en général c'est la vitesse. Pas mal d'info peut se trouver par là (en anglais) : http://www.hailstorm.net/papers/smallwin32.htm

n°500499
Taz
bisounours-codeur
Posté le 28-08-2003 à 14:04:56  profilanswer
 

Ashe2 a écrit :

- build release (forcément)
- ne pas linker avec le runtime
- flag d'optimisation pour la taille
- /MERGE
 
Il y en a d'autres, mais bon j'ai jamais eu besoin d'optimiser pour la taille, en général c'est la vitesse. Pas mal d'info peut se trouver par là (en anglais) : http://www.hailstorm.net/papers/smallwin32.htm
 

ça t'arrive de lire un topic?

n°500576
Ashe2
Posté le 28-08-2003 à 15:00:37  profilanswer
 

Waip, et il est mis "vos trucs pour reduire la taille de vos exécutables"
J'ai gagné quoi?
(sinon c'était quoi le but de ta question?)

n°500592
antp
Super Administrateur
Champion des excuses bidons
Posté le 28-08-2003 à 15:11:36  profilanswer
 

Joel F a écrit :

0% de perte de temps d'execution.


 
t'as pas dû tester sur beaucoup de PC :o
selon la machine et l'antivirus installé le programme peut mettre un temps fou à démarrer (par ex sur un PIII 650 avec McAfee j'avais eu le record de 2 minutes pour un soft qui démarrait en 5 secondes non compressé)
 
UPX c'est utile que si l'exe doit vraiment être très petit.
Dans la plupart des cas on zippe l'exe et c'est bon, que ça prenne 6 Mo ou 4 Mo dans le disque dur on s'en fout un peu...
 
Puis un soft compressé par UPX (ou autre) prendra plus de mémoire à l'exécution


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°500684
HelloWorld
Salut tout le monde!
Posté le 28-08-2003 à 16:10:40  profilanswer
 

Citation :

Et je te parle pas de la rapidité :o


De développement ? :p
 

Citation :

Il y en a d'autres, mais bon j'ai jamais eu besoin d'optimiser pour la taille, en général c'est la vitesse. Pas mal d'info peut se trouver par là (en anglais) : http://www.hailstorm.net/papers/smallwin32.htm


 
Le lien marche pas chez moi.


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°500715
Ashe2
Posté le 28-08-2003 à 16:30:22  profilanswer
 

HelloWorld a écrit :

Citation :

Et je te parle pas de la rapidité :o


De développement ? :p
 

Citation :

Il y en a d'autres, mais bon j'ai jamais eu besoin d'optimiser pour la taille, en général c'est la vitesse. Pas mal d'info peut se trouver par là (en anglais) : http://www.hailstorm.net/papers/smallwin32.htm


 
Le lien marche pas chez moi.


 
Il fonctionnait quand j'ai tapé le post, essaie un peu plus tard peut-etre?

n°500734
Joel F
Real men use unique_ptr
Posté le 28-08-2003 à 16:40:03  profilanswer
 

antp a écrit :


t'as pas dû tester sur beaucoup de PC :o
selon la machine et l'antivirus installé le programme peut mettre un temps fou à démarrer (par ex sur un PIII 650 avec McAfee j'avais eu le record de 2 minutes pour un soft qui démarrait en 5 secondes non compressé)


 
 :??:  Je distribue tte mes applis commeca , j'ai jamais eu de retour negatif pour lenteur a l'execution ...

n°500767
antp
Super Administrateur
Champion des excuses bidons
Posté le 28-08-2003 à 17:16:33  profilanswer
 

T'as eu de la chance... ou des utilisateurs patients.
Franchement je vois pas l'intérêt de compresser les exe...


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°500772
HelloWorld
Salut tout le monde!
Posté le 28-08-2003 à 17:21:11  profilanswer
 

Y'a que dans le cas d'un shareware si on veut protégé un petit peu sa routine de serial que je trouve ça acceptable. Je suis aussi partisan de l'exe dans le zip.


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°500779
*syl*
--> []
Posté le 28-08-2003 à 17:24:18  profilanswer
 

antp a écrit :

Franchement je vois pas l'intérêt de compresser les exe...

Ça peut permettre d'embêter certains crackers puisque ça peut faire office de barrière de protection supplémentaire.. mais à part ça, bah euhh..
 
Edit : grilled [:grilled]


Message édité par *syl* le 28-08-2003 à 17:24:55
n°500796
antp
Super Administrateur
Champion des excuses bidons
Posté le 28-08-2003 à 17:32:24  profilanswer
 

Ouais enfin UPX ça se décompresse de la même manière que ça se compresse hein :D


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°500808
taureau
Posté le 28-08-2003 à 17:38:00  profilanswer
 

il faut aussi savoir que les exe compressés consomment plus de mémoire car le système de swap de windows ne peut pas fonctionner (l'exe doit etre décompressé entièrement en mémoire) sur des petits softs ce n'est pas trop génants mais pour peux que le programme soit un peu gros et que l'on lance plusieurs instances ...

n°501529
HelloWorld
Salut tout le monde!
Posté le 29-08-2003 à 11:27:29  profilanswer
 

C'est pas seulement un problème de swap, c'est surtout un problème de partage mémoire.
Un exe compressé a les caractéristiques suivantes :
- le code exe est dupliqué pour chaque nouvelle instance au lieu d'être partagé (je viens d'ailleurs de tenter de lancer UPX sur un exe avec section partagée en écriture il a refusé).
- le code exe correspond à un bloc de mémoire alloué par UPX. Il est marqué comme "non swappable" (normal). Mais il est constamment en mémoire, contrairement au code d'un exe classique qui est chargé au fur et à mesure par le loader de Windows.
- toutes les ressources sont elles aussi décompressées dans des blocs alloués comme pour le code exe. Je pense que ces blocs sont swappables (y'a pas de raison), mais le vrai problème est que ces blocs existent du début à la fin de la vie de l'exe, même s'il s'en sert pas longtemps ou pas du tout même. Je viens de faire le test avec un exe qui affiche une image au début (splashscreen). La version compressée UPX se trimballe constamment cette image décompressée en mémoire (et hop +2Mo), juste pour 5 secondes d'utilisation au début ...
 
Donc un exe compressé prend moins de place sur le disque et plus en RAM ... J'ai vite choisi où économiser de la place.


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°501536
HelloWorld
Salut tout le monde!
Posté le 29-08-2003 à 11:29:17  profilanswer
 

Et j'ajoute l'impossibilité de modifier les ressources avec un éditeur (traduction, ajout d'un manifest pour profiter du style XP).


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°501537
BifaceMcLe​OD
The HighGlandeur
Posté le 29-08-2003 à 11:29:18  profilanswer
 

HelloWorld  :jap:

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  Vos trucs pour réduire la taille de votre executable

 

Sujets relatifs
Commande pour la taille d'un dossier en octets ?taille de votre plus gros prog
Comment reduire l'espace entre...Trucs sympa en PHP ????
[HTML] textarea et histoire de taille[html / css] tag <p> et taille !
[ Linux ] Un prog pour obtenir le code assembleur d'un exécutable ?[Html] Modifier la taille de la police
[c] : Taille d'une structure != somme de ses élements?[perl] limite en taille des variables perl
Plus de sujets relatifs à : Vos trucs pour réduire la taille de votre executable


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR