Vitesse de calcul C (modulo v initialisation)

Résolu
VEF_King -  
AsmManiac Messages postés 18 Statut Membre -
Bonjour,

Alors voila, je ne sais pas si le titre est très parlant mais, je ne savais pas trop comment le formuler.

Voici ma question:

Je me demandais si, au niveau de la compilation d'un programme, un modulo est-il considéré comme une opération...

Bon, ce n'est pas très clair, je vais donner un exemple.

Je veux donc, par exemple, afficher un message dans une boucle for mais, je veux afficher 3 messages dans la console, faire une pause puis effacer l'écran et réafficher les 3 messages suivants.

La première méthode avec le modulo

        for (i=1; i<=n; i++)
	{
		if (i%3 == 0)
		{
			printf ("Texte à afficher %hd\n", i);
			system ("pause");
			system ("cls");
		}
		else
		{
			printf ("Texte à afficher %hd\n", i);
		}
	}


La deuxième méthode où je réinitialise ma variable qui me sert de compteur à 1

	a=1;

	for (i=1; i<=n; i++)
	{
		if (a == 3)
		{
			printf ("Texte à afficher %hd\n", i);
			system ("pause");
			system ("cls");
			a=1;
		}
		else
		{
			printf ("Texte à afficher %hd\n", i);
			a++;
		}
	}
}


En clair, ma question est celle-ci: Quelle est la méthode la plus "rapide"?



A voir également:

2 réponses

fiddy Messages postés 11653 Statut Contributeur 1 847
 
Bonjour,

Oui le modulo est un opérateur et la version 2 sera plus rapide.
Dans la version 1, le microprocesseur devra calculer des modulo juste pour savoir. Alors que dans l'autre version, c'est juste une comparaison (moins de cycle).

Mais bon, parler de performance quand on utilise la fonction "system"...
Utilise plutôt les API windows pour effacer l'écran. Et getchar() pour la pause.

Cdlt,
0
AsmManiac Messages postés 18 Statut Membre
 
Salut,

Comme l'a dit fiddy, le modulo dans ce cas prend plus de cycle que la comparaison .
et si tu décide d'utiliser le getchar() tu devras peut-être le mettre deux fois pour qu'il marche .

Cordialement
0