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

Вниз

Демо сканирования сети, нужна помощь с тестированием...   Найти похожие ветки 

 
Vlad Oshin ©   (2004-10-14 09:08) [40]

сеть с доменом (2 домена, блин.. )
нашла 31 машинку, ну утро еще, пока чаи гоняют, видать

Сканирует рывками. Сразу находит 30% (1-2 сек), потом еще 30-40%(2-3 сек), и окончательно еще ~2 сек


 
Rouse_ ©   (2004-10-14 09:27) [41]

Тэкс, вот про CreateSuspended = false это да, это я маху дал :))
Показываю текущую проблему:

type
 TTestThread = class(TThread)
 protected
   procedure Execute; override;
 end;

 TForm1 = class(TForm)
   Button1: TButton;
   Memo1: TMemo;
   procedure Button1Click(Sender: TObject);
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
 I: Integer;
 Start: Cardinal;
 S: TStringList;
begin
 S := TStringList.Create;
 try
   Start := GetTickCount;
   for I := 1 to 255 do
     with TTestThread.Create(True) do
     begin
       S.Add(IntToStr(I) + ":" + IntToStr(GetTickCount - Start));
       FreeOnTerminate := True;
       Resume;
     end;
 finally
   Memo1.Text := S.Text;
   S.Free;
 end;
end;

{ TTestThread }

procedure TTestThread.Execute;
begin
//  inherited;

end;


Здесь как видно создаются пустые 255 потоков и засекается время между их созданием...

На одной машине этот код пробегает за 15мсек
а на моей рабочей примерно вот такие данные:
1:16
...
100:672
...
255:1532


Первое число - номер создаваемого потока, второе - время прошедшее с момента старта процедуры...

Вот именно чего я никак не могу понять, отчего такие тормоза :)


 
panov ©   (2004-10-14 10:09) [42]

>Rouse_ ©   (14.10.04 09:27) [41]

А какая ОС?


 
Rouse_ ©   (2004-10-14 10:21) [43]

XP SP2 со всеми обновлениями
D7 SP1


 
panov ©   (2004-10-14 10:33) [44]

>Rouse_ ©   (14.10.04 10:21) [43]

мда...

На w2000prof у меня тратится 78мс на весь этот цикл...


 
Rouse_ ©   (2004-10-14 10:34) [45]

