Текущий архив: 2002.10.14;
Скачать: CL | DM;
Вниз
Где можно найти VTUNE ? Найти похожие ветки
← →
3asys (2002-09-17 13:54) [0]Может быть кто-нибудь подскажет где можно найти VTUNE?
С Уважением, 3asys
← →
AL2002 © (2002-09-17 14:10) [1]Что это и для чего?
← →
3asys (2002-09-17 14:19) [2]VTune™ Performance Analyzers - для анализа производительности программных кодов. Подробнее:
http://developer.intel.com/software/products/vtune/vtune60/vtune_oview.htm
С Уважением, 3asys
← →
Alx2 © (2002-09-17 14:24) [3]>3asys (17.09.02 14:19)
Таки профилировщиком решил проехаться?
У меня есть старенький (3-я версия) 25Mb
← →
3asys (2002-09-17 14:30) [4]>>Alx2
Да, только где и как (25Мб - неслабо) его взять?
И раз уж вспомнил про то обсуждение
( http://delphi.mastak.ru/cgi-bin/forum.pl?look=1&id=1031915428&n=0)
Сам алгоритм - это просто 2 вложенных цикла (внешний по строкам, внутренний - по символам в строке). Вопрос тогда был - как такое сделать иначе? (мне тогда надолго отключиться пришлось - не успел закончить обсуждение) Как думаешь?
С Уважением, 3asys
← →
Alx2 © (2002-09-17 15:02) [5]>3asys (17.09.02 14:30)
Надо видеть код.
VTune могу выложить на наш ftp.
Надо будет - пиши на мыло.
← →
3asys (2002-09-17 15:25) [6]>>Alx2
Если не трудно, выложи, пожалуйста. Попробую скачать за сегодня-завтра.
Код анализатора текста:
procedure Tfiep.DocIndexing(fn : String);
var
re : TRichEdit;
cntstr : Integer; //счетчик строк
lstr : Integer; //длина текущей строки
cntchar : Integer; //счетчик символов в строке
flagnotag : Boolean; //флаг непринадлежности тегу TRUE - не принадлежит, FALSE - принадлежит
currchar : String;
currword : String;
begin
//Разбор текста:
flagnotag:=True;
re:=TRichEdit.Create(Self);
re.Visible:=False;
re.Parent:=Self;
re.Lines.LoadFromFile(fn);
re.Lines.Add(" ");
cntstr:=0;
currword:="";
GaugeStr.Progress:=0;
GaugeStr.MaxValue:=re.Lines.Count;
GaugeStr.Visible:=True;
While cntstr <= re.Lines.Count do //Цикл по строкам текста
begin {1}
lstr:=Length(re.Lines[cntstr]);
cntchar:=1;
While cntchar <= lstr do //Цикл по символам строки
begin {2}
currchar:=re.Lines[cntstr][cntchar];
if currchar = "<" Then flagnotag:=False;
if currchar = ">" Then flagnotag:=True;
if flagnotag Then //ищем только текст вне тегов
begin {3}
if (currchar = " ") and (Trim(currword) <> "") then
begin {4}
//Проверяем наличие слова в черном списке:
impdm.qFltr.Close;
impdm.qFltr.Parameters.ParamByName("w").Value:=Trim(currword);
impdm.qFltr.Parameters.ParamByName("t").Value:=impdm.DocTypesID.Value;
impdm.qFltr.Open;
if impdm.qFltr.Eof then
begin {5}
impdm.Wrd.Insert;
impdm.Wrd.FieldByName("Word").AsString:=Trim(AnsiLowerCase(currword)); //В нижнем регистре
impdm.Wrd.Post; //без пробелов
end; {-5}
currword:="";
end
else begin
if currchar <> """" then currword:=currword+currchar //решение проблемы
else currword:=currword+"`"; //апострофа
end; {-4}
end; {-3}
cntchar:=cntchar+1;
end; {-2}
GaugeStr.Progress:=GaugeStr.Progress+1;
cntstr:=cntstr+1;
end; {-1}
re.Free;
end;
С Уважением, 3asys
← →
Alx2 © (2002-09-18 08:38) [7]> currchar:=re.Lines[cntstr][cntchar];
Работает очень долго.
Зачим заставлять для очередного символа фиксированной строки снова вычислять эту строку (re.Lines[cntstr])?
> impdm.qFltr.Parameters.ParamByName("w").Value:=Trim(currword);
> impdm.qFltr.Parameters.ParamByName("t").Value:=impdm.DocTypesID.Value;
Если есть возможность искать по индексу (lookup или findkey) то лучше ее использовать. Хотя здесь не совсем понятно что такое impdm.qFltr и impdm.Wrd.
А возможностей для оптимизации здесь - куча.
Но в первую очередь, скорее всего, надо постараться обойтись без фильтра. Заменить его чем-нибудь побыстрее.
← →
3asys (2002-09-18 10:27) [8]impdm.qFltr - TADOQuery
impdm.Wrd - TADOTable
Спасибо, попробую, но боюсь, что без кардинального изменения алгоритма, без смены алгоритма на другой, резкого повышения скорости не произойдет. Вот в чем этот другой может состоять - вопрос -)
С Уважением, 3asys
← →
3asys (2002-09-18 10:29) [9]P.S. Прошу простить за большую паузу - не всегда могу оставаться в инете.
С Уважением, 3asys
Страницы: 1 вся ветка
Текущий архив: 2002.10.14;
Скачать: CL | DM;
Память: 0.49 MB
Время: 0.019 c