Réduire la taille des *.exe (et le temps de compilation)

Résolu
violent_ken Messages postés 1812 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 26 octobre 2010 - 7 févr. 2007 à 20:58
violent_ken Messages postés 1812 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 26 octobre 2010 - 9 févr. 2007 à 18:10
Violent Ken



Bonjour, ma question est assez simple (mais la réponse...) : comment peut on réduire la taille de l'executable, et ainsi (et surtout) le temps de compilation du projet ? J'ai déjà séparé le projet complet en plusieurs fichiers *.ocx (que je ne recompile donc pas) et un *.exe, mais ce dernier est trop lourd (1.5 Mo sans ressources) et  met donc un temps considérable à compiler... et comme je compile très souvent (option explicit ==> vérifie la validité de la syntaxe/types...etc), c'est bien gênant...

J'avais entenu parler qu'il y avait moyen de mettre des Foms dans des *.ocx (il me semble), ce serait une bonne solution pour ne pas à devoir recompiler tout le projet à chaque fois.

Quelqu'un saurait comment procéder si cela est effectivement possible ? Ou bien si vous avez une autre suggestion pour "subdiviser" le projet manière ou d'une autre, je suis preneur ;)

Merci, @+

16 réponses

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
7 févr. 2007 à 22:11
En fait, mettre des forms dans un activeX revient au même à afficher des feuilles à partir d'un module de classe dans ton projet :
Tu crée une instance de la classe de ton activeX, puis tu appelle une méthode de l'objet pour afficher la feuille.

Il faut bien entendu avoir conçu cà dès le départ, car une archi objet n'est pas à faire une fois que le projet est fini... car ca mène irrémédiablement à devoir repenser la logique de communication entre les feuilles par exemple.
3
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
9 févr. 2007 à 00:46
dépend beaucoup du mode de compilation

en Natif, c'est plus long, mais ca produit un "meilleur" exe (pas de polémique)

en PCODe, ca compile BEAUCOUP plus vite, l'exe sera peut etre plus petit aussi....
ca peut surement suffir pour des tests de ton soft, si tu as a le compiler régulièrement.

maintenant, spliter un exe en sous exe c'est pas forcément une mauvaise chose... ca permet de ne toucher que celui qui est en cause, de réduire le code relatif a chacun...
reste que ca soulève quelques soucis :
- coopération
- coordination
- affichage en modal ?
...

Ca m'est arrivé de séparer un gros projet en sous projet... ca a son interet, c'est certain...
l'utilisateur pourras parfois lancer le sous exe directement, si c'est bien conçu... ou le lancer depuis l'exe principal, de manière transparente pour l'utilisateur....

bref, tout dépend du projet concerné ^^

Renfield
Admin CodeS-SourceS- MVP Visual Basic
3
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
7 févr. 2007 à 21:11
1.5Mo n'a rien d'exceptionnel en terme de taille d'exe. Si mes souvenirs sont bon, mon record est de 25Mo environ sans ressources graphiques ou binaires. (très grosse appli sur base de données)

Qu'appelle-tu temps considérable de compilation. Pour des projets très important, des temps de compilations de plusieurs dizaines de minutes ne sont pas exceptionnel non plus.

Pour complier les 25Mo je crois que j'arrivais aux alentour d'1h30.

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
0
cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
7 févr. 2007 à 21:19
Salut Violent_Ken et Casy,

Le jour où j'arrive à compiler un programme qui prendra 1h30 de compilation, ben je pense que je serai devenu assez bon !!!

Bonne soirée

A+
Exploreur
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
7 févr. 2007 à 21:30
Il est tout à fait possible de mettre des forms dans un ocx (ca doit être moi qui t'en ai parlé je pense ;)

Perso, mes logiciels ont un exe de 32 Ko, et tout est mis dans les dll, ainsi je ne compile que ce dont j'ai besoin, et c'est très très simple à mettre à jour : une petite dll à remplacer et hop, c'est à jour !
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
7 févr. 2007 à 21:31
ah oui, et puis autre chose : un aussi petit exe est synonime également d'un chargement instantané du logiciel !

Je serais curieux de voir ici les défenseurs de .net me donner les avantages de .net à ce niveau là ;)
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
7 févr. 2007 à 21:34
Même point de vue que DARKSIDIOUs, avec une précision :
Dll regroupant des fonctions par catégories (travail sur chaînages, ouverture de dialogies Windows, etc...), de sorte à ce qu'une (ou plusieurs Dll) puisent servir à plusieurs projets sans trop de frais.3 Je les appelle mes "couteaux suisses"
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
7 févr. 2007 à 21:35
L'avantange principal sur ce point Dark et il est de taille, c'est ...................................
...........................................

...........................................

...........................................

que le temps que le logiciel se charge, tu as le temps de boire le café (en exagérant à peine un petit peu)

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
7 févr. 2007 à 21:43
Ahaaaaa !
Merci Casy !
Tout compris, maintenant !
C'est çà, la .... pause... café ! (qu'a fait quoi, au fait ?)
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
7 févr. 2007 à 21:48
Sans compter en plus d'un chargement dynamique des ocx : les ocx sont chargés à la demande => si l'utilisateur n'utilise qu'un petit bout du programme (contenu dans une ou deux dll), alors seuls ces ocx seront chargés en mémoire, et pas tout les ocx ! Du coup, au lieu d'un gros exe de 25 Mo à charger en mémoire, tu ne charger que les quelques Ko des ocx.
0
violent_ken Messages postés 1812 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 26 octobre 2010 2
7 févr. 2007 à 22:05
Violent Ken

lol ;) 1.5Mo n'a rien d'exceptionnel en effet, 25Mo, c'est très loin de ce que j'ai. Mais bon, il n'empeche que j'ai 3 forms assez lourdes en lignes de code, donc si je pouvais empecher la recompilation de tout çà.... Surtout qu'en effet, au niveau de la charge mémoire utilisée, ce serait aussi un gain non négligeable (étant donné aussi que ces trois form ne sont généralement pas chargée en même temps).

Je ne met pas 2h à compiler (encore heureux ^^) mais je compile très très fréquemment pour vérifier la cohérence du source et c'est un peu gênant d'attendre 40s à chaque fois. Parce que 40s fois 10, ben çà fait quand même 3min40 de perdu. Et en effet, c'est de plus en plus long (quoique tout est relatif) pour charger le logiciel.
J'ai déjà compilé au moins 692 fois le projet principal (au vu de l'incrémentation automatique) et donc au moins 5 heures de perdues ;) ! Donc bon, ce serait cool de régler çà ^^

Et effectivement oui, c'est bien toi Darksidious qui m'avait parlé de çà ^^ Mais comment est-ce que je travaille avec une form dans un ocx ? Pourrais tu me donner quelques précisions sur la manière de mettre en oeuvre çà (le frmMDI.ActiveForm, je vois pas comment le gérer) ? Parce que je traine plein de form complètement terminées qui n'ont pas lieu d'être recompilées à chaque fois, donc ce serait un gain de temps important de pouvoir séparer tout çà en plusieurs morceaux !

Merci, @+
0
violent_ken Messages postés 1812 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 26 octobre 2010 2
7 févr. 2007 à 23:02
Violent Ken

Hum hum, en effet. Merci pour la méthode, je vais voir si c'est applicable, et je pense au pire pouvoir déjà séparer en 2 exécutables deux parties du programme.
Merci, @+
0
gallyhc Messages postés 386 Date d'inscription samedi 4 octobre 2008 Statut Membre Dernière intervention 19 février 2018 2
9 févr. 2007 à 14:42
Bonjour,

Au sujet de la taille de l'exe pour le rendre plus petit soit tu fais de l'optimisation a fond ;-) et l'autre solution est de passe l'exe dans un compresseur d'exe. Le nom de ce logiciel est NoeLite, en regardant sur le net j'ai trouvais une url que voici "http://sac-ftp.externet.hu/pack12.html"

Bonne continuation,
[Gally Home Corp]
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
9 févr. 2007 à 14:50
Bonjour Gally,

Et c'est celà qui, selon toi, diminuera le temps de compilation du projet ?
0
gallyhc Messages postés 386 Date d'inscription samedi 4 octobre 2008 Statut Membre Dernière intervention 19 février 2018 2
9 févr. 2007 à 16:10
Bonjour,

Pas le temps de compilation ms la taille de l'executable... et petite erreur "Neolite" plutot.

Bonne continuation,
[Gally Home Corp]
0
violent_ken Messages postés 1812 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 26 octobre 2010 2
9 févr. 2007 à 18:10
Violent Ken

Renfiled ==> excellente suggestion, le P-CODE ! Je n'y avais pas pensé, mais c'est sans doute LA meilleure solution pour diminuer le temps de compilation ;)
Sinon, pour la communication entre divers exécutables, oui, çà pose certains problèmes, mais disons que si deux parties sont suffisament distinctes (l'une des 2 peut fonctionner sans l'autre), pas trop de problèmes.


Gally ==> la taille à proprement parler ne m'est pas problématique, mais c'est le temps de compilation qu'elle implique (ou bien réciproquement) qui l'est. Cela dit, je garde cette URL, çà peut toujours servir ;)


 


Merci, @+
0
Rejoignez-nous