Форум: "Основная";
Текущий архив: 2003.09.18;
Скачать: [xml.tar.bz2];
ВнизОптимизировать по скорости Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.01 c