Accueil > Forum > > > > [j2me] Vitesse des boucles pour un dessin
[j2me] Vitesse des boucles pour un dessin
vendredi 9 mai 2008 à 12:08:41 |
[j2me] Vitesse des boucles pour un dessin

Twub
|
Bonjour, Voila je m'expose a un probleme bizarre, j'ai crée ma propre fonction de dessin d'un rectangle dans mon image, seulement elle est extrement lente. Pour vous expliquer, voici ma fonction: [code=java] public void fillRect2(int _x, int _y, int _w, int _h, int _ARGB) { int yDebut = _x+_y*this.__width; int yFin = _x+(_y+_h)*this.__width; int w = _w; int j, i; int width = this.__width; for(j = yDebut; j<=yFin; j += width) { for(i = j; i < w; i++) this.__tabJeux[i] = _ARGB; w += width; } } [/code] Ici le __tabJeux est le tableau de pixel de mon image. Comme vous voyez c'est exrement simple, seulement comparé au fillRect de la librairie Graphicscde JAVA, c'est lent. En effet le fillRect de java exécuté 100fois met 3ms et le mien exécuté aussi 100fois met 600ms environ... Je pense que cela vient du fais de ma boucle, mais je n'en suis pas sur du tout, auriez vous une explication ou une solution svp ^^  Voila, merci de votre aide ;) Twub
|
|
vendredi 9 mai 2008 à 14:01:00 |
Re : [j2me] Vitesse des boucles pour un dessin

DARKSIDIOUS
|
Salut, Soit à chaque fois que tu modifie ton tableau de pixels, l'affichage est mis à jour, ce qui rend ton algorithme bien plus lent, soit les fonctions de l'API Java sont natives, et donc bien plus rapide à exécuter que du code java managé (je pencherai plutôt pour la seconde !). ______________________________________ DarK Sidious
|
|
vendredi 9 mai 2008 à 14:07:02 |
Re : [j2me] Vitesse des boucles pour un dessin

Twub
|
Oui étant donné que je gere l'affichage qu'une fois le tableau rempli, la premiere hypothese me parait donc impossible. Seulement il n'existerait pas en java la façon d'augmenter la rapidité de mon code? gérer la priorité par exemple?
Merci de ta reponse.
Twub
|
|
vendredi 9 mai 2008 à 15:05:32 |
Re : [j2me] Vitesse des boucles pour un dessin

DARKSIDIOUS
|
Salut, 600 ms pour 100 affichages, ca me paraît quand même pas trop mal pour du code managé ! Ca fait moins de 6 ms par tracé...
A titre de comparaison, le VB est beaucoup plus lent sur un PC : environ 16 ms par tracé en utilisant l'API Windows.
Je présume que tu veux utiliser ce code pour ton algorithme de déformation d'image...
Je t'avais conseillé d'utiliser les fonctions standard de l'API, et il semblerait bien que J2ME gère les Graphics2D vu qu'ils sont intégrés dans la doc de sun pour J2ME (il s'agit d'un package optionnel, mais package disponible tout de même) : http://java.sun.com/javame/reference/apis/jsr209/
Tu te prendrais bien moins la tête en utilisant l'API standard. ______________________________________ DarK Sidious
|
|
vendredi 9 mai 2008 à 15:27:06 |
Re : [j2me] Vitesse des boucles pour un dessin

Twub
|
Bonjour, Non l'algo de déformation de l'image je l'ai réglé, il est optimisé  Celui-ci, me permet juste de faire un pot de peinture dans une zone rectangulaire. Je ne peux par ailleurs pas utiliser les fonctions standard de dessin de java, puisque mon ecran est un tableau de pixel que je rempli case par case. La pour laquel je refais les fonctions de dessin, c'est qu'elles sont toutes plus rapide que celle de java. Toutes plus rapide sauf celle-ci... Je n'ai pas vraiment d'explication de pourquoi celle-ci est plus lente...? Mais en tout cas merci de t'y préocuper  Twub
|
|
vendredi 9 mai 2008 à 15:42:18 |
Re : [j2me] Vitesse des boucles pour un dessin

