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

Collection et Stream Java Discussion :

Fréquence d'insertion de valeurs dans un Vector


Sujet :

Collection et Stream Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2006
    Messages : 65
    Par défaut Fréquence d'insertion de valeurs dans un Vector
    Bonjour à tous!

    Enfait j'ai créé un programme dans lequel un objet se déplace. J'ai voulu faire en sorte qu'on puisse afficher sa trace. J'ai donc utilisé un Vector et dans le thread de mon programme j'ai écris le code qui permet l'insertion de la position x et y dans le Vector.
    Cela signifie qu'à chaque tour du thread un point est ajouté/dessiné. Cela fait que le programme va moins vite que ça avance en saccadé! J'aimerais donc insérer les points dans mon Vector peut être à la (vitesse du thread/5) Comment puis-je contrôler cela?

    Merci d'avance!

    Pat-trix

  2. #2
    Membre chevronné Avatar de spekal
    Inscrit en
    Mai 2005
    Messages
    502
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 502
    Par défaut
    C'est parfaitement étrange.

    La première idée est que, à la place du Vector, tu peux utiliser un ArrayList, qui est plus moderne. Il fonctionne exactement pareil, et a exactement le même rôle ; ses accès sont un petit peu plus rapides.

    Cependant, il y a probablement autre chose. Combien cela représente-t-il d'objets enregistrés ?... Fais-tu un truc spécial avec ton Vector ?... etc.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2006
    Messages : 65
    Par défaut
    Oula, j'ai omis de préciser que c'est au moment de dessiner les points enregistrés dans le Vector que c'était saccadé; c'est pour cela que j' ai pensé que si je mettais moins de points dedans, ce ne serait pas saccadé.
    L'idée est donc d'insérer moins fréquemment les coordonnées de l'objet pour plus de fluidité.

    Merci
    Cordialement

    Pat-trix

  4. #4
    Membre chevronné Avatar de spekal
    Inscrit en
    Mai 2005
    Messages
    502
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 502
    Par défaut
    Citation Envoyé par pat-trix
    L'idée est donc d'insérer moins fréquemment les coordonnées de l'objet pour plus de fluidité.
    Oui, mais enfin, java est capable d'enregistrer de nombreuses coordonnées sans problèmes, sans sacades, heureusement. Ou alors il y en a vraiment beaucoup ? Ou alors ...

  5. #5
    Membre chevronné Avatar de broumbroum
    Profil pro
    Inscrit en
    Août 2006
    Messages
    406
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2006
    Messages : 406
    Par défaut
    Citation Envoyé par pat-trix
    Bonjour à tous!

    Enfait j'ai créé un programme dans lequel un objet se déplace. J'ai voulu faire en sorte qu'on puisse afficher sa trace. (...)
    Tu parles donc d'une trace... je te recommande la sous-classe Stack pour stocker les traces.

  6. #6
    Membre chevronné

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2002
    Messages
    346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2002
    Messages : 346
    Par défaut
    La classe Vector étant synchronisé, elle est ralentie par l'utilisation des Thread.
    Si l'objet dans lequel tu stocke tes coordonnées est unique par thread, donc n'est pas partagé entre les thread, alors je te conseil d'utiliser une ArrayList.

    Mais dans tout les cas, à part si tu as énormément de coordonnée, normalement un Vector est quand même assez performant. Peut être le problème se situe plus au niveau de l'affichage ...

  7. #7
    Membre Expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Par défaut
    Citation Envoyé par pat-trix
    Bonjour à tous!

    Enfait j'ai créé un programme dans lequel un objet se déplace. J'ai voulu faire en sorte qu'on puisse afficher sa trace. J'ai donc utilisé un Vector et dans le thread de mon programme j'ai écris le code qui permet l'insertion de la position x et y dans le Vector.
    Cela signifie qu'à chaque tour du thread un point est ajouté/dessiné. Cela fait que le programme va moins vite que ça avance en saccadé! J'aimerais donc insérer les points dans mon Vector peut être à la (vitesse du thread/5) Comment puis-je contrôler cela?

    Merci d'avance!

    Pat-trix
    Si tu vires la possibilité de stocker la trace dans un Vector, ça rame toujours?

    Si oui, je pense que c'est parce que tu supposes que chaque tour de boucle s'exécute toujours en x millisecondes, avec x constant (que tu es en synchrone en gros). Ce qui n'est pas du tout vrai (ça dépend de l'ordonnancement des threads, de la charge cpu, etc...).

    En général, pour faire ceci, il faut que tu stockes le temps de début (start = System.currentTimeMillis()), et ensuite, la nouvelle position est fonction du temps passé (System.currentTimeMillis() - start).

    Par exemple, pour une fonction linéaire en temps, la position (x,y) pourrait être ((current - start) / 200, (current - start) / 50)... (pour augmenter d'un pixel en x toutes les 5 ms (1/200) et d'un pixel en y toutes les 20 ms (1/50)...


    Si la répose à ma première question est "non", ignore ma réponse

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2006
    Messages : 65
    Par défaut
    Hé merci pour vos réponses!

    Enfait, c'est uniquement quand j'affiche les traces contenues dans le Vector que ça commence à ramer (saccades). Et comme je redessine à chaque tour du thread l'image de mon objet (qui se sera déplacé), je redessine aussi à chaque tour tous les points qui se trouvent dans mon Vector. C'est donc probablement l'affichage...!

    Merci
    Cordialement

    Pat-trix

Discussions similaires

  1. Réponses: 3
    Dernier message: 18/06/2007, 08h20
  2. Insertion de valeur dans une table
    Par The Goion dans le forum VBA Access
    Réponses: 4
    Dernier message: 28/05/2007, 21h14
  3. Réponses: 3
    Dernier message: 14/05/2007, 11h00
  4. Difficulte d'insertion de valeur dans une base de donnees
    Par blondelle dans le forum C++Builder
    Réponses: 10
    Dernier message: 13/04/2007, 21h19
  5. insertion des valeurs dans une colonne
    Par freestyler1982 dans le forum Langage SQL
    Réponses: 1
    Dernier message: 24/01/2007, 16h38

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