61 votes

Est-ce que memset() est plus efficace que la boucle for en C ?

La boucle memset() plus efficace que la for

Considérant ce code :

 char x[500];
memset(x,0,sizeof(x));

Et celui-là:

 char x[500];
for(int i = 0 ; i < 500 ; i ++) x[i] = 0;

Lequel est le plus efficace et pourquoi ? Existe-t-il des instructions spéciales dans le matériel pour effectuer une initialisation au niveau des blocs.

3voto

Stephen Canon Points 58003

Les bons compilateurs reconnaîtront la boucle for et la remplaceront par une séquence en ligne optimale ou un appel à memset. Ils remplaceront également memset par une séquence en ligne optimale lorsque la taille du tampon est petite.

En pratique, avec un compilateur optimisant le code généré (et donc les performances) sera identique.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X