Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 16.02.2013, 17:47
Pcrepair
 
Сообщения: n/a
По умолчанию Функция COPY. Быстродействие

Добрый день. Есть функция удаления подстроки типа <gg hhh>jjjj</gg> из строки
(на самом деле посимвольное копирование когда это не запрещено условием)

Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
function DelUseless(const Data:string):string;
var
Len,I,EndTeg,Differ,J:integer;
DefineTeg:string; (*первые N символов после <*)
begin                 
Len:=Length(Data);
SetLength(Result, Len);
Differ:=0;
J:=0;
if Length(Data) = 0 then Exit else
for I := 1 to Length(Data) do
(*-----------------ЦИКЛ-----------------------------*)
 begin
   if Differ > 0 then Dec(Differ)
     else
      if (Data[i] = '<') then
        begin
          DefineTeg:=Copy(Data, I,10); (*тут тормоз?*)
             if (PosEx('<script', DefineTeg,1)= 0) then
               begin
                 Inc(J);
                 Result[J]:=Data[i];
               end
             else
               begin
                  EndTeg:=PosEx('</script>',Data,I);
                  if (EndTeg > 0) then Differ:=(EndTeg - I + 8);
               end
        end
   else
    begin
      Inc(J);
      Result[J]:=Data[i];
    end
 end;
(*-----------------конец-----------------------------*)
SetLength(Result, J);
end(*все работает*)

функция работает достаточно быстро (файл 3 мб за 30 мС обрабатывает)
но есть подозрение, что использование COPY (DefineTeg:=Copy(Data, I,10) увеличивает время обработки
Внимание!! Вопрос:
1. действительно ли COPY не самое лучшее решение по быстродействию
2. чем можно заменить COPY? может вставка на ASM?
Ответить с цитированием
 


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 12:40.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025