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 :

Puissance de deux supérieure


Sujet :

C

  1. #21
    Expert confirmé

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par défaut
    J'ai toujours le meme ordre, en optimise comme en debug, sur xeon (gcc), core 2 duo (gcc), sparc (sun cc), Alpha (gcc). Sur power pc (IBM xlc) en debug la methode de fearyourself est meilleure que la tienne, en optimise c'est l'inverse. Les rapports varient suivant l'architecture et le degre d'optimisation.

  2. #22
    Membre émérite Avatar de stephl
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2007
    Messages
    643
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2007
    Messages : 643
    Par défaut
    OK, merci. Je ne pensais pas qu'il pouvait y avoir de telles différences.

  3. #23
    Expert confirmé

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par défaut
    Une idee, c'est quoi RAND_MAX chez toi? Ta methode est la seule qui va dependre largement de la valeur des donnees. Si tu as un RAND_MAX a 2^15-1, elle est plus rapide qu'avec un RAND_MAX a 2^31-1 (comme sur les machines ou j'ai regarde)

  4. #24
    Membre émérite Avatar de stephl
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2007
    Messages
    643
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2007
    Messages : 643
    Par défaut
    Citation Envoyé par Jean-Marc.Bourguet
    Une idee, c'est quoi RAND_MAX chez toi? Ta methode est la seule qui va dependre largement de la valeur des donnees. Si tu as un RAND_MAX a 2^15-1, elle est plus rapide qu'avec un RAND_MAX a 2^31-1 (comme sur les machines ou j'ai regarde)
    Bien vu:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #define RAND_MAX 0x7FFFU
    Serait-ce donc l'explication?

  5. #25
    Expert confirmé

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par défaut
    Citation Envoyé par stephl
    Bien vu:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #define RAND_MAX 0x7FFFU
    Serait-ce donc l'explication?
    Adapate nos codes en fonction des valeurs maximales reelles, et mesure... Il n'est pas impossible que meme adapte ils soient plus lents. Puisque ton code depend des valeurs, si tu veux faire une vraie mesure, il faut aussi te definir une distribution (si ca tombe, la distribution lineraire que rand() correspond a celle de l'application, si ca tombe ce n'est pas le cas...) Le code par dicotomie est celui qui a le moins de variation, ce qui peut etre un avantage aussi.

    Je l'aurais ecrit autrement (non teste comme a chaque fois -- au fait tu as verifie que les codes faisaient bien le meme calcul?):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
      min = 0;
      max = 32;
      while (min+1 != max) {
          int mid = (min + max) / 2;
          if (nbr >= (1UL << mid)) {
              min = mid;
          } else {
              max = mid;
          }
      }
      return min;
    Mais c'est une autre histoire.

  6. #26
    Membre émérite Avatar de stephl
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2007
    Messages
    643
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2007
    Messages : 643
    Par défaut
    J'ai déjà vérifié et nos 3 fonctions donnent les mêmes résultats.

  7. #27
    Membre émérite Avatar de stephl
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2007
    Messages
    643
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2007
    Messages : 643
    Par défaut
    Je pense que votre explication (RAND_MAX) était la bonne. Plutôt qu'adapter vos codes à une plage de valeurs sur 15 bits, j'ai changé de générateur aléatoire, le nouveau pouvant produire sur 31 bits selon une loi uniforme. Les résultats sont maintenant conformes aux vôtres. Donc, même avec (seulement) 32 bits, vos méthodes surpassent largement la mienne.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    MÚthode fearyourself: 77.296 s
    MÚthode Jean-Marc Bourguet: 54.500 s
    MÚthode stephl: 102.641 s

  8. #28
    Membre éprouvé
    Avatar de NiamorH
    Inscrit en
    Juin 2002
    Messages
    1 309
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 1 309
    Par défaut
    Et si maintenant vous interchangez l'ordre des tests, trouvez vous une différence ? Parce que, souvent les tests de vitesse que j'ai pu faire se sont parfois avérés inversés selon l'ordre dans lesquels je les faisais. J'ai pas d'exemple sous la main mais ça m'est arrivé plusieurs fois.
    Je ne suis pas un expert non plus en matiere de benchmark et de comment on doit s'y prendre.

  9. #29
    Membre émérite Avatar de stephl
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2007
    Messages
    643
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2007
    Messages : 643
    Par défaut
    Citation Envoyé par NiamorH
    Et si maintenant vous interchangez l'ordre des tests, trouvez vous une différence ?
    Logiquement, tel que le code est écrit, il ne devrait pas y en avoir. J'ai d'ailleurs fait le test et il n'y en a pas.
    Citation Envoyé par NiamorH
    Parce que, souvent les tests de vitesse que j'ai pu faire se sont parfois avérés inversés selon l'ordre dans lesquels je les faisais.
    Cela signifie qu'il y a quelque chose dans votre code dépendant de l'ordre d'exécution. Ici, ce qui est comptabilisé dans le temps d'exécution n'est que du temps de calcul. Le problème que vous suggérez peut se manifester si votre code comptabilise aussi un chargement en mémoire ou quelque chose dans ce genre.

  10. #30
    Expert confirmé

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par défaut
    Citation Envoyé par stephl
    Donc, même avec (seulement) 32 bits, vos méthodes surpassent largement la mienne.
    Il me semble que le demandeur savait que normalement les donnees etaient limitees a 12 bits. On peut facilement biaiser la recherche dicothomique pour mieux traiter ces cas; ma methode est moins sujette a une telle manoeuvre.

  11. #31
    Membre émérite Avatar de stephl
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2007
    Messages
    643
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2007
    Messages : 643
    Par défaut
    Citation Envoyé par Jean-Marc.Bourguet
    Il me semble que le demandeur savait que normalement les donnees etaient limitees a 12 bits. On peut facilement biaiser la recherche dicothomique pour mieux traiter ces cas; ma methode est moins sujette a une telle manoeuvre.
    En tout cas, merci pour votre explication qui - me semble-t-il - était la bonne.

Discussions similaires

  1. FFT et images dont la taille n'est pas une puissance de deux
    Par BarBiTueRie dans le forum Traitement d'images
    Réponses: 2
    Dernier message: 11/05/2011, 10h27
  2. Recherche dichotomique pour la puissance de 2 supérieure
    Par fearyourself dans le forum Télécharger
    Réponses: 0
    Dernier message: 30/11/2010, 17h15
  3. Réponses: 4
    Dernier message: 04/03/2010, 21h35
  4. Somme de puissances de deux
    Par knowl dans le forum C#
    Réponses: 5
    Dernier message: 21/01/2008, 00h38
  5. texture et puissance de deux..encore
    Par mm2405 dans le forum OpenGL
    Réponses: 11
    Dernier message: 12/07/2006, 12h42

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