2013-02-11 2 views
2

Comment l'instruction pcmpestri peut-elle être utilisée pour écrire une fonction similaire à la fonction strpos en C++? Je peux utiliser le compilateur g ++.pcmpestri instruction d'écrire fonction strpos similaire?

pcmpestri est une nouvelle instruction qui se trouve dans SSE4

+0

Pouvez-vous montrer une tentative - ou ajouter quelques détails? Comme c'est le cas actuellement, cette question est structurellement très similaire à toutes ces questions "écrivez-moi une fonction en Java qui inverse une chaîne", même si à un niveau un peu plus élevé ... – us2012

+1

Je pensais que c'était "niveau inférieur", puisqu'elle implique des instructions d'assembleur? ;) –

+0

'pcmpistri' est plus rapide et peut probablement le faire aussi. Regardez EQUAL_ORDERED. Je donnerais une meilleure réponse, mais je n'ai pas de CPU qui supporte SSE 4.2 donc je ne peux rien tester. – harold

Répondre

-3

Avant d'utiliser les instructions SSE vous devez ranger la pile à virgule flottante, et restaurer par la suite. C'est coûteux, à moins que vos cordes ne soient énormes, cela ne vaudra pas la peine. Et pour les chaînes énormes, de meilleurs algorithmes sont la voie à suivre (Boyer-Moore ou autre).

+0

Cela était vrai pour MMX. Ce n'est pas le cas avec SSE (que vous devez faire EMMS, évidemment, il faut toujours considérer les algorithmes sous-quadratiques) –