Pourquoi est-comparateur de mémoire beaucoup plus rapide que celle d'une boucle for vérifier?

Pourquoi est memcmp(a, b, size) beaucoup plus rapide que:

for(i = 0; i < nelements; i++) {
    if a[i] != b[i] return 0;
}
return 1;

Est memcmp un CPU d'instruction ou quelque chose? Il doit être assez profond car j'ai eu un énorme accélération à l'aide de memcmp sur la boucle.

  • Compiler avec-S de voir la langue de l'assembly de sortie et le savoir. Sur x86, comme d'autres l'ont mentionné, il ya des instructions pour cela, mais souvent ceux-ci peuvent être vectorisé.
  • Mais ce niveau d'optimisation utilisez-vous? De nombreux compilateurs peuvent se dérouler en boucle.
InformationsquelleAutor jsj | 2014-01-14