Главная страница
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.013 c
3-58561
eds
2003-08-27 11:55
2003.09.18
COMMIT или COMMITRETAINING ???


7-58940
edi
2003-07-04 15:35
2003.09.18
надо на винчестере отметить программно


3-58578
Andrey007
2003-08-27 14:10
2003.09.18
Подскажите, пожалуйста, как справиться со следующей ошибкой.


3-58559
Рома
2003-08-27 14:20
2003.09.18
Подскажите пожалуйста как можно узнать структуру dbf?


8-58786
ProgrammSoft
2003-05-19 11:10
2003.09.18
Звук