Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
Bonjour à tous,
J'aimerais savoir pourquoi lorsque je fais un Full Build, avec Generate code machine coché et Build Dynamic Library(dll) coché ça met trop longtemps (environ 9h).
Chaque fois lorsque je recompile mon projet il me faut attendre 9h minim
Hors ligne
patricktobou a écrit:
Bonjour à tous,
J'aimerais savoir pourquoi lorsque je fais un Full Build, avec Generate code machine coché et Build Dynamic Library(dll) coché ça met trop longtemps (environ 9h).
Chaque fois lorsque je recompile mon projet il me faut attendre 9h minim
tu as combien de PBL et d'objets environ ?
Hors ligne
Ceci est normal, car PB doit d'abord traduire ses PBL en C++ (Phase de génération de code-source) avant de lancer la compilation proprement dite des DDL et leur linkage. Pour peu que ton application soit constituée d'un grand nombre de PBL avec pas mal d'objets, le temps total du full-build s'en ressent.
Hors ligne
Je travaille sur une application de 29 pbl sous Powerbuilder 10.5. Cette application pèse presque 180 Mo.
Lorsque je fais du développement, j'ai régulièrement deux ou trois pbl de plus ...
Le full Build prend entre 15 et 20 minutes ...
Hors ligne
Bonjour,
Attention BRWA, on parle ici de la génération de la compilation en code machine (DLL au lieu de PBD) et non d'un simple "full rebuild".
C'est une des raisons de l'abandon de la génération du code machine dans notre projet, trop long lorsqu'on doit générer un correctif rapide pour un client.
On conserve un déploiement en PBD.
Hors ligne
ok, je pensais qu'on parlait ici d'un full build via le click droit sur une target ...
Dernière modification par BRWA (25-08-2009 08:37:51)
Hors ligne
Mon application contient
1 pbl
environ 96 Datawindows et reports
environ 280 fonctions et procédures
environ 87 window
Lorsque je fais un Full Build avec Generate code machine coché et Build Dynamic Library coché ça prends 9h minimum et à la fin il me crée deux fichier : un fichier etmf.exe et un fichier etmf.dll
Hors ligne
Est-ce que ta PBL est en local ou sur un lecteur réseau ? Car dans ce dernier cas, cela prend énormément plus de temps....
Hors ligne
Ma PBL est en local dans un dossier partagé. Mon collègue et moi nous travaillons simultanément sur le dossier partagé et le Full Build se passe sur la machine qui contient la PBL et la base de données Oracle 10g.
Y'a t-il un moyen de réduire le temps du Full build?
Hors ligne
Tu peux essayer de faire un optimize de la PBL pour voir, mais ça ne devrait pas changer grand chose.
Tu devrais également essayer d'éclater ta PBL en plusieurs pour voir si cela ne te ferait pas gagner du temps à la compil car j'imagine que ta PBL est très grosse en taille.
La RAM disponible sur le poste influance fortement le temps de compilation. Plus il y a de dispo au niveau de la RAM, plus la compil va vite...
Cela peut également venir d'un antivirus sur le poste. J'ai déjà eu ce cas il y a longtemps.
Hors ligne
tu peux aussi essayer de compiler en PBD plutôt qu'en DLL pour voir si c'est plus rapide
Hors ligne
erasorz a écrit:
tu peux aussi essayer de compiler en PBD plutôt qu'en DLL pour voir si c'est plus rapide
Ben là on connait déjà la réponse
Oui c'est beaucoup beaucoup beaucoup beaucoup plus rapide
Mais c'est pas un scoop ça
Même que les calculs risquent d'être plus long à l'exécution avec des PBD à la place des DLL...
Faut savoir ce qu'on veut. Mais tu as raison, peut-être que notre ami n'a pas besoin d'une compil en code machine.
Hors ligne
je sais, mais peut-être que ça va mettre 2 minutes au lieu de 9 heures
Hors ligne
erasorz a écrit:
je sais, mais peut-être que ça va mettre 2 minutes au lieu de 9 heures
Là ce serait bête. Il n'aurait plus le temps de prendre son café.
Hors ligne
remarque situation intéressante pour un indépendant :
1 jour de boulot, 1 jour de compilation, 1 jour de débugage, 1 jour de compilation
Hors ligne
erasorz a écrit:
remarque situation intéressante pour un indépendant :
1 jour de boulot, 1 jour de compilation, 1 jour de débugage, 1 jour de compilation
On dirait du Cool:Plex
Hors ligne
Faudrait un peu nous parler du PC qui compile aussi, 486 dx2 ou Core2Duo ? ça change tout aussi
Dernière modification par rincevent (26-08-2009 15:31:18)
Hors ligne
Je suis sur un projet de 82 PBL avec plus de 600 Ecrans et 1800 datawindows, etc...
Quand je compile, je ne suis pas compliqué et j'ai du timing. En fait, c'est hyper simple comment je fais :
Etape 1 : copier toutes les pbl de l'application, image et autres sur un autre repertoire appellé compil.
Etape 2, je crée le workspace de ce reprtoire de compilation.
Etape 3 : je compile . J'en ai pour près de 40 minutes.
En fait, il faut savoir que si tu compile avec une pbl qui est aussi utilisé par ton collaborateur, là, tu peux attendre que ton collaborateur ait finit de bosser. Surtout si ta pbl est défini comme framework (ancetre de tous tes objets) pour l'appli, ou alors c'est une pbl metier.
Il y a un truc aussi : comment as tu agencé (hérité) tes objets ?
Allez a plus. Avec ça, normalement, cela devrait être plus coohool.
Hors ligne
Bonjour Patrick,
Perso, j'ai un autre souci avec la compilation. Quand je la lance, j'ai même pas le temps d'aller boire un café.
Bon, on va reprendre dans l'ordre.
1) Compile en pbd
Si tu penses que le p-code est plus lent à l'exécution, dit toi que le byte-code est la solution choisie par Microsoft pour compiler C# et toute la plateforme .net.
Cerise sur le gateau, tu pourra utiliser les exceptions.
2) C'est quoi ce repertoire partagé ?
Pas lié à la vitesse de compil, mais vous devriez investir dans un véritable source control.
3) Reprend les deux conseils de Chrnico
a) antivirus. Du point de vue de l'antivirus, modifier un exe ou une dll est hautement suspect. Or, que fait un compilateur ?
b) ta pbl est vraiment trop grosse, il faut la découper en plusieurs petites pbls. Nos pbls ont une taille moyenne de 1Mo, la plus grosse fait 3Mo.
c) puis, dans ton projet, sélectionne une pbd par librairie
4) Tu compiles sur ton serveur Oracle !????
Chez moi aussi il compile lentement pendant que j'encode mes DIVX.
Il faut impérativement compiler sur un autre PC, ET compiler en local (d'où reflexion à mener sur un source control)
Hors ligne