CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Comparaison de performance d'un programme : C / Assembleur

News jeu

Expeditions: Samurai veut révolutionner le RPG tactique avec une aventure entièrement jouable en coop

Voir
Gangrefeu
Gangrefeu
Niveau 8
01 février 2023 à 20:10:56

Salut, j'ai codé un algo de crypto en C et en assembleur (x86 sur linux) et j'aimerais comparer la rapidité des deux. Seulement, je ne sais pas comment m'y prendre.

En C, la librairie time.h permet de connaître le temps d'exécution du programme. Mais j'ignore comment faire cela en assembleur.

J'ai trouvé l'instruction rdtsc qui permet de connaître le nombre de cycles d'horloge effectué entre deux morceaux du code. Mais j'ai l'impression qu'il y a un bruit énorme sur la valeur retournée (peut-être à cause de ce qui tourne sur le pc ?) Je ne vois pas alors comment comparer la rapidité de ces deux programmes. Le temps observé dans l'invit de commande n'est, semble-t-il, pas une référence...

Comment pourrais-je faire ?

Merci :-)

godrik
godrik
Niveau 30
01 février 2023 à 22:09:34

tu peux appeller gettimeofday dans les deux cas.

Doz35n
Doz35n
Niveau 8
03 février 2023 à 15:39:07

appelle ton algo plein de fois pour réduire l'impact du "bruit"

Gangrefeu
Gangrefeu
Niveau 8
04 février 2023 à 17:16:26

Le 01 février 2023 à 22:09:34 :
tu peux appeller gettimeofday dans les deux cas.

Merci je ne connaissais pas !

Le 02 février 2023 à 22:48:53 :
Sous linux,

time tonprogramme

encore plus pratique ! merci :-)

Le 03 février 2023 à 15:39:07 :
appelle ton algo plein de fois pour réduire l'impact du "bruit"

Un peu long de faire des moyennes, et ça varie vraiment fortement alors bon ..

Oberginee
Oberginee
Niveau 7
10 février 2023 à 01:14:13

Normalement t'as même pas besoin de les comparer car un compilateur moderne de C peut très bien optimiser les choses et ça dépasse certainement et largement un code écrit par un expert d'assembleur.

Il suffit d'activer ton paramètre O3 sinon tu peux voir comment gérer les paramètres.

godrik
godrik
Niveau 30
10 février 2023 à 15:20:17

Le 10 février 2023 à 01:14:13 :
Normalement t'as même pas besoin de les comparer car un compilateur moderne de C peut très bien optimiser les choses et ça dépasse certainement et largement un code écrit par un expert d'assembleur.

Il suffit d'activer ton paramètre O3 sinon tu peux voir comment gérer les paramètres.

Ce n'est pas forcement vrai. Il y a plein de cas ou le compilateur ne peut pas savoir que le reordonement d'instruction est possible. Ou que different pointeur sont aliase d'une facon qui permet d'eviter certaines operations memoire, ou ce genre de chose.

Oui, dans la plupart des cas c'est possible d'ecrire du code qui quand il est compile -O3 -march -mtune va avoir les memes performances. Masi souvent c'est parceque tu sais ecrire/lire le code assembleur sous jacent que tu sais comment ecrire le code C de facon a ce que le code assembleur genere soit optimise.

Sous forums
  • Aide à l'achat Mac
  • Internet
  • Macintosh
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Steam Deck
  • Hardware