Très vite memcpy pour le traitement de l'image?

Je fais du traitement d'image en C qui exige la copie de gros blocs de données de la mémoire - la source et la destination ne doivent pas se chevaucher.

Qu'est-ce que l'absolu de la façon la plus rapide de le faire sur la plate-forme x86 à l'aide de GCC (où L'ESS, SSE2, mais PAS SSE3 sont disponibles)?

J'attends la solution sera dans l'assemblée ou à l'aide de GCC intrinsèques?

J'ai trouvé le lien suivant, mais n'ai aucune idée si c'est la meilleure façon d'aller à ce sujet (l'auteur dit aussi qu'il a quelques bugs): http://coding.derkeiler.com/Archive/Assembler/comp.lang.asm.x86/2006-02/msg00123.html

EDIT: à noter qu'une copie est nécessaire, je ne peut pas contourner avoir à copier les données (je pourrais expliquer pourquoi, mais je vous épargne l'explication :))

  • pouvez-vous écrire votre code, de sorte que la copie n'est pas nécessaire, en premier lieu?
  • Ron, non, je ne peux pas 🙁
  • Si vous pouvez obtenir une prise de le compilateur Intel, vous pourriez avoir plus de chances de l'optimiseur de conversion dans le vecteur instructions du processeur
  • Jetez un oeil à ceci: software.intel.com/en-us/articles/memcpy-performance
  • Savez-vous par comment beaucoup trop lent de votre compilateur, memcpy() est? Pouvez-vous préciser quel processeur le code sera exécuté sur? Et Quel OS?
  • Je suppose que vous vous rendez compte que le maintien de la mémoire des blocs de 16 octets aligné aidera. Ou, si elles ne sont pas de 16 octets alignés, puis de gérer les premiers et derniers octets comme un cas particulier, et copiez le reste du bloc de 16 octets aligné limites.
  • Aussi, lire Intel conseils sur rapide memcpy avec GCC software.intel.com/en-us/articles/memcpy-performance
  • Je ne sais pas ce qui est le mieux pour vous, mais en ce qui concerne memcpy il y a des versions plus rapide. Essayez Agner de la Brume asmlib (google). Il a l'assemblée optimisé fonctions telles que A_memcpy et A_memmove qui devrait être plus rapide que memcpy

InformationsquelleAutor horseyguy | 2009-11-11