Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.09.18;
Скачать: CL | DM;

Вниз

Оптимизировать по скорости   Найти похожие ветки 

 
Modus   (2003-09-07 09:46) [0]

У меня в программе очень часто используется следующая функция:

Function FindItem(S: String; Str: TStrings; FindAtFirst: Boolean = False): Integer;
Var t: Integer;
Begin
Result:=-1;
For t:=Integer(not FindAtFirst) to Str.Count-1 Do
IF Pos(S,Str[t])>0 then
Begin
Result:=t;
Break;
End; {IF}
End;


Нельзя ли её оптимизировать по скорости (ассемблер, указатели и пр.). В таком случае скорость исполнения возрастёт многократно в повторяющихся операциях. Прошу помочь.


 
cyborg ©   (2003-09-07 10:04) [1]

Для начала можно объявить так:
Function FindItem(Const S: String;Const Str: TStrings; FindAtFirst: Boolean = False): Integer;

Если строки переменные конечно, а не задаются в вызове функции.

и Result:=-1; перенести в конец функции, в этом случае Break нужно заменить на Exit.


 
Романов Р.В. ©   (2003-09-07 12:01) [2]

1. Вместо функции pos использовать фунцию из библиотеки QStrings
2. Использовать кэширование при поиске
3. Использовать хэширование


 
Song ©   (2003-09-07 13:36) [3]

2Романов Р.В. © (07.09.03 12:01) [2]
>> Вместо функции pos использовать фунцию из библиотеки QStrings
Зачем советовать человеку то чего нет? Я в CLX такого не видел.


 
Романов Р.В. ©   (2003-09-07 21:19) [4]

http://www.torry.net/text.htm
Там написано под D5, но думаю что и под D6 откомпилится


 
Anatoly Podgoretsky ©   (2003-09-07 21:48) [5]

Все потери времени здесь IF Pos(S,Str[t])>0 then, остальные меры дают только несколько наносекунд.



Страницы: 1 вся ветка

Текущий архив: 2003.09.18;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.02 c
14-58908
Mr@MsGuns
2003-08-29 09:47
2003.09.18
Проект на Delphi 6 перевести в проект на Delphi 5


1-58763
AndreySoft
2003-09-04 21:10
2003.09.18
Как считать из файла фрагмент текста?


11-58603
microlab
2003-01-11 20:30
2003.09.18
Скрыть форму с панели задачь?


7-58932
ionv
2003-07-07 08:09
2003.09.18
Объясните пожалуйста как работать с ZLPortIO или DirectPort


6-58817
Akni
2003-07-14 17:54
2003.09.18
Как правильно отсоединить клиента?