![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Работа с логами
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.
Оцени хоть что-нибудь.