Re: поиск

From
Vladislav Gusev (2:5059/9.75)
To
akrivosheev@utc.ru
Date
2002-09-10T18:22:49Z
Area
RU.ALGORITHMS
                     Приветствую тебя akrivosheev@utc.ru !!!
 Было это [09 сентября 2002]. akrivosheev@utc.ru писал к Valentin Davydov.

 >> >> 4 байт в регистр процессора и последущего сравнения просто
 >> >> сдвигом на 8 разрядов.
 >>      > А смысл? Раз уж загрузили 4 байта, так и сранивать надо 4 байта.
 >>      > ;)
 >>
 >> А смысл? Всё равно на побайтное сравнение 4х байт тратися меньше времени,
 >> чем на один цикл чтения четырёхбайтного слова из памяти.
 Ну, не из памяти ,а скорее всего из кэша, строки все таки...
 на PI/PII это 1 такт/1 m.
 a> Посмотрел как реализованна StrPos в Delphi. Написано на ассемблере и
    Delphi ;))))
 a> использует при поиске
 a> REPNE SCASB. - инструкция процессора выполняется примерно за 8 тактов.
    по одному байту это конечно очень эффективно, на грани фантастики ;)
 a> (одно сравнение+загрузка и пр...) Для сравнения команда JMP - выполняется
 a> минимум за 7 тактов. Видимо с точки зрения быстродействия StrPos в Delphi
 А мы что под 386 пишем ? Там как раз JMP 7 тактов было ,только тогда
 REPNE SCASB никак не 8.

 PI/PII тратят 1 такт на правильно предсказанный выполненный переход.
 a> наиболее оптимален для Интел процессора, потому как если мы напишем свой
 Наиболее оптимальный код можно получить используя Intel C++ с векторизацией
 и оптимизацией под MMX/SSE(ни всякий профи так напишет).
 А делать с оглядкой на дельфи это просто глупо. 
 a> алгоритм поиска при каждом сравнении потребуется как минимум одна команда
 a> перехода - 7 тактов, а ещё + загрузка, сравнение , сдвиг... выйдет как
 a> минимум больше 10 тактов процессора.

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

                                              С уважением Vlad.

                      [C++] [Rock] [I`ll be back]
--- GoldED+/386 1.1.4.5
 * Origin: DEL * . * - 100 % сжатие !!! (2:5059/9.75)