Vitesse de calcul C (modulo v initialisation)

Résolu/Fermé
VEF_King - 14 mars 2011 à 20:24
AsmManiac Messages postés 18 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 19 mars 2011 - 15 mars 2011 à 00:23
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 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
14 mars 2011 à 22:18
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 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 19 mars 2011
15 mars 2011 à 00:23
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