Во-во, я о чем и говорю, чудеса блин термоядерной рекуперации :((


 
panov ©   (2004-10-14 10:38) [46]

>Rouse_ ©   (14.10.04 10:34) [45]

т.е. на одной ОС, но на разных ПК картина отличается?


 
Rouse_ ©   (2004-10-14 10:41) [47]

Да, дома стоит тоже самое только Дельфи не пропатченное...
Запустил на второй рабочей машине с ХР SP1, D7 SP1 - тоже скорость низкая, полный цикл за 600-700 Мсек пробегает...

Компьютеры Р4-3.200


 
panov ©   (2004-10-14 11:01) [48]

>Rouse_ ©   (14.10.04 10:41) [47]

А попробуй CreateThread в цикле вызвать, т.е. создать потоки без использования VCL.


 
Rouse_ ©   (2004-10-14 11:07) [49]

Гы, ты не поверишь, тоже самое, один в один... :((


 
panov ©   (2004-10-14 11:28) [50]

>Rouse_ ©   (14.10.04 11:07) [49]
А если в консольном приложении?

program Project1;

{$APPTYPE CONSOLE}

uses
 classes,windows,SysUtils;

type
 TTest=class(TThread)
 protected
   procedure Execute;override;
 end;

procedure TTest.Execute;
begin
end;

var
 i: Integer;
 Start: Cardinal;

begin
 Start := GetTickCount;
 for i := 0 to 255 do
 begin
   with TTest.Create(True) do
   begin
     FreeOnTerminate := True;
     Resume;
     WriteLn(IntToStr(I) + ":" + IntToStr(GetTickCount - Start));
   end;
 end;
 ReadLn;
end.


И еще проверь, от Delphi зависит или нет - вот в D6 откомпилировано:
ftp://ftp.spb.gkbank.ru/download/Test/Project1.exe


 
Rouse_ ©   (2004-10-14 12:23) [51]

Консоль аналогично, сейчас солью, проверю...


 
Rouse_ ©   (2004-10-14 12:33) [52]

> [50] panov ©   (14.10.04 11:28)
Твой ЕХЕ влет отработал :(


 
panov ©   (2004-10-14 13:05) [53]

>Rouse_ ©   (14.10.04 12:33) [52]

По рассказам мастеров в D7 реализация потоков отличается от D6, а в D6 от более низких версий(у меня D7 нет).


 
Verg ©   (2004-10-15 00:25) [54]


>  Rouse_ ©   (14.10.04 09:27)


Да, ну допустим, измерение времени в данном случае нельзя назвать чистым - там ко времени подмешиваютя.

> S.Add(IntToStr(I) + ":" + IntToStr(GetTickCount - Start));


Операции IntToStr, строковое объединие ( 2 раза ) и операция Add в TStringList. В среднем - 6 мс на итерацию цикла. Сказать, что много? - а фиг его знает

А если так, то что напишет?

procedure TForm1.Button1Click(Sender: TObject);
var
I: Integer;
Start: Cardinal;
S: TStringList;
begin
S := TStringList.Create;
try
  Start := GetTickCount;
  for I := 1 to 255 do
    with TTestThread.Create(True) do
    begin
      FreeOnTerminate := True;
      Resume;
    end;
  S.Add(IntToStr(GetTickCount - Start));
finally
  Memo1.Text := S.Text;
  S.Free;
end;
end;


 
Erik1 ©   (2004-10-15 10:51) [55]

А почему бы ненаписать
TTestThread.Create(Prefix + IntToStr(I));
А в конструкторе
Create(Value: String);
IP := inet_addr(PChar(Value));
FreeOnTerminate := True;
inherited Create(False);
Попробуй может поможет, а еще лучше скомпилировать все под D5. А спотрел реализацию TThread под D6 мне очень непонравилось.


 
Rouse_ ©   (2004-10-15 10:55) [56]

> [54] Verg ©   (15.10.04 00:25)
Так пишет общее время в районе 1300Мсек

Да тут что-то по всей видимости с Дельфи, потомучто уж если деже через CreateThread тормозит, то я теряюсь...

Вот пример Панова который он у себя собрал - отработал как нужно. т.е. быстро, но этот же код собранный у меня - медленно...

В чем может быть проблема, даже ума не приложу...

> [55] Erik1 ©   (15.10.04 10:51)
Пробовал такой вариант, тоже самое...


 
panov ©   (2004-10-15 12:36) [57]

>Rouse_ ©   (15.10.04 10:55) [56]

Моарль - D6 лучше, чем D7, а D5 лучше, чем D6.
А всех лучше - D3. (это так - самохоливарчик)


 
Rouse_ ©   (2004-10-15 12:58) [58]

> [57] panov ©   (15.10.04 12:36)
А паскаль всему голова ;)


 
Aldor ©   (2004-10-22 15:56) [59]

Позволю себе поднять ветку:
как версия компилятора может влиять на скорость вызова CreateThread??!


 
Anatoly Podgoretsky ©   (2004-10-22 16:16) [60]

panov ©   (15.10.04 12:36) [57]
Никакого холивара, так и есть, единственно возможности разные.


 
Rouse_ ©   (2004-10-22 16:57) [61]

> [59] Aldor ©   (22.10.04 15:56)
Версия дельфи ни при чем.
На обоих компьютерах она стоит одинаковая (специально дома сделал систему один в один с рабочим компьютером, включая OS и SP).

И всеравно наблюдается такой глюк с подтормаживанием на рабочем компьютере...


 
Aldor ©   (2004-10-22 20:17) [62]

Так я не понял, Вы нашли причину того, что откомпилированная у Панова программа работает быстрее на Вашей машине ([52])?


 
имя   (2004-10-22 21:25) [63]

Удалено модератором


 
Rouse_ ©   (2004-10-22 21:26) [64]

> [62] Aldor ©   (22.10.04 20:17)
Нет, к сожалению не нашли...
Вчера общался с Юрием Зотовым, он предположил кое что, но предположение к сожалению оказалось неверным...

Теперь я совсем потерялся, решение не найдено и никто не может объяснить причину...
Хорошо что хоть в практике не приходится создавать так много потоков в цикле...


 
wisekaa ©   (2004-10-22 23:00) [65]


> Rouse_

А что по железу, машины тоже одинаковые?
Мне на ум больше пока ничего не пришло.


 
jack128 ©   (2004-10-22 23:04) [66]

А у тя случайно не 16 цветов на мониторе??  :-))) А то я сегодня узнал, что программы, написанные на D5 не  запускаются, если в настройках экрана выставлено 16 цветов...


 
Rouse_ ©   (2004-10-22 23:26) [67]

> [65] wisekaa ©   (22.10.04 23:00)
По железу почти один в один, если не брать харды то на нормальной машине (на которой все норм) проц 3.0 в отлицие от 3.2 на глючной рабочей
Память по гектару оба
Мать один в один
Видюха 5.600 против 5.200 на глючной (но не думаешь же ты что потоки от видео тормозят(ведь на второй рабочей тоже проверяли, и тоже тупит) ;)

> [66] jack128 ©   (22.10.04 23:04)
Ну и конечно, не 16 цветов :)


 
wisekaa ©   (2004-10-23 00:02) [68]


