Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.04 c
3-1088748804
so_well
2004-07-02 10:13
2004.07.25
база и Rave Reports


1-1089555687
Crypter
2004-07-11 18:21
2004.07.25
Быстрая работа с TRichEdit


14-1088956768
}|{yk
2004-07-04 19:59
2004.07.25
Можно ли использовать with


1-1089709068
Ross
2004-07-13 12:57
2004.07.25
Форма загружена?


14-1089096754
Alibaba
2004-07-06 10:52
2004.07.25
Артист





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский