4

背景

我正在考虑整合CompressFilterfrom

从 MVC 中生成的 HTML 中删除多余的空格

进入我自己的代码。在此之前,我想测量在CompressFilter. 由于我不能使用 Visual Studio Profiler,我决定创建一个简单的流包装器

private class BenchmarkStream : Stream
{
    Stream inner;

    public BenchmarkStream(Stream inner)
    {
        if (inner == null) throw new ArgumentException("inner");
        this.inner = inner;
    }

    public override void Write(byte[] buffer, int offset, int count)
    {
        Stopwatch sw = Stopwatch.StartNew();
        inner.Write(buffer, offset, count);
        sw.Stop();
        Debug.WriteLine("Compressed " + count + " bytes in " + 
           sw.ElapsedMilliseconds + "ms");
    }
    // Rest of implementation removed for brevity
}

像这样使用

response.Filter = new BenchmarkStream(
                    new GZipStream(response.Filter, CompressionMode.Compress));

问题

我是否负责处理我的流inner,或者 ASP.Net 运行时是否有一种机制会这样做?

的代码CompressFilter没有显式处理GZipStreamDeflateStream分配给response.Filter,但我看不到运行时如何处理inner.

我是否正确地假设GZipStreamDeflateStream负责处理它组成的流?

4

0 回答 0