Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Работа с логами


Страницы:   1 2 3 4

123-ий ©   (2008-06-25 11:36:00) 

Как лучше организовать сабж? В том смысле, какими методами его лучше читать и писАть в него каку-либо инфу?


Тын-Дын   (2008-06-28 01:42:00) [1]

PS.
Тест1 - Тын-Дын
Тест2 - Поросенок Винни-Пух
Тест3 - Loginov Dmitry


Тын-Дын   (2008-06-28 01:40:00) [2]


> Поросенок Винни-Пух ©   (27.06.08 14:22) [61]
> people may not see the differenceНе, ну объясните мотивы
> персонажа.Кто-то просто привет модуль без коментариев.Рисуется
> перец, который ехидно страшивает, типа ну и скока там у
> вас?Ему в ответ: а зачем тебе и что ты по ответу можешь
> сказать?Он: - мне это поможет оценить всякую хрень.Я - на,
>  оценивай.Он: мне количество обращений нифига не говорит,
>  а ты не понтуйся.Каково, а?


Для крутых перцев:
Вот реализация ведения протокола: http://89.223.39.99/files/threadlog.zip

Тестовый пример:

uses
 uThreadLog;

type
TThrPing=class(TThread)
private
 FHost: String;
 FLog: TThreadLog;
protected
 procedure Execute; override;
public
 constructor Create(Host: String; Log: TThreadLog);
end;

implementation

{ TThrPing }

constructor TThrPing.Create(Host: String; Log: TThreadLog);
begin
 inherited Create(True);
 FreeOnTerminate := True;
 FHost := Host;
 FLog := Log;
 Resume;
end;

procedure TThrPing.Execute;
var
 s: String;
 i: Integer;
 dt: Cardinal;
begin
 dt := GetTickCount;
 for i := 0 to 100000 do
 begin
   s := FormatDateTime('hh:nn:ss  ',now)+ IntToStr(ThreadId)+'('+IntToStr(i)+'):'+StringOfChar('a',50);
   FLog.Add(s);
   if (i>0) and ((i mod 10000)=0) then
   begin
     MessageBox(0,PChar(IntTOStr(GetTickCount-dt)),'',MB_OK);
     Exit;
   end;
 end;
end;

//Тест1
procedure TForm1.Button1Click(Sender: TObject);
var
 Log1: TThreadLog;
begin
Log1 := TThreadLog.Create('c:\Log1','c:\ArchLog',100);
Log1.Start;
          TThrPing.Create('127.0.0.1',Log1);
          TThrPing.Create('127.0.0.2',Log1);
          TThrPing.Create('127.0.0.3',Log1);
end;

//Тест2
procedure TForm1.Button2Click(Sender: TObject);
var
 s: String;
 i: Integer;
 dt: Cardinal;
begin
 dt := GEtTickCount;
 for i := 0 to 100000 do
 begin
   s := FormatDateTime('hh:nn:ss  ',now)+ 'qqqq'+'('+IntToStr(i)+'):'+StringOfChar('a',31);
   Log(s);
   if (i>0) and ((i mod 10000)=0) then
   begin
     MEssageBox(0,PChar(IntTOStr(GetTickCount-dt)),'',MB_OK);
     Exit;
   end;
 end;
end;

//Тест3
procedure TForm1.Button3Click(Sender: TObject);
var
 ld: TLDSLogger;
 s: String;
 i: Integer;
 dt: Cardinal;
begin
 ld := TLDSLogger.Create('c:\lds.log');
 dt := GEtTickCount;
 for i := 0 to 100000 do
 begin
   s := FormatDateTime('hh:nn:ss  ',now)+ 'qqqq'+'('+IntToStr(i)+'):'+StringOfChar('a',31);
   ld.LogStr(s);
   if (i>0) and ((i mod 10000)=0) then
   begin
     MEssageBox(0,PChar(IntTOStr(GetTickCount-dt)),'',MB_OK);
     Exit;
   end;
 end;
 ld.Free;
end;

Время выполнения:
Тест1(Запись из 3х потоков) ~ 328-400мс
Тест2(Запись из 1 потока)    ~ 1203-1359мс
Тест3(Запись из 1 потока)    ~ 1172-1395мс


В LDS хорошая функциональность. При обычных требованиях к ведению журнала - отлично сделанная вещь.


Игорь Шевченко   (2008-06-27 14:37:00) [3]

завязываем с оффтопиком. можно вполне предметно побеседовать в чате - для чего-то его тут сделали ?


Поросенок Винни-Пух   (2008-06-27 14:22:00) [4]

people may not see the difference

Не, ну объясните мотивы персонажа.
Кто-то просто привет модуль без коментариев.
Рисуется перец, который ехидно страшивает, типа ну и скока там у вас?
Ему в ответ: а зачем тебе и что ты по ответу можешь сказать?
Он: - мне это поможет оценить всякую хрень.
Я - на, оценивай.
Он: мне количество обращений нифига не говорит, а ты не понтуйся.

Каково, а?


Игорь Шевченко   (2008-06-27 14:15:00) [5]

Поросенок Винни-Пух ©   (27.06.08 13:53) [55]


> спорим?!


people may not see the difference


@!!ex   (2008-06-27 14:15:00) [6]

Правда в один поток.


@!!ex   (2008-06-27 14:13:00) [7]

> [35] Тын-Дын ©   (27.06.08 11:26)
>
> > Поросенок Винни-Пух ©   (27.06.08 11:09) [34]
> > не только тестирование, но и многолетняя эксплуатация
>
>
> Ну и как с нагрузкой?
> Сколько записей в секунду выдерживает и время реакции(время
> начала/конца обращения к процедуре?).

за 30 секунд 80 мегабайт лога, без видимого падения ФПС.


Поросенок Винни-Пух   (2008-06-27 14:07:00) [8]

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


Тын-Дын   (2008-06-27 14:06:00) [9]

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


Поросенок Винни-Пух   (2008-06-27 13:53:00) [10]

Ну что же еще остается, если твоей крутой реализации лога мы все равно здесь не увидим.

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

спорим?!


Тын-Дын   (2008-06-27 13:49:00) [11]

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


Тын-Дын   (2008-06-27 13:48:00) [12]

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


Тын-Дын   (2008-06-27 13:46:00) [13]

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


Поросенок Винни-Пух   (2008-06-27 13:46:00) [14]

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


Поросенок Винни-Пух   (2008-06-27 13:45:00) [15]

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


Тын-Дын   (2008-06-27 13:45:00) [16]

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


Поросенок Винни-Пух   (2008-06-27 13:30:00) [17]

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


Поросенок Винни-Пух   (2008-06-27 13:28:00) [18]

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


Тын-Дын   (2008-06-27 12:27:00) [19]


> Поросенок Винни-Пух ©   (27.06.08 12:11) [45]
> Отвеченное количество может помочь оценить эффективность
> реализации.
> Странно, что такой простой вопрос в тупик ставит.
>
> Ну давай, зацени.
> Логируются не вычисления в памяти, а обращения к бд, криптографические
> операции и прочее, само по себе затратное по времени, все
> это прерывается ожиданиями сервера окончания интеракитвых
> фаз на клиенте.
>
> Число записей в секунду - 21.
> Оцени хоть что-нибудь.


Число обращений к функции протоколирования 21 ни о чем не говорит.
Вот если бы ты обращался 1000 раз в секунду к функции записи в журнал из нескольких потоков, тогда можно было бы оценить с замерами в каждом потоке количества обращений и замером количества строк, записанных в журнал за единицу времени.


Поросенок Винни-Пух   (2008-06-27 12:11:00) [20]

Отвеченное количество может помочь оценить эффективность реализации.
Странно, что такой простой вопрос в тупик ставит.


Ну давай, зацени.
Логируются не вычисления в памяти, а обращения к бд, криптографические операции и прочее, само по себе затратное по времени, все это прерывается ожиданиями сервера окончания интеракитвых фаз на клиенте.

Число записей в секунду - 21.
Оцени хоть что-нибудь.


Страницы:   1 2 3 4

Наверх

Титульная страница Поиск, карта сайта Написать письмо