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

JavaFX Discussion :

[Scene]Tracage courbe Polyline trop lent


Sujet :

JavaFX

  1. #1
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2010
    Messages : 34
    Par défaut [Scene]Tracage courbe Polyline trop lent
    Bonjour à tous,

    J'aurais voulu savoir comment donné des ailes à mon programme bien lent.

    J'ai un tableau contenant mes points et je souhaite les dessiner afin de former une courbe. Pour cela je fais une boucle for et j'insère mes points dans un group que j'insère ensuite dans le content de ma scene.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    var graph_group:Group = Group{
    translateX: 1
    translateY: 1
    };
     
    var graph = new Polyline;
    ...
    var x:Number=0
    for (i in [0...15000] //j'ai beaucoup de point
    {
          insert [x, 260-plot[i]] into graph.points;
          x+=0.2;
    }
    Existe t-il un moyen d'accéléré la chose car c'est vraiment lent environ 10sec... Je pensais faire une animation avec ça, à moi les saccades...Bon je sais c'est 15000 points mais quand même

  2. #2
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 900
    Billets dans le blog
    54
    Par défaut
    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
     
    /*
     * To change this template, choose Tools | Templates
     * and open the template in the editor.
     */
    package test;
     
    import javafx.scene.Scene;
    import javafx.scene.control.Button;
    import javafx.stage.Stage;
    import javafx.scene.Group;
    import javafx.scene.shape.Polyline;
    import javafx.util.Math;
    import javafx.scene.paint.Color;
    import javafx.scene.layout.HBox;
    import java.lang.System;
     
    def button1: Button = Button {
                text: "Old"
                action: function(): Void {
                    def graph = Polyline {
                                stroke: Color.BLUE
                            };
                    var x: Number = 0;
                    def plot: Number[] = for (i in [0..15000]) {
                                Math.random() * 260;
                            }
                    def timeA: Long = System.currentTimeMillis();
                    //j'ai beaucoup de point
                    for (i in [0..15000]) {
                        insert [x, 260.0 - plot[i]] into graph.points;
                        x += 0.2;
                    }
                    def timeB: Long = System.currentTimeMillis();
                    println("Old: {timeB - timeA}ms");
                    def graph_group: Group = Group {
                                translateX: 1
                                translateY: 1
                                content: graph
                            }
                    insert graph_group into button1.scene.content;
                }
            }
    def button2: Button = Button {
                text: "New"
                action: function(): Void {
                    def graph = Polyline {
                                stroke: Color.RED
                            };
                    var x: Number = 0;
                    def plot: Number[] = for (i in [0..15000]) {
                                Math.random() * 260;
                            }
     
                    def timeA: Long = System.currentTimeMillis();
                    //j'ai beaucoup de point
                    graph.points = for (i in [0..15000]) {
                                def seq: Number[] = [x, 260.0 - plot[i]];
                                x += 0.2;
                                seq;
                            }
                    def timeB: Long = System.currentTimeMillis();
                    println("New: {timeB - timeA}ms");
                    def graph_group: Group = Group {
                                translateX: 1
                                translateY: 1
                                content: graph
                            }
                    insert graph_group into button1.scene.content;
                }
            }
     
    Stage {
        width: 1600
        height: 500
        scene: Scene {
            content: [
                HBox {
                    spacing: 5
                    content: [
                        button1,
                        button2
                    ]
                }
            ]
        }
    }
    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
    21
    22
     
    New: 6ms
    Old: 16ms
    New: 2ms
    Old: 6ms
    New: 1ms
    Old: 6ms
    New: 3ms
    Old: 7ms
    New: 3ms
    Old: 6ms
    Old: 6ms
    New: 1ms
    New: 2ms
    New: 3ms
    New: 2ms
    New: 1ms
    Old: 6ms
    Old: 6ms
    Old: 6ms
    Old: 6ms
    Old: 7ms
    Faut se souvenir qu'avec insert into on créée une nouvelle séquence graph.points à chaque itération de la boucle.

    Par contre y a pas de miracles, dès qu'il y a trop de courbes affichées ça rame.

    Pis faut surtout pas activer Prism car alors c'est la catastrophe, le programme ne peut même pas afficher une seule courbe...
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  3. #3
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2010
    Messages : 34
    Par défaut
    ok merci pour tes conseils ! ça à l'air drôlement plus rapide d'un seul coup

    edit : 10sec => 1 sec !!! MERCI

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Convolution trop lente...
    Par progfou dans le forum Traitement d'images
    Réponses: 6
    Dernier message: 05/08/2006, 11h44
  2. [Eclipse] Editeur de code trop lent
    Par Benzeghiba dans le forum Eclipse Java
    Réponses: 6
    Dernier message: 10/11/2005, 14h02
  3. boucle while trop lente
    Par atouze dans le forum Access
    Réponses: 17
    Dernier message: 15/06/2005, 16h35
  4. [SAGE] ODBC trop lent
    Par tileffeleauzed dans le forum Décisions SGBD
    Réponses: 1
    Dernier message: 14/11/2004, 09h56
  5. Envoi de mail trop lent
    Par MASSAKA dans le forum ASP
    Réponses: 3
    Dernier message: 15/10/2004, 10h57

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