Форум: "Начинающим";
Текущий архив: 2008.07.27;
Скачать: [xml.tar.bz2];
ВнизРабота с логами Найти похожие ветки
← →
Поросенок Винни-Пух © (2008-06-27 11:36) [40]Есть задачи с большим потоком обработки данных, и операции нужно протоколировать, не мешая основной задаче.
Это и есть прямое назначение.
И каким образом спрошенное у меня количество записей в секунду может что-то сказать про это?
← →
Игорь Шевченко © (2008-06-27 11:42) [41]
> И каким образом спрошенное у меня количество записей в секунду
> может что-то сказать про это?
повод померяться...
← →
Игорь Шевченко © (2008-06-27 11:47) [42]
> А во всех этих пример и реализациях нагрузочное многопоточное
> тестирование проводилось?
На свете существуют разные задачи.
← →
Anatoly Podgoretsky © (2008-06-27 11:48) [43]> Поросенок Винни-Пух (27.06.2008 11:33:38) [38]
for I := 1 to N do Log(IntToStr(I));
← →
Тын-Дын © (2008-06-27 12:07) [44]
> Поросенок Винни-Пух © (27.06.08 11:36) [40]
> Есть задачи с большим потоком обработки данных, и операции
> нужно протоколировать, не мешая основной задаче.
> Это и есть прямое назначение.
>
> И каким образом спрошенное у меня количество записей в секунду
> может что-то сказать про это?
Отвеченное количество может помочь оценить эффективность реализации.
Странно, что такой простой вопрос в тупик ставит.
> Игорь Шевченко © (27.06.08 11:47) [42]
>
> > А во всех этих пример и реализациях нагрузочное многопоточное
>
> > тестирование проводилось?
>
>
> На свете существуют разные задачи
Совершенно верно.
> Поросенок Винни-Пух © (27.06.08 11:34) [39]
> У меня не мешает.
см. [42]
Нет, так нет.
Значит, не возникали подобные задачи.
← →
Поросенок Винни-Пух © (2008-06-27 12:11) [45]Отвеченное количество может помочь оценить эффективность реализации.
Странно, что такой простой вопрос в тупик ставит.
Ну давай, зацени.
Логируются не вычисления в памяти, а обращения к бд, криптографические операции и прочее, само по себе затратное по времени, все это прерывается ожиданиями сервера окончания интеракитвых фаз на клиенте.
Число записей в секунду - 21.
Оцени хоть что-нибудь.
← →
Тын-Дын © (2008-06-27 12:27) [46]
> Поросенок Винни-Пух © (27.06.08 12:11) [45]
> Отвеченное количество может помочь оценить эффективность
> реализации.
> Странно, что такой простой вопрос в тупик ставит.
>
> Ну давай, зацени.
> Логируются не вычисления в памяти, а обращения к бд, криптографические
> операции и прочее, само по себе затратное по времени, все
> это прерывается ожиданиями сервера окончания интеракитвых
> фаз на клиенте.
>
> Число записей в секунду - 21.
> Оцени хоть что-нибудь.
Число обращений к функции протоколирования 21 ни о чем не говорит.
Вот если бы ты обращался 1000 раз в секунду к функции записи в журнал из нескольких потоков, тогда можно было бы оценить с замерами в каждом потоке количества обращений и замером количества строк, записанных в журнал за единицу времени.
← →
Поросенок Винни-Пух © (2008-06-27 13:28) [47]Удалено модератором
← →
Поросенок Винни-Пух © (2008-06-27 13:30) [48]Удалено модератором
← →
Тын-Дын © (2008-06-27 13:45) [49]Удалено модератором
← →
Поросенок Винни-Пух © (2008-06-27 13:45) [50]Удалено модератором
← →
Тын-Дын © (2008-06-27 13:46) [51]Удалено модератором
← →
Поросенок Винни-Пух © (2008-06-27 13:46) [52]Удалено модератором
← →
Тын-Дын © (2008-06-27 13:48) [53]Удалено модератором
← →
Тын-Дын © (2008-06-27 13:49) [54]Удалено модератором
← →
Поросенок Винни-Пух © (2008-06-27 13:53) [55]Ну что же еще остается, если твоей крутой реализации лога мы все равно здесь не увидим.
Спорим, что не увидим?
А если увидим, то ничего сколько нибудь отличного по производительности и надежности там не будет.
спорим?!
← →
Тын-Дын © (2008-06-27 14:06) [56]Удалено модератором
← →
Поросенок Винни-Пух © (2008-06-27 14:07) [57]Удалено модератором
← →
@!!ex © (2008-06-27 14:13) [58]> [35] Тын-Дын © (27.06.08 11:26)
>
> > Поросенок Винни-Пух © (27.06.08 11:09) [34]
> > не только тестирование, но и многолетняя эксплуатация
>
>
> Ну и как с нагрузкой?
> Сколько записей в секунду выдерживает и время реакции(время
> начала/конца обращения к процедуре?).
за 30 секунд 80 мегабайт лога, без видимого падения ФПС.
← →
@!!ex © (2008-06-27 14:15) [59]Правда в один поток.
← →
Игорь Шевченко © (2008-06-27 14:15) [60]Поросенок Винни-Пух © (27.06.08 13:53) [55]
> спорим?!
people may not see the difference
← →
Поросенок Винни-Пух © (2008-06-27 14:22) [61]people may not see the difference
Не, ну объясните мотивы персонажа.
Кто-то просто привет модуль без коментариев.
Рисуется перец, который ехидно страшивает, типа ну и скока там у вас?
Ему в ответ: а зачем тебе и что ты по ответу можешь сказать?
Он: - мне это поможет оценить всякую хрень.
Я - на, оценивай.
Он: мне количество обращений нифига не говорит, а ты не понтуйся.
Каково, а?
← →
Игорь Шевченко © (2008-06-27 14:37) [62]завязываем с оффтопиком. можно вполне предметно побеседовать в чате - для чего-то его тут сделали ?
← →
Тын-Дын © (2008-06-28 01:40) [63]
> Поросенок Винни-Пух © (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-28 01:42) [64]PS.
Тест1 - Тын-Дын
Тест2 - Поросенок Винни-Пух
Тест3 - Loginov Dmitry
Страницы: 1 2 вся ветка
Форум: "Начинающим";
Текущий архив: 2008.07.27;
Скачать: [xml.tar.bz2];
Память: 0.58 MB
Время: 0.008 c