Re: поиск
- From
- akrivosheev@utc.ru ()
- To
- Serj Okladnikov
- Date
- 2002-09-08T21:54:42Z
- Area
- RU.ALGORITHMS
From: akrivosheev@utc.ru
> SO>> Hyжно найти слово в пpедложении без пpобелов. Сейчас я пpовеpяю
> SO>> символы по очеpеди и если очеpедной не совпадает с соответствyющим
> SO>> в слове, то я начинаю сpавнивать пеpвый символ слова с
> SO>> несовпавшим, второй с следующим: пчелылюбятмед
..давечечечевицауродилась..
слово чечевица по твоему алгоритму тут будет пропущено. Алгоритм неверен для слов с
повторяющимися элементами.
> > pеализация на каком языке?
> > на C - char *strstr(const char *str, const char *substr) <string.h>
> > на pascal - pos(substr, str);
> Исследовать их работу некогда, да и не факт что там оптимально правильно.
А зря некогда, можно много полезного почерпнуть. Как правило такие команды очень
хорошо оптимизированны на уровне ассемблера и усовершенствовать их довольно сложно.
Скажем использование на современных 32 битных процессорах сравнения не по 8 битным
символам, а используя загрузку сразу 4 байт в регистр процессора и последущего
сравнения просто сдвигом на 8 разрядов. Одна пересылка из памяти в регистр -
сравнение 4 символов или по твоему алгоритму для каждого символа будет производится
загрузка - вот оцени быстродействие, учитывая что частота на которой работает
процессор в 5-10 выше чем та, на которой работает память. ....не говорите мне про
кеш и пр.. конечно данные загружаются из кеша, а не из памяти и скорость работы тут
выше, но как загружается кеш вы знаете? Поверте, архитектуру процессора нужно
учитывать, и разработчики это учитывают, поэтому лучше чем использовать встроенные
комманды поиска наверняка будет более эффективным. По крайней мере можно
попробовать и сравнить быстродействие. Мне кажется что разрабатывать свой алгоритм
имеет смысл тогда когда нужет какой-то нетривиальный поиск... сравнение.... для
которого надо использовать несколько комманд "высокого" уровня, либо если всё-таки
скорость встроенной комманды будет недостаточна.
>
>
> > //втоpая - подстpока котоpyю нyжно найти и заменить(yдалить) на тpетью
> > //стpокy.
> > // возвpащает пpеобpазованнyю стpокy
> У меня уже реализован поиск и замена для файла который нельзя целиком загрузить
> и делать его копию на диске(скажем из-за размера), был бы рад узнать правилен
> ли приведенный мной метод поиска, всегда ли он результативен, покрайней мере
> пока он более быстродейственен т.к. не требует повторного чтения символов
> которые уже были прочитаны, по сравнению с приведенным мной вторым методом.
>
> С уважением
> Serj
--- ifmail v.2.15dev5
* Origin: JV Izhcom Ltd. (2:5020/400)