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 :

Temps de parcours d'une ArrayList


Sujet :

Collection et Stream Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2011
    Messages
    756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 756
    Par défaut Temps de parcours d'une ArrayList
    Bonsoir à tous, je viens vous voir, non pas pour un problème de code en soit, plutôt pour une réflexion.


    J'ai une structure d'arraylist, dont chaque membre est également une array list.

    Bon, une array list d'array list, vous allez me dire c'est pas immense.

    Oui mais voilà, étant donné le traitement que je réalisé, je suis quasiment obligé pour mettre ces listes à jour de parcourir la totalité des éléments après chaque instructions.
    Sa commence donc à devenir un peu volumineux tout ça^^


    Par exemple, j'ai voulu faire jouer une partie entièrement aléatoire à mon IA. Pour une taille de plateau de 9x9.
    La génération de la partie entière a pris environ 5 secondes.


    Je trouve ce temps de 5 secondes pour générer une seule partie aléatoire relativement énorme.
    Le but de l'ia ça sera quand même de jouer des centaines de parties aléatoire pour choisir le meilleur coup. Hors je me rends compte que je ne vais pas pouvoir en faire autant que je voudrais à cause de cette contraintes temporelle.

    Du coup, je me demandais s'il y avait des astuces pour améliorer le temps de parcours d'une array list. je ne peux pas simplement ignorer des éléments, je suis obligé de tous les regarder à chaque fois.
    Après je suis conscient d'être sur un ordi portable, de tourner seulement en 32 bits et que je n'aurais pas des performances extra...mais le but de mon projet est d'essayer de faire tourner une IA potable pour un jeu de Go, et sans améliorer le temps d'exécution cela me semble être mission impossible.

  2. #2
    Membre Expert
    Avatar de eulbobo
    Homme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2003
    Messages
    786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Novembre 2003
    Messages : 786
    Par défaut
    L'ArrayList fait partie des implémentations les plus performantes en terme de parcours, donc je pense que ton problème vient d'ailleurs (parce que 5 secondes pour parcourir un tableau 9x9, y'a un soucis)

    Si tu as le code de parcours, on pourra te dire ce qui cloche. Le problème vient peut-être du côté "aléatoire"...

  3. #3
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Apparemment les 5 secondes c'est pour jouer une partie entière, avec notamment détection des coups illégaux, des prises et de la fin de partie.
    Ça fait beaucoup de parcours, déjà, et ça peut facilement prendre du temps sans une détection bien programmée.

    En tout cas il n'y a pas d'astuce du genre "parcourir plus vite" mais plutôt du genre "ne pas avoir besoin de parcourir."
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Membre éprouvé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2011
    Messages
    756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 756
    Par défaut
    Oui les cinq secondes sont bien pour la partie entière.

    Et effectivement le jeu de go a des règles assez simples mais pour que tout soit bien à jour on est obligé de faire des vérification en permanence.


    Après, peut être que le problème vient finalement de l'aléatoire...à chaque coup généré je dois m'assurer qu'il est valide, mais plus je m'approche de la fin de la partie et plus il est probable que je tape des coups déjà joués ou des coups illégaux.
    Je pourrais tenté de biaiser cela, mais je risque de sortir du contexte monte carlo à ce moment là.


    SI j'ai bien compris je devrais plutôt chercher des cas dans lesquels refaire tout mes parcours n'est pas utile.

    Par exemple détecter la fin de la partie lors du premier coup joué ça sert à rien, c'est aussi très rapide remarque, mais si je peux généraliser une valeur minimale ça pourrait réduire le nombre de parcours inutile surement.


    Bon en tout cas merci pour vos réponse.

Discussions similaires

  1. Problème avec parcours d'une ArrayList et Iterator
    Par Raiden1234 dans le forum Collection et Stream
    Réponses: 6
    Dernier message: 30/03/2008, 21h16
  2. [FB1.5]Parcours d'une PS ?
    Par Sitting Bull dans le forum Débuter
    Réponses: 5
    Dernier message: 13/12/2004, 14h59
  3. [C#] [ADO] Parcours d'une grande quantité d'enregistrements
    Par Wavyx dans le forum Windows Forms
    Réponses: 4
    Dernier message: 21/09/2004, 09h16
  4. [VB.NET] Temps d'éxécution d'une page...
    Par Webman dans le forum ASP.NET
    Réponses: 3
    Dernier message: 04/06/2004, 12h20
  5. Affichage du temps d'exécution d'une requête
    Par milka dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 22/03/2004, 17h48

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