Mon applet est une usine a gaz [optimisation et solution inside] - Programmation
Marsh Posté le 08-08-2002 à 22:37:52
heu j'ai rien dit moi au niveau de sa "gourmandise" , je trouvais juste que ça lagguait à mort
Marsh Posté le 08-08-2002 à 22:48:19
si mes souvenirs sont bon tu es en V90 right?
Intstalle ton applet sur un server qui a un bon upload et là tu pourras faire des tests réels. Il ne faut pas oublier la communication entre l'applet et la servlet.
En ce qui concerne l'applet elle meme, tout dépend de la puissance de la machine.
A mon avis le lag provient du réseau.
Marsh Posté le 08-08-2002 à 22:59:54
DarkLord a écrit a écrit : si mes souvenirs sont bon tu es en V90 right? Intstalle ton applet sur un server qui a un bon upload et là tu pourras faire des tests réels. Il ne faut pas oublier la communication entre l'applet et la servlet. En ce qui concerne l'applet elle meme, tout dépend de la puissance de la machine. A mon avis le lag provient du réseau. |
merci de ton aide
mais il me faut preciser qu il n y a pas de servlet deriere
et que Zion l'a utiliser et le chat consommait 100% de son cpu ...
Note importante :Zion a un proc de 1.4 G si mes souvenir sont bon
Marsh Posté le 08-08-2002 à 23:01:34
sinon pour ce qui est de mon V90 , a l heure actuelle jpe pas changer de serveur tout simplement parce que j en ai pas d'autre
chez free on pas pas executer de programme c'est la tout le probleme
Marsh Posté le 08-08-2002 à 23:12:11
Quand le sale gnome java est arrivé dans ma traybar, c'est monté à 100% de CPU, et même après avoir killé ton applet, ce * voulait plus me lacher, ni moi ni mon CPU!
J'ai du rebooter, et franchement avec les 50 trucs ouverts au bon endroit, ca me bourre de rebooter!
Marsh Posté le 08-08-2002 à 23:12:54
Prochaine fois j'essaie ca sur une machine virtuelle
Marsh Posté le 08-08-2002 à 23:15:32
Zion a écrit a écrit : Quand le sale gnome java est arrivé dans ma traybar, c'est monté à 100% de CPU, et même après avoir killé ton applet, ce * voulait plus me lacher, ni moi ni mon CPU! J'ai du rebooter, et franchement avec les 50 trucs ouverts au bon endroit, ca me bourre de rebooter! |
t es sous windows?
really sorry
Marsh Posté le 08-08-2002 à 23:20:40
veryfree a écrit a écrit : t es sous windows? really sorry |
Benh j'étais sous Explorer, je t'ai bien dis que Opera et Mozilla ca marchait pas...
Enfin, spa grave, j'ai survécu, mais c'est chiant
Marsh Posté le 08-08-2002 à 23:30:24
est ce que ca rame dans applet viewer?
Marsh Posté le 08-08-2002 à 23:51:54
SchnapsMann a écrit a écrit : est ce que ca rame dans applet viewer? |
jcroi pas que ce soir possible de lancer une applet de chat ds l appletviewer pour la simple raison qu elle doit etre téléchargée a partir du serveur...
jvai essayé qd meme
Marsh Posté le 08-08-2002 à 23:56:13
je ne vois pas pourquoi tu ne pourrais pas essayer ton applet en local?
Marsh Posté le 08-08-2002 à 23:57:28
SchnapsMann a écrit a écrit : je ne vois pas pourquoi tu ne pourrais pas essayer ton applet en local? |
si en local mais pas avec l appletviewer, jvien d essayé a l instant et il met "probleme lors de la lecture du fichier {0}" enfin c chelou mais je pense pas que mon probleme se situe la en fait
Marsh Posté le 09-08-2002 à 00:10:38
As tu créé des widgets avec des méthodes de dessin custom ( paint(), paintComponent(), paintChildren()...) ?
Marsh Posté le 09-08-2002 à 00:15:29
SchnapsMann a écrit a écrit : As tu créé des widgets avec des méthodes de dessin custom ( paint(), paintComponent(), paintChildren()...) ? |
Citation : Dans une appli classique ,j instancie mes composants et ensuite je les place ds une frame |
c la tout mon probleme
je sait pas quoii mettre ds paint au juste....
merci de ton aide
Marsh Posté le 09-08-2002 à 00:40:38
Applet ou appli, c'est pareil pour ce qui est du fonctionnement du dessin :
- sois tu crée ton ui en utilisant container.add(composant) en configurant un layout manager approprié : dans ce cas c'est la méthode paint par défaut qui est utlisée (elle paint le fond du contenant, puis appelle la méthode paint des composant contenus en les disposant selon les directives du layout manager)
- sois tu redéfinis paint(), et à ce moment là tu dessines dans le composant selon ton bon vouloir
Il faudrait que je vois ton appli tourner, ou que tu balances le source; en effet ce n'est pas dis que ce soit le dessin qui rame.
Marsh Posté le 09-08-2002 à 01:04:23
SchnapsMann a écrit a écrit : Applet ou appli, c'est pareil pour ce qui est du fonctionnement du dessin : - sois tu crée ton ui en utilisant container.add(composant) en configurant un layout manager approprié : dans ce cas c'est la méthode paint par défaut qui est utlisée (elle paint le fond du contenant, puis appelle la méthode paint des composant contenus en les disposant selon les directives du layout manager) - sois tu redéfinis paint(), et à ce moment là tu dessines dans le composant selon ton bon vouloir Il faudrait que je vois ton appli tourner, ou que tu balances le source; en effet ce n'est pas dis que ce soit le dessin qui rame. |
si t es la fait signe et je lance le serveur...
Marsh Posté le 09-08-2002 à 08:46:52
100% CPU, c'est bizarre, quand même...Je parierai plutôt sur une boucle infinie, ou une Thread qui a pas de yield() ou de timeout dans son run....enfin, je sais pas ce que vous en pensez, mais bon..
Donc, à mon avis, cherche dans les classes de communucation réseau (genre, si la lecture sur la socket est pas bloquante, du style BufferedReader.readLine()..des trucs comme ça, etc..) et dans les classes où tu as des threads....
Pis a la limite, fait péter le code, ça aidera, non??
Marsh Posté le 09-08-2002 à 14:21:38
gfive a écrit a écrit : 100% CPU, c'est bizarre, quand même...Je parierai plutôt sur une boucle infinie, ou une Thread qui a pas de yield() ou de timeout dans son run....enfin, je sais pas ce que vous en pensez, mais bon.. Donc, à mon avis, cherche dans les classes de communucation réseau (genre, si la lecture sur la socket est pas bloquante, du style BufferedReader.readLine()..des trucs comme ça, etc..) et dans les classes où tu as des threads.... Pis a la limite, fait péter le code, ça aidera, non?? |
Pis a la limite, fait péter le code, ça aidera, non??
c'est vraiment tres long alors je montre un extrait:
Code :
|
il faut que je modifie ca donc?
merci de ton aide
Marsh Posté le 09-08-2002 à 14:26:22
Pas forcément, j'ai dit que c'était un hypothèse...
Dans ton code, in, c'est un BufferedReader?
Déjà, mettre l'analyse du message dasn cette méthode, c'est pas top : c'est pas évolutif du tout!!
Enfin, c pas grave...essaie d'ajouter un Thread.yield() à la fin de ta boucle :
Le code de la méthode équivalent de mon client Chat :
Code :
|
(network, c'est la thread...koi, c'est nu nom à la con??
Marsh Posté le 09-08-2002 à 14:48:05
il s agis bien d'un bufferedReader:
out = new PrintStream(socket.getOutputStream()); |
et pour le yield; ca va endormir le thread c bien ca?
combien de temps?
bon j essaye des que je peux
la jdoit allé faire des courses
merci encore
Marsh Posté le 09-08-2002 à 15:14:22
veryfree a écrit a écrit : et pour le yield; ca va endormir le thread c bien ca? combien de temps? |
Ca dit juste : je passe mon tour.
En gros il laisse les autres threads s'executer et reprends la main quand c'est a nouveau son tour.
Marsh Posté le 09-08-2002 à 15:41:55
lorill a écrit a écrit : Ca dit juste : je passe mon tour. En gros il laisse les autres threads s'executer et reprends la main quand c'est a nouveau son tour. |
ouais. Ca ne l'endormit pas, ca dit juste "si y a d'autres threads (ou process) qui ont quelque chose à faire, allez-y ! pour le moment pour moi y a pas d'urgence"
Marsh Posté le 09-08-2002 à 17:50:26
si y en a qui veulent venir essayer et me dire si c toujours aussi gourmand:
http://veryfree.dns2go.com
si ca vous soule de vous creer un compte bien que cela prennet 1 min essayé
user : test
pass: test
voila
Marsh Posté le 09-08-2002 à 18:06:32
bah, sous Mozilla, ça marche pas!
J'ai créé un compte, et il me loggue pas!
Marsh Posté le 09-08-2002 à 18:09:17
gfive a écrit a écrit : bah, sous Mozilla, ça marche pas! J'ai créé un compte, et il me loggue pas! |
ok ok
de toute facon y a un probleme de compatibilité avec le plug in
t a pas ie qui traine?
moi je télécharge mozilla pour resoudre le probleme
edit 10 Mo ca risque d etre long
Marsh Posté le 09-08-2002 à 18:13:42
bah, je suis au boulot, là, donc, sous Linux, mais le plugin, je l'ai : mon applet à moi, faut bien que je la teste, aussi!
Mais tiens, une bête question : y'a un serveur, à l'autre bout?? ou l'applet fait des requêtes HTTP??
Marsh Posté le 09-08-2002 à 18:19:34
gfive a écrit a écrit : bah, je suis au boulot, là, donc, sous Linux, mais le plugin, je l'ai : mon applet à moi, faut bien que je la teste, aussi! Mais tiens, une bête question : y'a un serveur, à l'autre bout?? ou l'applet fait des requêtes HTTP?? |
oui oui il y a un serveur ecrit par mes soins qui doit vraiment pas etre optimiser, il tourne sur ma machine mais j ai jamais eu plus de 15 requetes simultané alors je sait pas ce qu il vaux...
sinon le tout est hebergé sur ma machine windows + easyphp + rtc
voila
ps:je crois que j ai réglé le probleme d authentification
j ai pas essayé ca doxwnload encore la
Marsh Posté le 09-08-2002 à 18:27:56
gfive a écrit a écrit : ouais, je suis authentifié...Mais y'a pas d'applet.. |
t a cliqué sur le bouton chat?
et rien n apparait?
Marsh Posté le 09-08-2002 à 18:35:25
bah, en fait, les deux premiers items de menu n'apparaissent pas..
Browser-Compatibility powaaaa!!
Marsh Posté le 09-08-2002 à 18:40:19
gfive a écrit a écrit : bah, en fait, les deux premiers items de menu n'apparaissent pas.. Browser-Compatibility powaaaa!! |
a oui c problematique lol
j avait suivi les conseils de kasayax en fait ca avait l air super son truc de feuille de style c etait troop bo pour etre vrais
merci de ton aide
les test c pas pour tout de suite alors....
Marsh Posté le 09-08-2002 à 21:48:02
veryfree a écrit a écrit : a oui c problematique lol j avait suivi les conseils de kasayax en fait ca avait l air super son truc de feuille de style c etait trop bo pour etre vrai merci de ton aide les test c pas pour tout de suite alors.... |
bon ben tout est réparé
ca m a pris du temps qd meme
le site est compatible mozilla et opera
Marsh Posté le 12-08-2002 à 01:06:14
bon ben non en fait
ca comsome moins mais c tj trop
je sais pas quoi faire
d une maniere générale, qu est ce qui consomme beaucoups mis a part les thread?
Marsh Posté le 12-08-2002 à 09:34:12
des threads mal synchronisées
surtout si elle bosse sur des IO
tu as un mis un socket timeout sur la socket que tu crée au moins, pour que la lecture ne soit pas bloquante?
Marsh Posté le 12-08-2002 à 17:14:35
DarkLord a écrit a écrit : des threads mal synchronisées surtout si elle bosse sur des IO tu as un mis un socket timeout sur la socket que tu crée au moins, pour que la lecture ne soit pas bloquante? |
ben au niveau du client, il n y a qu un seul thread donc pas de prob de syncro (dite moi si jme trompe)
sinon
la je suis pas chez moi mais j'essaye ce soir le timeout...
merci de ton aide
Marsh Posté le 12-08-2002 à 18:55:29
veryfree a écrit a écrit : ben au niveau du client, il n y a qu un seul thread donc pas de prob de syncro (dite moi si jme trompe) sinon la je suis pas chez moi mais j'essaye ce soir le timeout... merci de ton aide |
oui synchronisée n'était pas le mot que j'aurai du utiliser. En réalité, si tu as une thread qui lit et qui attends des informations (par exemple une réponse du serveur, ou le serveur attend un commande du client). il faut pas qu'il attende comme un con pendant des heures sinon à terme ca va bouffer des ressources.
Solution qd tu crées ta socket tu lui associes un timeout de quelques seconds. Périodiquement tu vas voir que ton instruction read va partir en timeout et ca te permet d'un peu relacher les ressources et éviter le genre de probs que tu as. Je ne dis pas que c'est LA solution, je dis que ca peut etre une bonne piste.
bonne chance
Marsh Posté le 12-08-2002 à 20:28:39
DarkLord a écrit a écrit : oui synchronisée n'était pas le mot que j'aurai du utiliser. En réalité, si tu as une thread qui lit et qui attends des informations (par exemple une réponse du serveur, ou le serveur attend un commande du client). il faut pas qu'il attende comme un con pendant des heures sinon à terme ca va bouffer des ressources. Solution qd tu crées ta socket tu lui associes un timeout de quelques seconds. Périodiquement tu vas voir que ton instruction read va partir en timeout et ca te permet d'un peu relacher les ressources et éviter le genre de probs que tu as. Je ne dis pas que c'est LA solution, je dis que ca peut etre une bonne piste. bonne chance |
juste une petite question avant de faire des betises:
Citation : If the timeout expires, a java.io.InterruptedIOException is raised, though the Socket is still valid. |
si j ai bien compris, si personne ne parle sur le chat la methode qui lit le flux entrant de la socket devrai lever l exception java.io.InterruptedIOException et ca libere les ressources c bien ca? mais la methode ReadLine() associée a ce flux est toujours valables?
j ai mis 3000 ms pour le timeout
sinon je fait appel a cette methode qu un fois n est ce pas?
socket = new Socket(host,port);
socket.setSoTimeout(3000);
....
public void run(){
try{
monFlux.readLine();
}catch(InterruptedIOException ioe){...}catch(IOException ie){...}
}
c bien comme ca?
Marsh Posté le 08-08-2002 à 22:32:40
tout ceux qui l on essayé Zion Antp, cherrytree et j en passe on remarqué l extreme gourmandise de mon applet
si certain d entre vous pouvait me donner des conseils ce serai cool
la premiere question qui me vien:
mais ds une applet? ne doit je pas plutot placer les composant ds la methode paint()?
enfin j aimerait savoir exactement ce que je doit mettre ds cette fichu methode car il y a des probleme de rafraichissement de l image
merci de votre aide
Message édité par veryfree le 13-08-2002 à 22:59:25