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 :

Comparer multiplications et additions


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2011
    Messages : 5
    Par défaut Comparer multiplications et additions
    Bonjour,

    Je débute en C et avec Visual Studio 2010. Je suis en thèse en cryptographie et j'ai besoin de comparer la durée nécessaire pour faire une multiplication de 2 nombres de 8 bits et la durée pour une addition de 2 nombres de 8 bits.

    Pour l'instant, j'ai tapé ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
     
    int main(void){
    	int i = 0;
    	int nombre_aleatoire = 0;
    	for(i=0; i<10000; i++){
    		nombre_aleatoire = rand()*rand();
    		nombre_aleatoire = rand()+rand();
    	}
    	return 0;
    }
    J'aimerais obtenir les temps passés sur chaque ligne mais je n'y arrive pas avec l'analyseur de performance.


    Merci d'avance pour votre aide.

  2. #2
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 119
    Billets dans le blog
    148
    Par défaut
    Bonjour,

    Pour faire ce que vous voulez (calcul de temps d'une portion de code), il faudra rajouter du code.
    Ce code suit l'algorithme suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    t1=récuperation_du_temps()
    calcul
    t2=récupération_du_temps()
    Le temps du calcul -> t2 - t1()
    Maintenant, la fonction pour récupérer le temps.
    Ah tiens, c'était dans la FAQ -> http://c.developpez.com/faq/?page=da...E_chronometrer
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  3. #3
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 104
    Par défaut
    Par contre, ce ne sera jamais fiable pour calculer correctement le temps d'exécution d'une portion de code, car il faut tenir compte aussi des autres programmes qui tournent en parallèle (système multitâches).

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2011
    Messages : 5
    Par défaut
    Merci pour votre aide !

    J'ai réussi à le faire en maple et j'ai de "mauvais" résultats.
    L'addition de 2 nombres de 8 bits est seulement 20% plus rapide que la multiplication de nombres de 8 bits. Je m'attendais à ce que soit au moins 4-5 fois plus rapide ce qui rend les résultats de mon article beaucoup moins impressionants (en gros, j'ai modifié un schéma d'identification en divisant par 2 le nombres d'opérations et en passant de multiplications à des additions, je m'attendais à un gain de temps de calcul très significatif).

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2011
    Messages : 5
    Par défaut
    Mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h> //Ne pas oublier d'inclure le fichier time.h
     
    int main(void){
    	clock_t start, end;
        double elapsed;
        start = clock();
    	int i = 0;
    	int nombre_aleatoire = 0;
    	for(i=0; i<100000000; i++){
    		nombre_aleatoire = rand()*rand();
    	}
        end = clock();                                    /* Arret de la mesure     */    
        elapsed = ((double)end - start) / CLOCKS_PER_SEC; /* Conversion en seconde  */    
        printf("%.2f secondes entre start et end.\n", elapsed);
    	return 0;
    }
    Mes résultats :
    4.64s pour l'addition et 4.67s pour la multiplication

    Vous auriez des idées pour m'aider ?

    Ca me parait impossible que les temps soit si proche

  6. #6
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 119
    Billets dans le blog
    148
    Par défaut
    La fonction "rand()" est une fonction couteuse. Vous ne devriez pas l'inclure dans votre mesure (soit, sortez les rand() de la boucle)
    Soit générez un gros tableau en mémoire dynamique, avant :p
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

Discussions similaires

  1. multiplication en addition
    Par founiete dans le forum Débuter
    Réponses: 6
    Dernier message: 08/12/2010, 21h28
  2. multiplication et addition au systeme binaire
    Par kim sam dans le forum Débuter
    Réponses: 3
    Dernier message: 01/11/2010, 20h37
  3. Construction des Comparator multiples
    Par BloodH dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 22/02/2010, 00h54
  4. Comptages multiples et addition, je m'en sort plus.
    Par lapino dans le forum Requêtes
    Réponses: 4
    Dernier message: 05/02/2007, 14h16
  5. Addition et multiplications
    Par Yayel dans le forum SQL Procédural
    Réponses: 6
    Dernier message: 04/04/2003, 23h15

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