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 :

Rapidité Division BigInteger


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mars 2012
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Mars 2012
    Messages : 15
    Par défaut Rapidité Division BigInteger
    Bonjour,

    J'aurai aimé savoir si quelqu'un connaitrait une méthode plus rapide que l'opérateur / pour faire une division entre deux BigInteger.

    Je dois faire 15000 divisions de ce type et ca me prend plus de 20sec et comme je vais devoir en faire plus je me demandais s'il existait une autre méthode.

    Cordialement

  2. #2
    Membre éprouvé
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2011
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2011
    Messages : 141
    Par défaut
    Salut,

    As-tu essayé en faisant une multiplication par l'inverse de ton diviseur ?
    Je ne sais pas si c'est plus rapide qu'une division, mais ça vaut le coup d'essayer...

  3. #3
    Membre averti
    Inscrit en
    Mars 2012
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Mars 2012
    Messages : 15
    Par défaut
    L'inverse de mon diviseur ne sera pas un entier donc je dois assigner á une autre variable á chaque boucle (car ce n'est pas toujours le meme diviseur) donc ca prend plus de temps et comme mon diviseur est un BigInteger lorsaue je prend l'inverse mon calcul devient "arrondi" et je n'ai plus le bon résultat.

    Merci quand meme

  4. #4
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Citation Envoyé par spottt Voir le message
    Salut,

    As-tu essayé en faisant une multiplication par l'inverse de ton diviseur ?
    Il a dit qu'il utilisait des BigInteger.

  5. #5
    Membre éprouvé
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2011
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2011
    Messages : 141
    Par défaut
    Citation Envoyé par Bluedeep Voir le message
    Il a dit qu'il utilisait des BigInteger.
    Yes, l'expression a été plus vite que la réflexion, désolé.

  6. #6
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Citation Envoyé par spottt Voir le message
    Yes, l'expression a été plus vite que la réflexion, désolé.
    Pas grave, ça arrive

  7. #7
    Membre Expert Avatar de DonQuiche
    Inscrit en
    Septembre 2010
    Messages
    2 741
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 2 741
    Par défaut
    Bonjour.

    Soit tes entiers sont vraiment énormes (>1E1000000), soit le problème vient d'ailleurs. Parce que si je veux bien croire que la division de BigInteger soit plus lente qu'une division normale, là on serait à plus de 1ms par division ?! Cela voudrait dire qu'il faut plus d'un million d'opérations par division, c'est ridicule.

    Je doute donc fortement que cette pauvre division soit la responsable.

  8. #8
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Bonjour,

    Citation Envoyé par CSharpN Voir le message
    Je dois faire 15000 divisions de ce type et ca me prend plus de 20sec et comme je vais devoir en faire plus je me demandais s'il existait une autre méthode.
    Non; c'est le problème avec les BigInteger, il n'existe pas d'instructions de manipulation native de ces structures dans le système (alors que le processeur a des instructions spécifiques pour les nombres à virgules flottante, par exemple), et la bibliothèque doit faire des opérations décomposées avec des "long" combinés en opérant les retenues dans le code => c'est long.

Discussions similaires

  1. De la rapidité du code
    Par jfloviou dans le forum Contribuez
    Réponses: 233
    Dernier message: 29/05/2009, 02h17
  2. NMHTTP prob de rapidité
    Par Goldocrack dans le forum C++Builder
    Réponses: 7
    Dernier message: 06/08/2003, 00h12
  3. Fonction divisant argument de type inconnu
    Par Nasky dans le forum C
    Réponses: 9
    Dernier message: 29/07/2003, 00h32
  4. Rapidite enregistrement
    Par mika dans le forum Débuter
    Réponses: 9
    Dernier message: 25/04/2003, 15h15
  5. probleme avec une division par zéro
    Par jcharleszoxi dans le forum Langage SQL
    Réponses: 2
    Dernier message: 26/03/2003, 18h14

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