@@ -19,8 +19,12 @@ public class BufferedStreams
19
19
private MemoryStream stream4 ;
20
20
private MemoryStream stream5 ;
21
21
private MemoryStream stream6 ;
22
+ private ChunkedMemoryStream chunkedMemoryStream1 ;
23
+ private ChunkedMemoryStream chunkedMemoryStream2 ;
22
24
private BufferedReadStream bufferedStream1 ;
23
25
private BufferedReadStream bufferedStream2 ;
26
+ private BufferedReadStream bufferedStream3 ;
27
+ private BufferedReadStream bufferedStream4 ;
24
28
private BufferedReadStreamWrapper bufferedStreamWrap1 ;
25
29
private BufferedReadStreamWrapper bufferedStreamWrap2 ;
26
30
@@ -35,8 +39,18 @@ public void CreateStreams()
35
39
this . stream6 = new MemoryStream ( this . buffer ) ;
36
40
this . stream6 = new MemoryStream ( this . buffer ) ;
37
41
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
+
38
50
this . bufferedStream1 = new BufferedReadStream ( Configuration . Default , this . stream3 ) ;
39
51
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 ) ;
40
54
this . bufferedStreamWrap1 = new BufferedReadStreamWrapper ( this . stream5 ) ;
41
55
this . bufferedStreamWrap2 = new BufferedReadStreamWrapper ( this . stream6 ) ;
42
56
}
@@ -46,8 +60,12 @@ public void DestroyStreams()
46
60
{
47
61
this . bufferedStream1 ? . Dispose ( ) ;
48
62
this . bufferedStream2 ? . Dispose ( ) ;
63
+ this . bufferedStream3 ? . Dispose ( ) ;
64
+ this . bufferedStream4 ? . Dispose ( ) ;
49
65
this . bufferedStreamWrap1 ? . Dispose ( ) ;
50
66
this . bufferedStreamWrap2 ? . Dispose ( ) ;
67
+ this . chunkedMemoryStream1 ? . Dispose ( ) ;
68
+ this . chunkedMemoryStream2 ? . Dispose ( ) ;
51
69
this . stream1 ? . Dispose ( ) ;
52
70
this . stream2 ? . Dispose ( ) ;
53
71
this . stream3 ? . Dispose ( ) ;
@@ -86,6 +104,21 @@ public int BufferedReadStreamRead()
86
104
return r ;
87
105
}
88
106
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
+
89
122
[ Benchmark ]
90
123
public int BufferedReadStreamWrapRead ( )
91
124
{
@@ -129,6 +162,20 @@ public int BufferedReadStreamReadByte()
129
162
return r ;
130
163
}
131
164
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
+
132
179
[ Benchmark ]
133
180
public int BufferedReadStreamWrapReadByte ( )
134
181
{
0 commit comments