バックグラウンド
CompressFilter
からの統合を検討しています
自分のコードに。それを行う前に、で費やした時間を測定したいと思い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