IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

2D Java Discussion :

(Android:bitmap/color) Différence significative inexplicable de performance entre 2 méthodes:


Sujet :

2D Java

  1. #1
    Nouveau Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2016
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 29
    Localisation : Afghanistan

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2016
    Messages : 2
    Points : 1
    Points
    1
    Par défaut (Android:bitmap/color) Différence significative inexplicable de performance entre 2 méthodes:
    Bonjour, le but est de griser une image.
    Pour cela j'ai deux méthodes. La mienne et celle d'un autre éleve.
    La mienne, qui prend 5025 millisecondes sur du (1200*1920):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    void griser(Bitmap b){
            int[] couleurs=getbitcouleurs(b);
            int height=b.getHeight();
            int width=b.getWidth();
            for (int i =0;i < height*width; i++){
                int tmp = couleurs[i];
                int gris= (int)((Color.blue(tmp)+Color.red(tmp)+Color.green(tmp))*0.33);
                couleurs[i]=Color.argb(alpha(tmp),gris,gris,gris);
            }
            b.setPixels(couleurs,0,width, 0, 0, width, height);
        }
     
    int[] getbitcouleurs(Bitmap b){
            int height=b.getHeight();
            int width=b.getWidth();
            int couleurs[]=new int[height*width];
            b.getPixels(couleurs, 0, width, 0, 0, width, height);
            return couleurs;
        }
    Celle de mon collègue, qui prend 363 secondes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    public void toGray2(Bitmap img) {
            int w = img.getWidth();
            int h = img.getHeight();
            int [] tab = new int[h*w];
            img.getPixels(tab, 0, w, 0, 0, w, h);//Gets the array of the bitmap's pixels
     
            for (int i = 0; i<w*h; i++) {
                int tmp = tab[i];
                int blue = (int) ((tmp & 0x000000FF) * 0.11);//Gets the blue component of the pixel by filtering the integer Color and weight the average
                int green = (int) (((tmp & 0x0000FF00) >> 8) * 0.59);//same for the green component
                int red = (int) (((tmp & 0x00FF0000) >> 16) * 0.3);//same for the red component
                int color_custom = blue + green + red;
                int final_pix = 0xFF000000 | (color_custom << 16) | (color_custom << 8) | color_custom;//Makes an integer matching the Color's formatting
                tab[i] = final_pix;
            }
            img.setPixels(tab, 0, w, 0, 0, w, h);
        }
    Personne dans ma classe, ni même le prof, ne comprend la raison d'une telle différence d'efficacité. Une idée?

    PS: mon collègue a récrit les fonctions Color.blue() etc...
    J'ai déjà testé de les récrire sur le mêmes modelé mais le problème ne vient pas de la car le programme a mis 7650 millisecondes.

  2. #2
    Nouveau Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2016
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 29
    Localisation : Afghanistan

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2016
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    363 milli secondes*

Discussions similaires

  1. [PC portable] Différence de performance entre processeur 2 Ghz et 2,5 GHz
    Par debdev dans le forum Ordinateurs
    Réponses: 5
    Dernier message: 02/11/2009, 12h41
  2. Différence de performance entre localhost et serveur
    Par Borowsky dans le forum Décisions SGBD
    Réponses: 5
    Dernier message: 10/09/2009, 00h56
  3. Réponses: 9
    Dernier message: 19/05/2009, 22h42
  4. Réponses: 14
    Dernier message: 12/04/2009, 20h47
  5. Différence de performance entre JOIN et Subselect ?
    Par guidav dans le forum Requêtes
    Réponses: 1
    Dernier message: 20/07/2007, 10h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo