Gambas France BETA


Pas de compte ? Incription

La compilation de fichiers dans l'exécutable : attention aux bourdes !

1
AuteurMessages
Prokopy#1 Posté le 1/8/2011 à 21:27:00
Kinder PinguiComme vous le savez sans doute, lorsque Gambas compile votre application, il compile à l'intérieur de votre exécutable tous les fichiers contenus dans votre projet. Ce qui signifie, en d'autres termes, que tous les fichiers contenus dans votre projet (plus exactement, dans le dossier de votre projet) seront chargés au démarrage de votre programme, et mis à l'intérieur de l'exécutable (le fichier .gambas).

Illustration pratique avec le développement de gambasforge (la nouvelle version bêta).
Il faut savoir que quand vous demandez une page web sur le site, vous appelez en réalité le programme gambas compilé de gambasforge (donc un fichier exécutable, en .gambas, renommé en .gambas.cgi pour permettre facilement qu'il soit considéré comme une application web). Vous demandez donc au fichier exécutable main.gambas.cgi de vous donner la page d'accueil, la page wiki ... Les pages index.html, forum.html redirigent toutes vers ce fichier exécutable. Vous pouvez d'ailleurs essayer de l'appeler directement ( http://gambasforge.org/beta/main.gambas.cgi ), il vous répondra sans broncher.

Mais revenons à nos moutons. Pas plus tard que ce matin, en navigant dans les dossiers du projet, je suis (par pur hasard) tombé là-dessus :



Oui oui vous avez bien vu : l'application Gambas (de gambasforge) pèse 64 Mo ! Effarant. :shock:

Donc chaque fois que l'application est lancée, (=> ici chaque fois qu'une page web est demandée), 64Mo sont chargés depuis le disque dur, et ce sans que la moindre ligne de votre programme ne soit encore exécutée. Idem quand vous ouvrez votre projet avec l'IDE. Outch.

Je me plaignais justement de problèmes de lenteur de l'IDE (et de gambas en général) à gambix il y a quelque temps, dès que je touchais à GambasForge. Ah ben tu m'étonnes si c'est lent, y'a 64Mo qui sont pompés du disque dur à chaque fois. :P

Comment diantre est-ce possible ? C'est en réalité très simple.
Lorsque vous générez un exécutable via l'IDE, le dossier par défaut où il est placé est celui du projet. Bon. En bon feignant, je le laisse ici tranquillement, et je ferai un lien dessus au besoin. Très bien. Je lance la compilation, l'archiveur (le programme dans gambas qui transforme votre projet en exécutable) réunit tous les fichiers dans le dossier du projet, et me fait un bel exécutable qu'il me dépose gentiment dans le dossier du projet.

Maintenant, je fais une modification sur ce programme, et je veux que mon exécutable généré soit mis à jour. Je n'ai qu'à regénérer l'exécutable en faisant le même manipulation. Je fais "Générer un exécutable", l'archiveur réunit tous les fichiers contenus dans le dossier du projet, rebelote.
...
Mais il y a un hic. L'archiveur réunit tous les fichiers contenus dans le dossier du projet. Y compris l'ancien exécutable ! Vous aurez donc un exécutable deux fois plus gros contenant votre programme, ses données ainsi qu'un ancien exécutable qui ne sert à rien !!!

En extrapolant, on peut obtenir facilement un fichier de 64Mo lourdissime comme celui de tout à l'heure ! Bonjour les ralentissements !

En résumé : faites toujours très attention lorsque vous ajoutez des données à vos projets, et surtout ne laissez jamais jamais jamais vos exécutables traîner dans le dossier de votre projet !



C'est-y pas mieux comme ça ? :D
La théorie, c'est quand on sait tout et que rien ne fonctionne.
La pratique, c'est quand ça marche mais qu'on ne sait pas pourquoi.
Quand la théorie rejoint la pratique, rien ne fonctionne et on ne sait pas pourquoi.
jeanyvon#2 Posté le 2/8/2011 à 06:25:00
Gambas? Ma! Et gustoHello!
Dis, est-ce qu'il n'y a pas un bout du compilateur à réécrire?
ça ne serait pas ajouter mais remplacer.....
Autrement comme taux de compression difficile de faire mieux parce que passer de 64Mo à 165Ko..... Le .tar n'a qu'a bien ce tenir..
A+
JY
Vieillir? On peut retarder mais pas y échapper!
linuxos#3 Posté le 2/8/2011 à 10:02:00
Un peu de sel, de poivre et la crevette sera... Bonjour,

Il suffit pour cela de faire:

Dans l'IDE de Gambas:

Projets => Nettoyer

puis

Projets => Générer => Executable


'Nettoyer' est la pour supprimer tous les fichiers temporaires, anciens executables, etc ...

Olivier
Lorsqu'on s'occupe d'informatique, il faut faire comme les canards... Paraître calme en surface et pédaler comme un forcené par en dessous.
Prokopy#4 Posté le 2/8/2011 à 17:04:00
Kinder Pingui
'Nettoyer' est la pour supprimer tous les fichiers temporaires, anciens executables, etc ...


En effet, mais ce que je voulais dire c'était surtout de faire attention à ce que l'on met dans les exécutables. ;)
La théorie, c'est quand on sait tout et que rien ne fonctionne.
La pratique, c'est quand ça marche mais qu'on ne sait pas pourquoi.
Quand la théorie rejoint la pratique, rien ne fonctionne et on ne sait pas pourquoi.
manu#5 Posté le 7/10/2011 à 11:25:22
Avec Gambas ca roule !Salut,

Depuis la révision 4172, cela semble impossible de générer l’exécutable dans le dossier du projet. Je parle de gambas3 bien sûre.
Jeanne d'arc, elle a frit, elle a tout compris ! ;)

Config :
Manjaro linux (excellent !)
XFCE 4.1 (simple et efficace)
Gambas 3 dans les dépots (confort total)
spheris#6 Posté le 26/11/2011 à 22:06:44
Oui proko, mais par un souci de portabilité d'un ordi à l'autre, je stocke souvent tous les fichiers que mon projet utilise dans le dossier du projet.
si par exemple j'utilise un projet ayant un /home.config/gambas/monprojet.conf et que je ne copie pas ce conf dans le nouvel ordi ca plante au demarrage.
Du coup je mets tout dedans comme ca plus de souci. Ce n'est pas la meilleure méthode mais ca marche..(en GB2 tout naturellement bien sur)
manu#7 Posté le 26/11/2011 à 22:35:28
Avec Gambas ca roule !Autrement, tu peux créer un dossier "MonProjet"
Puis tu créé dans ce dossier ton projet Gambas qui s'appelle aussi "mon Projet". Comme ca tout est dans le bon dossier sans le mélanger avec les sources :)
Jeanne d'arc, elle a frit, elle a tout compris ! ;)

Config :
Manjaro linux (excellent !)
XFCE 4.1 (simple et efficace)
Gambas 3 dans les dépots (confort total)
1