Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Нужна функция поиска и замены [D6, WinME]


SergP ©   (2004-07-10 21:11:00) 

Нужна функция поиска и замены без учета регистра.

Я писал нечто с использованием AnsiUpperCase, pos, delete, insert
но этот вариант мне не нравится, так как функция должна работать как можно быстрее (обрабатываются большие строки с большим кол-вом замен)

Может кто что-нить может предложить толковое? Типа может есть стандартные функции для этого, или может кто сам писал?


Igorek   (2004-07-11 16:43:00) [1]


> Думаю, что тестировалось на одном и том же процессоре, на
> одном и том же примере.

Кстати неочевидно. Для демонстрации преимуществ они могли для FastString дать даже хуже процессор и пример. Хотя обычно так не делают.


> MBo ©   (11.07.04 16:01) [11]
> >Igorek ©   (11.07.04 15:38) [9]
> Достаточно посмотреть в исходниках, как сделана StringReplace
> - c использованием сложения новой строки из кусков - при
> множествнных заменах - это многократное выделение памяти.

Понятно. Тормозило на динамическом выделении памяти как я понимаю. Но для полного анализа надо также исходники FastString.


MBo   (2004-07-11 16:01:00) [2]

>Igorek ©   (11.07.04 15:38) [9]
Достаточно посмотреть в исходниках, как сделана StringReplace - c использованием сложения новой строки из кусков - при множествнных заменах - это многократное выделение памяти.


KilkennyCat   (2004-07-11 15:54:00) [3]


> Igorek ©   (11.07.04 15:38) [9]


Думаю, что тестировалось на одном и том же процессоре, на одном и том же примере.


Igorek   (2004-07-11 15:38:00) [4]


> StringReplace took over 8 hours to complete multiple replacements
> on a 10mb string, whereas FastReplace took 0.5 seconds (yes,
> half of a second).
>
> Что-то не верится. 8 часов и пол-секунды....???

Очень может быть.
- тестировалось на ОЧЕНЬ быстром процессоре
- алгоритм StringReplace превысил обьем оперативки и из-за свопирования оно еле ползло
- пример для тестирования был оптимизирован для FastReplace :-)))


MBo   (2004-07-11 13:25:00) [5]

>SergP
На ОЧЕНЬ длинных строках Pos, а особенно StringReplace работают действительно медленно. Насколько это скажется в твоих обтоятельствах- не знаю.
сюда еще загляни.
http://dennishomepage.gugs-cats.dk/FastCodeProject.htm


SergP   (2004-07-11 13:04:00) [6]

Хм... На ихнем сайте нашел:

FastStrings
FREE: A useful set of assembly optimised string manipulation routines. The most remarkable of these is without a doubt the FastReplace function. StringReplace took over 8 hours to complete multiple replacements on a 10mb string, whereas FastReplace took 0.5 seconds (yes, half of a second).

Что-то не верится. 8 часов и пол-секунды....???


SergP   (2004-07-11 12:59:00) [7]


>  [5] MBo ©   (11.07.04 12:11)

Закачал FastStrings

А кто-нить может сказать насколько функции этой библиотеки эффективнее стандартных?


MBo   (2004-07-11 12:11:00) [8]

Если объемы велики и быстродействие существенно
(судя по >так как функция должна работать как можно быстрее ), то воспользуйся QStrings или упомянутой FastStrings (нетрудно найти поиском в инете)


SergP   (2004-07-10 22:00:00) [9]


>  [3] AD_infiniTUM   (10.07.04 21:43)


Спасибо. В D6 она есть в SysUtils.
Проверил, Все работает...


AD_infiniTUM   (2004-07-10 21:43:00) [10]

В D7 (незнаю как D6), в SysUtils есть функция StringReplace, четвертым параметром можно установить флаг, чтобы не учитывался регистр. Но мне почему-то не получилось заставить ее работать (Delphi ругается на этот черветый параметр, не понял что он хочет).


SergP   (2004-07-10 21:31:00) [11]


> Может FastStrings подойдёт


Где это есть?


Огромное Кулясищще   (2004-07-10 21:19:00) [12]

Может FastStrings подойдёт


Наверх

Титульная страница Поиск, карта сайта Написать письмо