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)