Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.012 c
3-58552
P0tia
2003-08-27 23:29
2003.09.18
Удаление строк из ListBox


8-58788
gRad2003
2003-05-17 11:58
2003.09.18
midi->wav


1-58632
Bezpal
2003-09-05 13:21
2003.09.18
Как сделать круглую или треугольную форму или форму - звезду


1-58627
rtooo
2003-09-05 12:57
2003.09.18
Помогите пожалуйста с закладками


14-58843
kopcap
2003-08-30 19:03
2003.09.18
JavaScript




   Наверх