Skip to content

Commit 570e2a4

Browse files
authored
improve readbyte performance (#168)
1 parent d7e8370 commit 570e2a4

File tree

4 files changed

+97
-76
lines changed

4 files changed

+97
-76
lines changed

src/noop.jl

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ function TranscodingStream(codec::Noop, stream::IO;
3434
checkbufsize(bufsize)
3535
checksharedbuf(sharedbuf, stream)
3636
if sharedbuf
37-
buffer = stream.state.buffer1
37+
buffer = stream.buffer1
3838
else
3939
buffer = Buffer(bufsize)
4040
end
@@ -56,34 +56,34 @@ function Base.position(stream::NoopStream)
5656
if mode === :idle
5757
return Int64(0)
5858
elseif mode === :write
59-
return position(stream.stream) + buffersize(stream.state.buffer1)
59+
return position(stream.stream) + buffersize(stream.buffer1)
6060
elseif mode === :read
61-
return position(stream.stream) - buffersize(stream.state.buffer1)
61+
return position(stream.stream) - buffersize(stream.buffer1)
6262
end
6363
@assert false "unreachable"
6464
end
6565

6666
function Base.seek(stream::NoopStream, pos::Integer)
6767
seek(stream.stream, pos)
68-
initbuffer!(stream.state.buffer1)
68+
initbuffer!(stream.buffer1)
6969
return stream
7070
end
7171

7272
function Base.seekstart(stream::NoopStream)
7373
seekstart(stream.stream)
74-
initbuffer!(stream.state.buffer1)
74+
initbuffer!(stream.buffer1)
7575
return stream
7676
end
7777

7878
function Base.seekend(stream::NoopStream)
7979
seekend(stream.stream)
80-
initbuffer!(stream.state.buffer1)
80+
initbuffer!(stream.buffer1)
8181
return stream
8282
end
8383

8484
function Base.unsafe_read(stream::NoopStream, output::Ptr{UInt8}, nbytes::UInt)
8585
changemode!(stream, :read)
86-
buffer = stream.state.buffer1
86+
buffer = stream.buffer1
8787
p = output
8888
p_end = output + nbytes
8989
while p < p_end && !eof(stream)
@@ -105,7 +105,7 @@ end
105105

106106
function Base.unsafe_write(stream::NoopStream, input::Ptr{UInt8}, nbytes::UInt)
107107
changemode!(stream, :write)
108-
buffer = stream.state.buffer1
108+
buffer = stream.buffer1
109109
if marginsize(buffer) nbytes
110110
copydata!(buffer, input, nbytes)
111111
return Int(nbytes)
@@ -132,8 +132,8 @@ function stats(stream::NoopStream)
132132
state = stream.state
133133
mode = state.mode
134134
@checkmode (:idle, :read, :write)
135-
buffer = state.buffer1
136-
@assert buffer === stream.state.buffer2
135+
buffer = stream.buffer1
136+
@assert buffer === stream.buffer2
137137
if mode == :idle
138138
consumed = supplied = 0
139139
elseif mode == :read
@@ -157,9 +157,9 @@ end
157157

158158
function fillbuffer(stream::NoopStream; eager::Bool = false)
159159
changemode!(stream, :read)
160-
buffer = stream.state.buffer1
161-
@assert buffer === stream.state.buffer2
162-
if stream.stream isa TranscodingStream && buffer === stream.stream.state.buffer1
160+
buffer = stream.buffer1
161+
@assert buffer === stream.buffer2
162+
if stream.stream isa TranscodingStream && buffer === stream.buffer1
163163
# Delegate the operation when buffers are shared.
164164
return fillbuffer(stream.stream, eager = eager)
165165
end
@@ -174,8 +174,8 @@ end
174174

175175
function flushbuffer(stream::NoopStream, all::Bool=false)
176176
changemode!(stream, :write)
177-
buffer = stream.state.buffer1
178-
@assert buffer === stream.state.buffer2
177+
buffer = stream.buffer1
178+
@assert buffer === stream.buffer2
179179
nflushed::Int = 0
180180
if all
181181
while buffersize(buffer) > 0
@@ -190,6 +190,6 @@ function flushbuffer(stream::NoopStream, all::Bool=false)
190190
end
191191

192192
function flushuntilend(stream::NoopStream)
193-
stream.state.buffer1.transcoded += writedata!(stream.stream, stream.state.buffer1)
193+
stream.buffer1.transcoded += writedata!(stream.stream, stream.buffer1)
194194
return
195195
end

0 commit comments

Comments
 (0)