DARKSIDIOUS
|
Salut, Et bien déjà, une toute petite optimisation :
for(i = xDebut; i<=xFin; i += height) { for(j = i; j < w; j++) this.__tabJeux[j] = _ARGB; w += width; }
Explication : Il y a de grandes chances que les pixels de ton tableaux soit rangés en mémoire sur les coordonnées X en ligne, et Y en colonnes, c'est à dire : [i, j][i + 1, j][i + 2, j]...[i + width, j][i, j + 1]...
Il est ainsi plus rapide pour le processeur de lire séquentiellement les tableaux de i qui ont de grande chance d'être placés en cache plutôt que de lire d'abord les j puis les i.
Mais ca ne te fera pas gagner 500 ms !
Montre nous plutôt comment tu appelle ta fonction, on ne sais jamais... ______________________________________ DarK Sidious
|
|
vendredi 9 mai 2008 à 16:01:20 |
Re : [j2me] Vitesse des boucles pour un dessin

Twub
|
Re-Bonjour, en fait si tu regarde bien , c'est ce que mes boucles font deja, je calcul a quel pixel sur y je dois commencer et auquel je dois m'arreter. Et donc je rajoute width pour aller a la ligne du dessous et je la rempli jusqu'a arriver au bout puis rebelotte, je vais a la ligne du dessous  Pour mon appel de fonction pour mes tests je le fais dans un programme a part pour etre sur de mes résultats de vitesse. Voila, Twub
|
|
vendredi 9 mai 2008 à 16:04:30 |
Re : [j2me] Vitesse des boucles pour un dessin

Twub
|
Ps: je comprend ta confusion, dans mon code j'ai nommé mon i avec j et mon j avec i ^^
Dsl ^^
Twub
|
|
vendredi 9 mai 2008 à 16:17:11 |
Re : [j2me] Vitesse des boucles pour un dessin

