背景
我正在考虑整合CompressFilter
from
进入我自己的代码。在此之前,我想测量在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
没有显式处理GZipStream
或DeflateStream
分配给response.Filter
,但我看不到运行时如何处理inner
.
我是否正确地假设GZipStream
并DeflateStream
负责处理它组成的流?