Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.08.29;
Скачать: CL | DM;

Вниз

помогите найти источник варнинга.   Найти похожие ветки 

 
jack128 ©   (2004-08-11 01:48) [40]


> и губительно скажется на производительности.
ЛОЛ!!!

Ладно забей - как нить избавлюсь от этих варнингов..


 
GuAV ©   (2004-08-11 01:54) [41]


> Ладно забей

Та нет, самому теперь интересно стало... ворнинги явно не по делу... переменная инциируется компилером... и сам же видишь, что функция и процедура - онди хрен, а они почему то только в функции...
В Борланд написать, что ли...

Как ещё мысля :) если весь код твой, перепиши, чтоб были процедуры.


 
GuAV ©   (2004-08-11 01:56) [42]


> перед вызовом функции

в начале метода.


 
Piter ©   (2004-08-11 02:35) [43]

GuAV ©   (11.08.04 1:44) [39]
А если не хочешь так, то в nil инициализируй сам перед вызовом функции - но тогда будет одна лишшшняя инструкция в коде и губительно скажется на производительности


Да, такая программа даже на P4 будет тормозить... однозначно...


 
GuAV ©   (2004-08-11 02:52) [44]

jack128 ©   (11.08.04 01:48) [40]
Piter ©   (11.08.04 02:35) [43]

Хотите ещё посмеятся? Это типа как GuAV добился резкого прироста производительности:
было
           begin
             if (F.Name<>".") and (F.Name<>"..") then
               Process(F.Name);
           end
стало
           begin
             if DirIsNotThisOrParent(F.Name) then
               Process(F.Name);
           end
...
function DirIsNotThisOrParent(const S: string): Boolean;
asm
       MOV    EDX, EAX
       CALL   System.@LStrLen
       OR     EAX, EAX   // Нуль?
       JZ     @@2        // если нуль
       CMP    EAX, 2
       JG     @@2        // Длинее
       JE     @@1        // Равна
                         // Короче
       CMP    [EDX].Byte, "."
       SETNZ  AL    // True если не равна
       RET

 @@1:  CMP    [EDX].Word, ".."
       SETNZ  AL
       RET

 @@2:  MOV    AL, True
end;


 
jack128 ©   (2004-08-11 11:11) [45]

А можно узнать что выполняется в Process(F.Name), что по сравнению так сильно влияние двух сравнений? Да и вообще, я так понимаю f - TSearchRec ? тогда процедуры поиска FindFirst/Next - должны также нивилировать значение этих сравнений.. Вобщем задачу опиши - интересно же ;-)


 
GuAV ©   (2004-08-11 12:10) [46]

по оффтопу:
Рекурсивный поиск. Ищет по подпапкам, ели Recourse = True. Вызывает AddFile для каждого файла.
закоментируй проверку if DirIsNotThisOrParent(F.Name) then - и будет Стек Оверфлов.
 procedure TfrmMain.AddDir(const FileName: string);
 const AttrArr: array[Boolean] of Integer
   =(faAnyFile and not faDirectory, faAnyFile);
 var SrcAttr: Integer;
 procedure Process(const FileName: string);
 var F: TSearchRec;
 begin
   ChDir(FileName);
   if FindFirst("*",SrcAttr,F)=0 then
     try
       repeat
         if (F.Attr and faDirectory)<>0 then
           begin
             if DirIsNotThisOrParent(F.Name) then
               Process(F.Name);
           end
         else AddFile(ExpandFileName(F.Name));
       until FindNext(F)<>0;
     finally
       FindClose(F);
     end;
   ChDir("..");
 end;
begin
 BeginUpdate;
 try
   SrcAttr:=AttrArr[Recourse];
   Process(ExpandFileName(FileName));
 finally
   EndUpdate;
 end;
end;
по сабжу:
в самом начале метода присвоить nil не помогает?


 
jack128 ©   (2004-08-11 13:08) [47]


> по оффтопу:
Мы ж потрепаться, какие оффтопы ;-)

не знаю.
procedure TfrmMain.AddFile(const s: string);
begin
 ListBox1.Items.Add(s);
end;
procedure TfrmMain.AddDir(const FileName: string);
...
begin
ListBox1.Items.BeginUpdate;
try
  SrcAttr:=AttrArr[true];
  Process(ExpandFileName(FileName));
finally
  ListBox1.Items.EndUpdate;
end;
end;

Почти без разницы, использовал ли я асм или паскаль.. Странно все это..


> по сабжу:
Да, конечно, никто и не сомневался..


 
GuAV ©   (2004-08-11 13:28) [48]


> Почти без разницы, использовал ли я асм или паскаль.. Странно
> все это..

Я же сказал: добился резкого прироста, столь резкого, сколь резко сказалась для твоего кода лишнее привоение 0 ;-) Не уверен даже прирост ли :-)

> Да, конечно, никто и не сомневался..

Не помогает? Ну тогда объяви как интежер и при кождом юзании typecast делай.


 
Anatoly Podgoretsky ©   (2004-08-11 13:33) [49]

jack128 ©   (11.08.04 13:08) [47]
Мы ж потрепаться, какие оффтопы ;-)

В Потрепать кроме соблюдения темы ты еще обязан и трепаться.



Страницы: 1 2 вся ветка

Текущий архив: 2004.08.29;
Скачать: CL | DM;

Наверх




Память: 0.56 MB
Время: 0.022 c
4-1089861031
Anton
2004-07-15 07:10
2004.08.29
Две независимые группы радиокнопок


3-1091458329
sloug
2004-08-02 18:52
2004.08.29
Нужно просуммировать


6-1086003426
Maxuz
2004-05-31 15:37
2004.08.29
TClientSocket


3-1091778976
Pul
2004-08-06 11:56
2004.08.29
Сортировка по BLOB полю Interbase (Firebird)


14-1092135708
Layner
2004-08-10 15:01
2004.08.29
Браузер IE, то что кажет, это ближе к картинке или к тексту?