diff options
| author | Dan Engelbrecht <[email protected]> | 2024-04-26 10:12:03 +0200 |
|---|---|---|
| committer | GitHub Enterprise <[email protected]> | 2024-04-26 10:12:03 +0200 |
| commit | ef1b4234c851131cf5a6d249684c14c5c27d2878 (patch) | |
| tree | afd972c077b2585c2dc336b79eb1d31d02372295 /src/zencore/iobuffer.cpp | |
| parent | fix oplog import during gcv2 (#62) (diff) | |
| download | zen-ef1b4234c851131cf5a6d249684c14c5c27d2878.tar.xz zen-ef1b4234c851131cf5a6d249684c14c5c27d2878.zip | |
use direct file access for large file hash (#63)
- Improvement: Refactor `IoHash::HashBuffer` and `BLAKE3::HashBuffer` to not use memory mapped files. Performs better and saves ~10% of oplog export time on CI
Diffstat (limited to 'src/zencore/iobuffer.cpp')
| -rw-r--r-- | src/zencore/iobuffer.cpp | 25 |
1 files changed, 0 insertions, 25 deletions
diff --git a/src/zencore/iobuffer.cpp b/src/zencore/iobuffer.cpp index 96a893082..e1e8750a1 100644 --- a/src/zencore/iobuffer.cpp +++ b/src/zencore/iobuffer.cpp @@ -701,31 +701,6 @@ IoBufferBuilder::MakeFromTemporaryFile(const std::filesystem::path& FileName) return IoBuffer(IoBuffer::File, Handle, 0, FileSize, /*IsWholeFile*/ true); } -IoHash -HashBuffer(IoBuffer& Buffer) -{ - size_t BufferSize = Buffer.Size(); - static const size_t BufferingSize = 512 * 1024; - if (BufferSize >= (BufferingSize + BufferingSize / 2)) - { - IoBufferFileReference _; - if (Buffer.GetFileReference(/* out */ _)) - { - size_t Offset = 0; - IoHashStream HashStream; - while (Offset < BufferSize) - { - size_t ChunkSize = Min<size_t>(BufferSize - Offset, BufferingSize); - IoBuffer SubRange(Buffer, Offset, ChunkSize); - HashStream.Append(SubRange.GetData(), SubRange.GetSize()); - Offset += ChunkSize; - } - return HashStream.GetHash(); - } - } - return IoHash::HashBuffer(Buffer.Data(), BufferSize); -} - ////////////////////////////////////////////////////////////////////////// #if ZEN_WITH_TESTS |