Re: поиск

From
akrivosheev@utc.ru ()
To
Valentin Davydov
Date
2002-09-09T18:49:25Z
Area
RU.ALGORITHMS
From: akrivosheev@utc.ru


> >> 4 байт в регистр процессора и последущего сравнения просто
> >> сдвигом на 8 разрядов.
> >А смысл? Раз уж загрузили 4 байта, так и сранивать надо 4 байта. ;)
>
> А смысл? Всё равно на побайтное сравнение 4х байт тратися меньше времени,
> чем на один цикл чтения четырёхбайтного слова из памяти.

Посмотрел как реализованна StrPos в Delphi. Написано на ассемблере и
использует при поиске
REPNE SCASB. - инструкция процессора выполняется примерно за 8 тактов. (одно
сравнение+загрузка и пр...) Для сравнения команда JMP - выполняется минимум
за 7 тактов. Видимо с точки зрения быстродействия StrPos в Delphi наиболее
оптимален для Интел процессора, потому как если мы напишем свой алгоритм
поиска при каждом сравнении потребуется как минимум одна команда перехода - 7
тактов, а ещё + загрузка, сравнение , сдвиг... выйдет как минимум больше 10
тактов процессора.

Так что вообще-то компиляторы не дураки пишут и стоит использовать их
команды... А то что файл в память не помещается весь, так это... его можно
кусками считывать, сколько в память влезет,  хоть по килобайту - всё быстрее
чем посимвольно. ;)

--- ifmail v.2.15dev5
 * Origin: JV Izhcom Ltd. (2:5020/400)