> jack128 ©   (22.10.04 23:04) [66]

Вроде это только при использовании BDE.


> Rouse_ ©   (22.10.04 23:26) [67]

Нет не в видухе, я думал тормозят процы с мамками (бывают не удачные сочетани по производительности).
Харды - даже не знаю, насколько я понимаю, почти вся работа виндов с памятью все равно проходит через своп файл, но что-бы так зависеть от этого врядли.
А сетевухи? У меня на работе была глючная сетевуха, её коротнуло как-то в грозу, так работала ничего, но иногда глючила.


 
jack128 ©   (2004-10-23 00:23) [69]

wisekaa ©   (23.10.04 0:02) [68]
Вроде это только при использовании BDE.


использую IBX.  Да и сам инсталятор Дельфи при попытке запуститься тоже виснет.

зы А как BDE связана с видео режимом??


 
Rouse_ ©   (2004-10-23 00:24) [70]

Ну блин...
А как создание потока с сетевухой то связано? ;)


 
esu   (2004-10-23 01:28) [71]

сетка 192.168.1/24
вижу только себя (в домене)


 
Rouse_ ©   (2004-10-23 01:34) [72]

> [71] esu   (23.10.04 01:28)
Вход в домен произведен? ...


 
esu   (2004-10-23 01:40) [73]

Rouse_ ©   (23.10.04 01:34) [72]
Да. Это win2kserver, контроллер домена. ДНС соответственно localhost. Но сканирует относительно быстро (жаль что неверно :)


 
esu   (2004-10-23 01:46) [74]

2. выключен NBT (NetBIOS Over TCP/IP)
3. NetBEUI вообще отсутствует как класс


 
Rouse_ ©   (2004-10-23 01:47) [75]

> ДНС соответственно localhost
Собственно это демо опирается именно на сетевое имя, так что...


 
wisekaa ©   (2004-10-23 02:32) [76]


> Rouse_ ©   (23.10.04 00:24) [70]

Не с сетевухой создание не связано, это я про время отклика.

> jack128 ©   (23.10.04 00:23) [69]

BDE Adminnistrator требует такую цвет. гамму, думаю для работы с картинками в блобах, так что не исключаю такое требование и от других драйверов БД.


 
Aldor ©   (2004-10-23 09:37) [77]

В D6 и в D7 с разной скоростью  срабатывает именно строчка call CreateThread или что-то еще?


 
Rouse_ ©   (2004-10-23 13:34) [78]

> [77] Aldor ©   (23.10.04 09:37)
нет.
Есть 2 абсолютно идентичных компа.
На обоих стоит семерка с первым сервиспаком.
На одном нормально идет создание потока, на другом сильно тормозит...



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

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

Наверх




Память: 0.63 MB
Время: 0.113 c
6-1094221548
Wahnsinng
2004-09-03 18:25
2004.11.14
создание сайта


1-1099047825
vdddslep
2004-10-29 15:03
2004.11.14
копирование файлов


1-1098907717
Jolik
2004-10-28 00:08
2004.11.14
Как сделать в TListView...


3-1097821814
Viktor1
2004-10-15 10:30
2004.11.14
Помогите с запросом (перекрёстный)!!!


3-1098123552
Sid
2004-10-18 22:19
2004.11.14
Проблемс с подстановочными полями