Matt,

It's impressive how fast synchronous file IO is. Asynchronous appending may
be more appropriate for different transports, specifically ones with either
high latency or low throughput. E.g. the remoting appender.

Nicko 

> -----Original Message-----
> From: Baldree Matt [mailto:[EMAIL PROTECTED] 
> Sent: 01 March 2004 22:02
> To: 'Log4NET Dev'
> Subject: RE: async appenders
> 
> Nick,
> 
> I have tested my Async appender and your appenders on a 
> multiproc box. First off, my appenders were not opening the 
> file in an async mode. I fixed that and ran a hammer test. 
> Your appenders are faster in all cases. I also noted this 
> statement in the MSDN for [BeginWrite] method "Note: On 
> Windows, all I/O operations smaller than 64 KB will complete 
> synchronously for better performance. Asynchronous I/O might 
> hinder performance for buffer sizes smaller than 64 KB." I 
> have not been able to produce a test case where the async 
> appenders are needed over your appenders. Here is the hammer 
> method I use to output the debug tests. So, based on my 
> testing I would stay with what you have unless somebody sees 
> a flaw in my thinking.
> 
> -matt
> 
> //when you run tests, make sure you are only logging to file 
> and not console or trace.
> 
> [SetUp]
> public void RunBeforeEachTest()
> {     
>  rEvent = new ManualResetEvent(false);
> }
> 
> [Test]
> public void TestLogWithHammer()
> {
> log.Debug("Begin hammer test.");
> //create 100 threads
> Thread[] t = new Thread[100];
> for (int i=0; i<100; i++) 
> {                     
>       t[i] = new Thread(new ThreadStart(Hammer));
>       t[i].Name = (i+1).ToString();
>       t[i].Start();
> }             
> //make sure all threads have started
> Thread.Sleep(100);
> //fire event
> rEvent.Set();
> //join all threads so they can all finish for (int i=0; i<100; i++) {
>       t[i].Join();
> }
> }
>       
> private void Hammer() 
> {                     
> if(rEvent.WaitOne())
> {
>       for (int i=0; i<100; i++) 
>       {
>               log.Debug("hammer iteration-"+i);
>       }
>       log.Info(">>Done");
> }                     
> }
> 
> -----Original Message-----
> From: Nicko Cadell [mailto:[EMAIL PROTECTED]
> Sent: Monday, March 01, 2004 8:41 AM
> To: 'Log4NET Dev'
> Subject: RE: async appenders
> 
> 
> Matt,
> 
> Thanks for the upload. I'm not sure why the list does not 
> accept ZIP files, I will have to look into that.
> 
> From having a quick look through the code it looks like you 
> are using the Stream.BeginWrite to achieve the asynchronous 
> behaviour (after changing the appenders to write to a stream 
> rather than a text writer).
> 
> How does this perform when compared to synchronous file writing?
> 
> Nicko
> 
> > -----Original Message-----
> > From: matt baldree [mailto:[EMAIL PROTECTED]
> > Sent: 27 February 2004 02:35
> > To: [email protected]
> > Subject: async appenders
> > 
> > I uploaded the zip file to the SF site. It is patch number [905560].
> >  
> > -matt
> > 
> 

Reply via email to