Mercurial > hg > orthanc
diff OrthancFramework/Sources/ChunkedBuffer.h @ 4150:b56f3a37a4a1
optimization of ChunkedBuffer if many small chunks are added
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Wed, 19 Aug 2020 11:18:55 +0200 |
parents | 732ad6c618ba |
children | 0034f855c023 |
line wrap: on
line diff
--- a/OrthancFramework/Sources/ChunkedBuffer.h Tue Aug 18 16:57:20 2020 +0200 +++ b/OrthancFramework/Sources/ChunkedBuffer.h Wed Aug 19 11:18:55 2020 +0200 @@ -34,15 +34,21 @@ { private: typedef std::list<std::string*> Chunks; - size_t numBytes_; - Chunks chunks_; + + size_t numBytes_; + Chunks chunks_; + std::string pendingBuffer_; // Buffer to speed up if adding many small chunks + size_t pendingPos_; void Clear(); + void AddChunkInternal(const void* chunkData, + size_t chunkSize); + + void FlushPendingBuffer(); + public: - ChunkedBuffer() : numBytes_(0) - { - } + ChunkedBuffer(); ~ChunkedBuffer() { @@ -51,7 +57,14 @@ size_t GetNumBytes() const { - return numBytes_; + return numBytes_ + pendingPos_; + } + + void SetPendingBufferSize(size_t size); + + size_t GetPendingBufferSize() const + { + return pendingBuffer_.size(); } void AddChunk(const void* chunkData,