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

Biblioth�ques, syst�mes et outils C Discussion :

Impl�mentation SET et rapidit� de recherche


Sujet :

Biblioth�ques, syst�mes et outils C

  1. #1
    Membre �prouv�
    Homme Profil pro
    D�veloppeur
    Inscrit en
    Ao�t 2003
    Messages
    1 501
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 39
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activit� : D�veloppeur

    Informations forums :
    Inscription : Ao�t 2003
    Messages : 1 501
    Par d�faut Impl�mentation SET et rapidit� de recherche
    Bonjour,

    J'ai besoin de faire de nombreuses recherche dans une liste d'�l�ments uniques (plusieurs millions) de type mpz_t (bigint de la biblioth�que mpir).

    Quelles impl�mentations de set performante existe-t-il en C ?

    Dois-je m'orienter sur un hashset ou un treeset pour avoir les meilleures performances en recherche ?

    Merci d'avance.

  2. #2
    Mod�rateur
    Avatar de dinobogan
    Homme Profil pro
    ing�nieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 44
    Localisation : France

    Informations professionnelles :
    Activit� : ing�nieur
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Par d�faut
    Tu ne donnes pas assez de d�tails, alors je vais faire des suppositions.
    Supposons que tous tes mpz_t tiennent en RAM dans un seul tableau. Supposons que tu puisses y appliquer une relation d'ordre total (je ne connais pas la structure mpz_t). Supposons enfin que l'ensemble des mpz_t ne change pas.
    Alors pour une premi�re approche, tu vas trier le tableau. Puis, pour toutes tes recherches, tu feras une recherche dichotomique.
    Si tu as 16 millions d'�l�ments, ta recherche dichotomique ne demandera que 24 tests pour trouver l'�l�ment cherch�.
    L'avantage de cette approche est que le code est simple et court. Tu vas tr�s vite avoir un chronom�trage sur les temps de recherches et tu pourras revenir ici s'il faut am�liorer les temps de recherches.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  3. #3
    Membre �prouv�
    Homme Profil pro
    D�veloppeur
    Inscrit en
    Ao�t 2003
    Messages
    1 501
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 39
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activit� : D�veloppeur

    Informations forums :
    Inscription : Ao�t 2003
    Messages : 1 501
    Par d�faut
    Bonjour,

    Tous les mpz_t sont en RAM (�a fait en tableau de 2 � 4 Go) et il ne change pas sauf si le programme red�marre.

  4. #4
    Membre �prouv�
    Homme Profil pro
    D�veloppeur
    Inscrit en
    Ao�t 2003
    Messages
    1 501
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 39
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activit� : D�veloppeur

    Informations forums :
    Inscription : Ao�t 2003
    Messages : 1 501
    Par d�faut
    Bonjour,

    J'ai pu chang� les mpz_t par des unsigned long long et j'ai aliment� un tableau de taille fixe (actuellement 26 898 867 �l�ments) avec les nombres tri�s.

    J'ai essay� une recherche dichotomique mais je ne trouve pas �a rapide, avez-vous une meilleure alternative ?
    Sachant que :
    • le nombre d'�l�ments est fixe et aucun �l�ment n'est ajout�/supprim� apr�s initialisation du tableau
    • l'ordre n'a pas d'importance



    PS : je peux �ventuellement switcher vers du C++
    si c'est une librairie externe, elle doit �tre utilisable sur Windows ET Linux

  5. #5
    R�dacteur/Mod�rateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 153
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 38
    Localisation : Canada

    Informations professionnelles :
    Activit� : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 153
    Billets dans le blog
    4
    Par d�faut
    - pas rapide : C'est a dire ? Tu as quel r�sultat et esp�res quel r�sultat ?
    - ordre pas important : Tes �l�ments ne sont pas tri�s ? Comment effectues donc ta recherche alors ?
    - changement de langage : C++ a une structure set et unordered_set (hashset) en standard, aucune id�e des performance par contre

    Plus rapide que du dichotomique sur structure tri�e euh.. On se rapproche de la science fiction. Tes �l�ments se suivent-ils ? Y'a-t-il aucun trous ? Peux-tu cr�er un index unique dans [1-X] depuis chacun d'eux ? Si oui a une de ces question, un tableau pourrait �tre envisag�, et la recherche devient juste le calcul de l'index et un d�calage de pointeur.
    Pensez � consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation r�seau ?
    Aucune aide via MP ne sera dispens�e. Merci d'utiliser les forums pr�vus � cet effet.

  6. #6
    Membre Expert
    Inscrit en
    Mars 2005
    Messages
    1 431
    D�tails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 1 431
    Par d�faut
    Une recherche dichotomique sur un tableau de cette taille, c'est cache miss garanti � chaque acc�s. Autrement dit, le processeur va passer deux pour cent de ses cycles � ex�cuter ton code et le reste � attendre les informations.

    Pas mieux que Bousk : quel est ton cas d'utilisation ? Qu'esp�res-tu ? Quels sont tes points de comparaison ?

  7. #7
    Membre chevronn� Avatar de fenkys
    Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    Octobre 2007
    Messages
    376
    D�tails du profil
    Informations personnelles :
    �ge : 58
    Localisation : France

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement logiciels
    Secteur : High Tech - Produits et services t�l�com et Internet

    Informations forums :
    Inscription : Octobre 2007
    Messages : 376
    Par d�faut
    Citation Envoy� par Bousk Voir le message
    - ordre pas important : Tes �l�ments ne sont pas tri�s ?
    Il n'a pas dit que sa liste n'�tait pas tri�, mais que l'ordre n'�tait pas important. En clair, si on lui propose un ordre qui permet d'am�liorer les performances, il n'aura aucun probl�me � l'adopter.
    Enfin, c'est comme �a que je l'ai compris.

Discussions similaires

  1. Impl�mentation d'un moteur de recherche interne
    Par dr� kam dans le forum MySQL
    R�ponses: 7
    Dernier message: 24/05/2017, 19h42
  2. [XL-2010] Filtre �labor� : rapidit� en recherche
    Par QuestVba dans le forum Macros et VBA Excel
    R�ponses: 16
    Dernier message: 07/01/2016, 13h42
  3. Augmenter la rapidit� de recherche dans un fichier volumineux
    Par abdelkarim_1987 dans le forum Excel
    R�ponses: 34
    Dernier message: 17/09/2013, 17h00
  4. Erreur impl�mentation d'arbre binaire de recherche.
    Par Pallas. dans le forum D�buter
    R�ponses: 2
    Dernier message: 24/03/2011, 19h27
  5. Classe impl�mentant Set
    Par Space23 dans le forum D�buter avec Java
    R�ponses: 1
    Dernier message: 09/03/2009, 13h47

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