ffnajia
Messages postés30Date d'inscriptionmercredi 12 avril 2006StatutMembreDernière intervention17 avril 2007
-
27 oct. 2006 à 14:30
Arnaud16022
Messages postés1329Date d'inscriptionvendredi 15 août 2003StatutMembreDernière intervention16 juin 2010
-
29 oct. 2006 à 22:49
Bonjour à tous;
Est ce que c'est possible de savoir la compléxité de mon algorithme ou code C++?? nombre d'opérations ou temps de calcul??
Bonne journée.
Merci à tous
Najia
vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 201014 27 oct. 2006 à 14:57
avec une différence de résultats de time(), tu peux calculer le temps d'exécution. Mais ce n'est pas très précis.
Une complexité théorique se calcule à la main
Arnaud16022
Messages postés1329Date d'inscriptionvendredi 15 août 2003StatutMembreDernière intervention16 juin 20102 29 oct. 2006 à 22:49
( tiens Vecchio t'es admin maintenant ? :) )
ffnajia -> ça dépend de c que tu veux savoir.
Tu peux calculer la complexité algoritmique de ton algo, genre si dedans t'as un for ( 0 -> n), la complexité sera notée 0 (n) ... si t'as un arbre binaire en général ce sera O ( ln (n) ).
Ca te renseigne sur la capacité de ton algo a gérer un grand nombre de données, en gros.
Si c'est du temps que tu veux : QueryPrecisionTimer ou un truc dans le genre , RTFM ( aka MSDN ^^ ), mais il doit y avoir plus portable.
Evite à tout prix time() ou autres, précision lamentable ... sauf bien sûr si ton algo dure plus d'une seconde, dans ce cas c'est pas bien méchant
3ème option, ou va ma préférence : RDTSC, une instruction assembleur qui retourne le nombre de ticks depuis le dernier reboot. En gros ça te donne le nombre d'instructions qu'il a fallu pour arriver d'un point à un autre de ton prog, pour le coût d'une simple division et de 2 opcodes asm. Attention ce combre est indépendant du PC sur lequel tu l'utilises ( à peu pres ), mais pas du nombre de processus en cours ( si t'as half-life qui tourne en même temps, ça va consommer 95% du CPU et donc multiplier ta valeur par ... beaucoup ^^ ) goto Wikipedia pour plus de détails ...