Add handle HandleStreamingReader (performance improvements) #160
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This commit introduces a new type 'StreamingReadResponse' which
implements the io.Writer interface. Thus users are writing into the
response rather than updating the Data property of ReadResponse. This
allows us to preallocate the space for the whole message and therefore
reduce allocations. Additionally we may now use a sync.Pool to manage
the required space needed for the read request and further minimize
allocations.
This patch intends to not break existing implementations of the
fuse.HandleReader interface by introducing a new interface that provides
the advantages described above.
I've benchmarked this using a scenario that is similar to the
environment I need for the application I am currently developing. The
benchmark reads data blobs of different sizes from the solid-state
drive. Using this patch we can achieve a 1.60x speed up as well as
reduce memory allocations by 85%.
benchmark.txt