Форум: "Основная";
Текущий архив: 2004.07.25;
Скачать: [xml.tar.bz2];
ВнизНужна функция поиска и замены Найти похожие ветки
← →
SergP © (2004-07-10 21:11) [0]Нужна функция поиска и замены без учета регистра.
Я писал нечто с использованием AnsiUpperCase, pos, delete, insert
но этот вариант мне не нравится, так как функция должна работать как можно быстрее (обрабатываются большие строки с большим кол-вом замен)
Может кто что-нить может предложить толковое? Типа может есть стандартные функции для этого, или может кто сам писал?
← →
Огромное Кулясищще © (2004-07-10 21:19) [1]Может FastStrings подойдёт
← →
SergP © (2004-07-10 21:31) [2]
> Может FastStrings подойдёт
Где это есть?
← →
AD_infiniTUM (2004-07-10 21:43) [3]В D7 (незнаю как D6), в SysUtils есть функция StringReplace, четвертым параметром можно установить флаг, чтобы не учитывался регистр. Но мне почему-то не получилось заставить ее работать (Delphi ругается на этот черветый параметр, не понял что он хочет).
← →
SergP © (2004-07-10 22:00) [4]
> [3] AD_infiniTUM (10.07.04 21:43)
Спасибо. В D6 она есть в SysUtils.
Проверил, Все работает...
← →
MBo © (2004-07-11 12:11) [5]Если объемы велики и быстродействие существенно
(судя по >так как функция должна работать как можно быстрее ), то воспользуйся QStrings или упомянутой FastStrings (нетрудно найти поиском в инете)
← →
SergP © (2004-07-11 12:59) [6]
> [5] MBo © (11.07.04 12:11)
Закачал FastStrings
А кто-нить может сказать насколько функции этой библиотеки эффективнее стандартных?
← →
SergP © (2004-07-11 13:04) [7]Хм... На ихнем сайте нашел:
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 часов и пол-секунды....???
← →
MBo © (2004-07-11 13:25) [8]>SergP
На ОЧЕНЬ длинных строках Pos, а особенно StringReplace работают действительно медленно. Насколько это скажется в твоих обтоятельствах- не знаю.
сюда еще загляни.
http://dennishomepage.gugs-cats.dk/FastCodeProject.htm
← →
Igorek © (2004-07-11 15:38) [9]
> 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 :-)))
← →
KilkennyCat © (2004-07-11 15:54) [10]
> Igorek © (11.07.04 15:38) [9]
Думаю, что тестировалось на одном и том же процессоре, на одном и том же примере.
← →
MBo © (2004-07-11 16:01) [11]>Igorek © (11.07.04 15:38) [9]
Достаточно посмотреть в исходниках, как сделана StringReplace - c использованием сложения новой строки из кусков - при множествнных заменах - это многократное выделение памяти.
← →
Igorek © (2004-07-11 16:43) [12]
> Думаю, что тестировалось на одном и том же процессоре, на
> одном и том же примере.
Кстати неочевидно. Для демонстрации преимуществ они могли для FastString дать даже хуже процессор и пример. Хотя обычно так не делают.
> MBo © (11.07.04 16:01) [11]
> >Igorek © (11.07.04 15:38) [9]
> Достаточно посмотреть в исходниках, как сделана StringReplace
> - c использованием сложения новой строки из кусков - при
> множествнных заменах - это многократное выделение памяти.
Понятно. Тормозило на динамическом выделении памяти как я понимаю. Но для полного анализа надо также исходники FastString.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.07.25;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.042 c