DARKSIDIOUS
|
Salut, Arf, t'as raison, ca m'a induit en erreur :p ______________________________________ DarK Sidious
|
|
Cette discussion est classée dans : java, int, dessin, width, j2me
Répondre à ce message
Sujets en rapport avec ce message
Client/serveur [ par titou445 ]
titou: serait il possible que l'on me donne le code pour receptionner et pour envoyer un tableau d'entiers svp?VOICI MON CODE:import java.net.*;import
client/serveur [ par titou445 ]
titou:> titou: serait il possible que l'on me donne le code pour receptionner et pour envoyer un tableau d'entiers svp?> VOICI MON CODE:> import java.
applet problème de class interne [ par neo1260 ]
Bonjour, j'ai une applet avec une class print et une class interne qui fait du FTP, quand je compil il n'y a pas d'erreur et quand je la charge dans m
Dessin Java [ par christouilhe ]
Bonjour à vous,j'ai une question à vous poser ... Je suis tout nouveau, tout beau, tout neuf dans le monde du dessin en Java ...Dans un premier temps,
pourquoi j"obtient un nullpointerException ? [ par Pratana ]
javais déja demandé mauis jai toujours pas ma réponse; mais pourquoi j'obtient un nullpointerException à la ligne :img_Col = getImage(empl, "COULEUR"+
Grand débutant cherche aide sur du BufferedImage [ par mageti ]
Salut à tous,Je suis débutant : ça fait 20 jours que je fais du java.Voilà mon problème: Une classe, dont le code-source est ci-après, est appelé par
C++ -> Java [ par christouilhe ]
Bonjour à vous tous.J'ai une question à vous poser ...Il se trouve que je dois retranscrire un programme C++ en Java, mais je ne sais pas du tout comm
format de sortie en java [ par zeriab ]
Bonjour, Dans le cadre d'un projet java ( dessin automatique de graphe) j'ai à définir des format de sortie du mon dessin final afin de l'intégrer dan
J2ME et pocket pc 2003 [ par bob24 ]
Salut, Je dois programmer une appli en java pour pocket pc 2003 et je suis un peu perdu. On gros, on m'a fourni Device Depeloper d'IBM et on m'a dit d
image arriere plan [ par Skyffer3 ]
Salut a tousVoila j'ai ce programme et il me faudrait un arriere plan, j'ai essaye comme il faut faire avec la methode public void paint, mais ca ne m
Livres en rapport
|
Derniers Blogs
PB LORS DE L'INSTALLATION SHAREPOINT 2010.PB LORS DE L'INSTALLATION SHAREPOINT 2010. par Patrick Guimonet
Lors de l'installation de SharePoint 2010, j'ai rencontré un problème de plantage à l'étape 5 du configuration Wizard. Ca se termine sur cet écran : Et en analysant le fichier de journalisation, on remarque vers la fin des 15000 et quelques lign...
Cliquez pour lire la suite de l'article par Patrick Guimonet [WF4] AJOUTER DES CONTRAINTES à UNE ACTIVITé (2/2)[WF4] AJOUTER DES CONTRAINTES à UNE ACTIVITé (2/2) par JeremyJeanson
Après mon précédent article qui attaque les contraintes par la fasse Nord de l'Everest. passons à la seconde possibilité offerte par WF4 pour valider une activité : la metadata . Je vous en ai déjà toucher un ou deux mots. La metadata dans WF4 est un élém...
Cliquez pour lire la suite de l'article par JeremyJeanson [WF4] AJOUTER DES CONTRAINTES à UNE ACTIVITé (1/2)[WF4] AJOUTER DES CONTRAINTES à UNE ACTIVITé (1/2) par JeremyJeanson
De WF3 à WF4 pas mal de choses on été changées pour faciliter la vie des développeurs, mais certain points peuvent sembler obscures. comme les contraintes. Pour vous guider, je me lance dans une série de deux articles. Ils présenterons deux approches poss...
Cliquez pour lire la suite de l'article par JeremyJeanson [ASP.NET] NE PAS SE FAIRE AVOIR PAR IHTTPMODULE ET SA MéTHODE INIT()[ASP.NET] NE PAS SE FAIRE AVOIR PAR IHTTPMODULE ET SA MéTHODE INIT() par tja
Beaucoup de développeurs pensent que lorsqu'on créé et enregistre un IHttpModule, il n'en existe qu'une seule instance et la méthode Init() sera appelée qu'une fois.
C'est faux
Cela peut vraiment créer des bugs subtils dont en ne se rend pas compte ...
Cliquez pour lire la suite de l'article par tja [MSTD10] SHAREPOINT 2010 ET TEAM FOUNDATION SERVER[MSTD10] SHAREPOINT 2010 ET TEAM FOUNDATION SERVER par phil
Un post rapide pour vous informer de la disponibilité de la vidéo de ma présentation sur SharePoint 2010 & Team Foundation Server. http://www.microsoft.com/france/vision/mstechdays10/Webcast.aspx?EID=20215d48-02e3-4d43-8c36-e53505c3b316 Dans la ...
Cliquez pour lire la suite de l'article par phil
Forum
RE : INTRFACE J2MERE : INTRFACE J2ME par manoula1112
Cliquez pour lire la suite par manoula1112
Logiciels
Xilisoft Convertisseur Vidéo Ultimate (5.1.39.0305)XILISOFT CONVERTISSEUR VIDéO ULTIMATE (5.1.39.0305)Xilisoft Convertisseur Vidéo Ultimate est un outil puissant de conversion vidéo, facile à utilise... Cliquez pour télécharger Xilisoft Convertisseur Vidéo Ultimate Xilisoft DVD Ripper Ultimate (5.0.64.0304)XILISOFT DVD RIPPER ULTIMATE (5.0.64.0304)Xilisoft DVD Ripper Ultimate est un logiciel excellent pour copier et convertir DVD vers presque ... Cliquez pour télécharger Xilisoft DVD Ripper Ultimate Rigs of Rods (63.3)RIGS OF RODS (63.3)c'est un jeu de multi-simulation camions,autobus voitures, avions, bateaux, hélicoptère avec défo... Cliquez pour télécharger Rigs of Rods Konvertor (4.00)KONVERTOR (4.00)Le logiciel est un gestionnaire multimedia affichant, jouant et convertissant plus de 2000 format... Cliquez pour télécharger Konvertor
|