Funkcje strchr, strlen i strcmp zaprogramowane z użyciem instrukcji SSE2

Dodane:14.08.2007
Autor: Wojciech Muła

Treść

Wstęp

Uwaga: zobacz główną stronę projektu sse2string.

Testowane funkcje zostały napisa ręcznie w asemblerze (wstawki gcc). Przyspieszenie jest wyznaczane względem standardowych funkcji glibc.

Testy są przeprowadzane na łańcuchach dość krótkich, do 256 znaków. Przez długość (n) rozumiem tutaj miejsce w którym badana funkcja kończy działanie, a więc dla strlen będzie to pozycja znaku \000, dla strchr pozycja szukanego znaku bądź \000, a dla strcmp pozycja różnych znaków bądź koniec jednego z łańcuchów.

W funkcjach strlen unrolled i strcmp unrolled wewnętrzna pętla została [nieudolnie] rozwinięta.``

Komputery na których przeprowadzano testy:

Przede wszystkim dziękuję wszystkim za poświęcony czas i pomoc. Widać, że jest o co walczyć! Funkcje są na razie w fazie testów, więc przedstawionych tutaj wyników w żadnym razie nie należy uważać za ostateczne.

Wyniki

Pentium M

img/pm.png

Core2

img/core2.png

Xeon

img/xeon.png

Opteron

img/opteron.png

Manchester

img/manchester.png