After I wrote about a HTTP compression module in ASP.NET 2.0 one of my colleagues pointed out that the Deflate compression is faster than GZip. Because the HTTP compression module chooses GZip over Deflate if the browser allows it, I thought that I’d better make a quick performance test just to be sure. I used this little test method to give me the answer I was looking for:

using System.IO.Compression;

using System.IO;

using System.Diagnostics;

 

private void PerformanceTest()

{

  byte [] buffer = new byte [ 5000 ];

  using ( MemoryStream stream = new MemoryStream ())

  {

    Stopwatch sw = new Stopwatch ();

    sw.Start();

    for ( int i = 0 ; i < 1000 ; i++)

    {

      GZipStream gzip = new GZipStream (stream, CompressionMode .Compress);

      gzip.Write(buffer, 0 , buffer.Length);

    }

 

    sw.Stop();

    Response.Write(sw.ElapsedMilliseconds);

  }
}

First I tested the GZipStream and then the DeflateStream. I expected a minor difference because the two compression methods are different, but the result astonished me. I measured the DeflateStream to 41% faster than GZip. That’s a very big difference. With this knowledge, I’ll have to change the HTTP compression module to choose Deflate over GZip.

Today I had to add some functionality to an already existing class library. In there were a internal virtual method that I thought were supposed to be protected virtual. To no big surprise, I couldn’t compile after changing it to protected. I didn’t want to make it public so I thought of combining the two accessors with no hope for it to work.

internal protected virtual void SomeMethod()

{

  DoSomething();

}

Then I had this code and guess what, it compiles. I had no idea that you could combine different accessors like this. Everyday – something new.

>