@@ -19,8 +19,12 @@ public class BufferedStreams
1919 private MemoryStream stream4 ;
2020 private MemoryStream stream5 ;
2121 private MemoryStream stream6 ;
22+ private ChunkedMemoryStream chunkedMemoryStream1 ;
23+ private ChunkedMemoryStream chunkedMemoryStream2 ;
2224 private BufferedReadStream bufferedStream1 ;
2325 private BufferedReadStream bufferedStream2 ;
26+ private BufferedReadStream bufferedStream3 ;
27+ private BufferedReadStream bufferedStream4 ;
2428 private BufferedReadStreamWrapper bufferedStreamWrap1 ;
2529 private BufferedReadStreamWrapper bufferedStreamWrap2 ;
2630
@@ -35,8 +39,18 @@ public void CreateStreams()
3539 this . stream6 = new MemoryStream ( this . buffer ) ;
3640 this . stream6 = new MemoryStream ( this . buffer ) ;
3741
42+ this . chunkedMemoryStream1 = new ChunkedMemoryStream ( Configuration . Default . MemoryAllocator ) ;
43+ this . chunkedMemoryStream1 . Write ( this . buffer ) ;
44+ this . chunkedMemoryStream1 . Position = 0 ;
45+
46+ this . chunkedMemoryStream2 = new ChunkedMemoryStream ( Configuration . Default . MemoryAllocator ) ;
47+ this . chunkedMemoryStream2 . Write ( this . buffer ) ;
48+ this . chunkedMemoryStream2 . Position = 0 ;
49+
3850 this . bufferedStream1 = new BufferedReadStream ( Configuration . Default , this . stream3 ) ;
3951 this . bufferedStream2 = new BufferedReadStream ( Configuration . Default , this . stream4 ) ;
52+ this . bufferedStream3 = new BufferedReadStream ( Configuration . Default , this . chunkedMemoryStream1 ) ;
53+ this . bufferedStream4 = new BufferedReadStream ( Configuration . Default , this . chunkedMemoryStream2 ) ;
4054 this . bufferedStreamWrap1 = new BufferedReadStreamWrapper ( this . stream5 ) ;
4155 this . bufferedStreamWrap2 = new BufferedReadStreamWrapper ( this . stream6 ) ;
4256 }
@@ -46,8 +60,12 @@ public void DestroyStreams()
4660 {
4761 this . bufferedStream1 ? . Dispose ( ) ;
4862 this . bufferedStream2 ? . Dispose ( ) ;
63+ this . bufferedStream3 ? . Dispose ( ) ;
64+ this . bufferedStream4 ? . Dispose ( ) ;
4965 this . bufferedStreamWrap1 ? . Dispose ( ) ;
5066 this . bufferedStreamWrap2 ? . Dispose ( ) ;
67+ this . chunkedMemoryStream1 ? . Dispose ( ) ;
68+ this . chunkedMemoryStream2 ? . Dispose ( ) ;
5169 this . stream1 ? . Dispose ( ) ;
5270 this . stream2 ? . Dispose ( ) ;
5371 this . stream3 ? . Dispose ( ) ;
@@ -86,6 +104,21 @@ public int BufferedReadStreamRead()
86104 return r ;
87105 }
88106
107+ [ Benchmark ]
108+ public int BufferedReadStreamChunkedRead ( )
109+ {
110+ int r = 0 ;
111+ BufferedReadStream reader = this . bufferedStream3 ;
112+ byte [ ] b = this . chunk2 ;
113+
114+ for ( int i = 0 ; i < reader . Length / 2 ; i ++ )
115+ {
116+ r += reader . Read ( b , 0 , 2 ) ;
117+ }
118+
119+ return r ;
120+ }
121+
89122 [ Benchmark ]
90123 public int BufferedReadStreamWrapRead ( )
91124 {
@@ -129,6 +162,20 @@ public int BufferedReadStreamReadByte()
129162 return r ;
130163 }
131164
165+ [ Benchmark ]
166+ public int BufferedReadStreamChunkedReadByte ( )
167+ {
168+ int r = 0 ;
169+ BufferedReadStream reader = this . bufferedStream4 ;
170+
171+ for ( int i = 0 ; i < reader . Length ; i ++ )
172+ {
173+ r += reader . ReadByte ( ) ;
174+ }
175+
176+ return r ;
177+ }
178+
132179 [ Benchmark ]
133180 public int BufferedReadStreamWrapReadByte ( )
134181 {
0 commit comments