![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Нужна функция поиска и замены [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 подойдёт