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

C# Discussion :

Remplacer un tableau 3D pour augmenter la vitesse


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Geek en formation
    Inscrit en
    Décembre 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Geek en formation

    Informations forums :
    Inscription : Décembre 2011
    Messages : 18
    Par défaut Remplacer un tableau 3D pour augmenter la vitesse
    Bonjour,
    Voila ma petite question. Dans le programme que je développe, j'ai de gros soucis de performances en temps a cause d'un tableau 3D. J'ai besoin de stocker mes données dans ce tableau et de les utiliser plus tard. Cependant, au moment de remplir le tableau, je perds énormément de temps.

    Quelqu'un connaitrait-il une astuce qui me permettrait de remplir plus rapidement mon tableau sans pour autant en changer le type complètement?
    Par exemple, au lieu d’accéder a tab[i,j,k], utiliser une sorte de pointeur sur tab[i]?

    (J’améliore un programme déjà créé et changer cette variable me ferait changer un très grosse partie du code, et je débute en C# donc pas d'bol pour moi ^^)

    Merci d'avance

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Les tableaux multidimensionnels sont assez lents, il n'y a a priori rien à faire pour changer ça... Le mieux serait de créer des classes pour représenter les données, plutôt que de tout mettre dans un tableau. Si tu ne peux pas faire ça facilement, utilise plutôt des tableaux imbriqués, c'est plus rapide que les tableaux multidimensionnels (tab[i,j,k] devient tab[i][j][k]).

  3. #3
    Membre averti
    Homme Profil pro
    Geek en formation
    Inscrit en
    Décembre 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Geek en formation

    Informations forums :
    Inscription : Décembre 2011
    Messages : 18
    Par défaut Thanks
    Merci, je vais tenter ca des que possible

  4. #4
    Membre averti
    Homme Profil pro
    Geek en formation
    Inscrit en
    Décembre 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Geek en formation

    Informations forums :
    Inscription : Décembre 2011
    Messages : 18
    Par défaut Merci
    Bon, ca marche. En tout cas j'ai divise par 2 le temps mis jusqu'a maintenant.
    Reste encore des progres a faire.
    Si quelqu'un avait une autre idee? Est-ce que par exemple jouer avec les adresses sur les tableaux pourrait aider?

  5. #5
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2011
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2011
    Messages : 28
    Par défaut
    Si les lignes sont de longueurs fixe dans le cube, tu peux définir un tableau mono-dimensionné de taille x*y*z, et déclarer les indices de boucles i, j et k en initialisant normalement.
    On parcours le cube comme ceci:
    pos = i + x*j + (x*y)*k

    Je sais pas si c'est très clair ce que je viens de dire, hésites pas à demander des précisions si besoin

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par Morbius Voir le message
    Si les lignes sont de longueurs fixe dans le cube, tu peux définir un tableau mono-dimensionné de taille x*y*z, et déclarer les indices de boucles i, j et k en initialisant normalement.
    On parcours le cube comme ceci:
    pos = i + x*j + (x*y)*k

    Je sais pas si c'est très clair ce que je viens de dire, hésites pas à demander des précisions si besoin
    Effectivement, j'avais même pas pensé... très bonne idée
    Ce sera sans doute encore beaucoup plus efficace.

    EDIT: tout compte fait, ça ne semble pas plus rapide... mais je ne suis pas totalement sûr de la validité de mon test

Discussions similaires

  1. Réponses: 4
    Dernier message: 02/04/2006, 18h42
  2. [Stratégie] taille de tableau max pour alleger les ressources systemes
    Par ceres02 dans le forum Collection et Stream
    Réponses: 9
    Dernier message: 24/02/2006, 19h06
  3. [Perf]comment on fait pour augmenter la RAM allouée?
    Par nico2280 dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 08/11/2005, 17h55
  4. Politique pour augmenter un tablespace
    Par jblemaire dans le forum Oracle
    Réponses: 3
    Dernier message: 17/08/2005, 10h03

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