begin process at 2010 03 12 23:30:31
  Trouver un code source :
 
dans
 
Accueil > Forum > 

JAVA / J2EE / J2ME

 > 

Divers

 > 

Général

 > 

[j2me] Vitesse des boucles pour un dessin


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

[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

Membre Club Administrateur CodeS-SourceS
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

Membre Club Administrateur CodeS-SourceS
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

Membre Club Administrateur CodeS-SourceS
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

Membre Club Administrateur CodeS-SourceS
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


Nos sponsors


Appels d'offres

Sondage...

Comparez les prix

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,749 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales