diff options
author | omakovski <omakovski@yandex-team.ru> | 2022-02-10 16:49:30 +0300 |
---|---|---|
committer | Daniil Cherednik <dcherednik@yandex-team.ru> | 2022-02-10 16:49:30 +0300 |
commit | 9d2a99f5085a7425ef22831762c8684b687e0500 (patch) | |
tree | 5d5cb817648f650d76cf1076100726fd9b8448e8 /util/memory | |
parent | 5feb3b4d96aaa42ce546426241c48d626e6d6685 (diff) | |
download | ydb-9d2a99f5085a7425ef22831762c8684b687e0500.tar.gz |
Restoring authorship annotation for <omakovski@yandex-team.ru>. Commit 2 of 2.
Diffstat (limited to 'util/memory')
-rw-r--r-- | util/memory/pool.cpp | 10 | ||||
-rw-r--r-- | util/memory/pool.h | 22 | ||||
-rw-r--r-- | util/memory/pool_ut.cpp | 80 |
3 files changed, 56 insertions, 56 deletions
diff --git a/util/memory/pool.cpp b/util/memory/pool.cpp index 58cbd22ed1..9a011f0e4f 100644 --- a/util/memory/pool.cpp +++ b/util/memory/pool.cpp @@ -11,11 +11,11 @@ TMemoryPool::IGrowPolicy* TMemoryPool::TExpGrow::Instance() noexcept { void TMemoryPool::AddChunk(size_t hint) { const size_t dataLen = Max(BlockSize_, hint); - size_t allocSize = dataLen + sizeof(TChunk); - if (Options_.RoundUpToNextPowerOfTwo) { - allocSize = FastClp2(allocSize); - } - TBlock nb = Alloc_->Allocate(allocSize); + size_t allocSize = dataLen + sizeof(TChunk); + if (Options_.RoundUpToNextPowerOfTwo) { + allocSize = FastClp2(allocSize); + } + TBlock nb = Alloc_->Allocate(allocSize); // Add previous chunk's stats if (Current_ != &Empty_) { diff --git a/util/memory/pool.h b/util/memory/pool.h index 8f04e66969..13c8b6b9ed 100644 --- a/util/memory/pool.h +++ b/util/memory/pool.h @@ -123,20 +123,20 @@ public: static IGrowPolicy* Instance() noexcept; }; - struct TOptions { - bool RoundUpToNextPowerOfTwo; - TOptions() - : RoundUpToNextPowerOfTwo(true) - { - } - }; - - inline TMemoryPool(size_t initial, IGrowPolicy* grow = TExpGrow::Instance(), IAllocator* alloc = TDefaultAllocator::Instance(), const TOptions& options = TOptions()) + struct TOptions { + bool RoundUpToNextPowerOfTwo; + TOptions() + : RoundUpToNextPowerOfTwo(true) + { + } + }; + + inline TMemoryPool(size_t initial, IGrowPolicy* grow = TExpGrow::Instance(), IAllocator* alloc = TDefaultAllocator::Instance(), const TOptions& options = TOptions()) : Current_(&Empty_) , BlockSize_(initial) , GrowPolicy_(grow) , Alloc_(alloc) - , Options_(options) + , Options_(options) , Origin_(initial) , MemoryAllocatedBeforeCurrent_(0) , MemoryWasteBeforeCurrent_(0) @@ -299,7 +299,7 @@ private: size_t BlockSize_; IGrowPolicy* GrowPolicy_; IAllocator* Alloc_; - TOptions Options_; + TOptions Options_; TChunkList Chunks_; const size_t Origin_; size_t MemoryAllocatedBeforeCurrent_; diff --git a/util/memory/pool_ut.cpp b/util/memory/pool_ut.cpp index 2797058336..1158a8ca42 100644 --- a/util/memory/pool_ut.cpp +++ b/util/memory/pool_ut.cpp @@ -83,7 +83,7 @@ class TMemPoolTest: public TTestBase { UNIT_TEST(TestZeroArray) UNIT_TEST(TestLargeStartingAlign) UNIT_TEST(TestMoveAlloc) - UNIT_TEST(TestRoundUpToNextPowerOfTwoOption) + UNIT_TEST(TestRoundUpToNextPowerOfTwoOption) UNIT_TEST_SUITE_END(); private: @@ -239,47 +239,47 @@ private: CheckMoveAlloc<TNoCopy>(); CheckMoveAlloc<TErrorOnCopy>(); } - - void TestRoundUpToNextPowerOfTwoOption() { - const size_t MEMORY_POOL_BLOCK_SIZE = (1024 - 16) * 4096 - 16 - 16 - 32; - + + void TestRoundUpToNextPowerOfTwoOption() { + const size_t MEMORY_POOL_BLOCK_SIZE = (1024 - 16) * 4096 - 16 - 16 - 32; + class TFixedBlockSizeMemoryPoolPolicy final: public TMemoryPool::IGrowPolicy { - public: - size_t Next(size_t /*prev*/) const noexcept override { - return MEMORY_POOL_BLOCK_SIZE; - } - }; - TFixedBlockSizeMemoryPoolPolicy allocationPolicy; - + public: + size_t Next(size_t /*prev*/) const noexcept override { + return MEMORY_POOL_BLOCK_SIZE; + } + }; + TFixedBlockSizeMemoryPoolPolicy allocationPolicy; + class TTestAllocator final: public TDefaultAllocator { - public: - TBlock Allocate(size_t len) override { - Size_ += len; - return TDefaultAllocator::Allocate(len); - } - - size_t GetSize() const { - return Size_; - } - - private: - size_t Size_ = 0; - }; - - TTestAllocator allocator; - - TMemoryPool::TOptions options; - options.RoundUpToNextPowerOfTwo = false; - - constexpr size_t EXPECTED_ALLOCATION_SIZE = MEMORY_POOL_BLOCK_SIZE + 32; - TMemoryPool pool(MEMORY_POOL_BLOCK_SIZE, &allocationPolicy, &allocator, options); - - pool.Allocate(MEMORY_POOL_BLOCK_SIZE); - UNIT_ASSERT_VALUES_EQUAL(EXPECTED_ALLOCATION_SIZE, allocator.GetSize()); - - pool.Allocate(1); - UNIT_ASSERT_VALUES_EQUAL(2 * EXPECTED_ALLOCATION_SIZE, allocator.GetSize()); - } + public: + TBlock Allocate(size_t len) override { + Size_ += len; + return TDefaultAllocator::Allocate(len); + } + + size_t GetSize() const { + return Size_; + } + + private: + size_t Size_ = 0; + }; + + TTestAllocator allocator; + + TMemoryPool::TOptions options; + options.RoundUpToNextPowerOfTwo = false; + + constexpr size_t EXPECTED_ALLOCATION_SIZE = MEMORY_POOL_BLOCK_SIZE + 32; + TMemoryPool pool(MEMORY_POOL_BLOCK_SIZE, &allocationPolicy, &allocator, options); + + pool.Allocate(MEMORY_POOL_BLOCK_SIZE); + UNIT_ASSERT_VALUES_EQUAL(EXPECTED_ALLOCATION_SIZE, allocator.GetSize()); + + pool.Allocate(1); + UNIT_ASSERT_VALUES_EQUAL(2 * EXPECTED_ALLOCATION_SIZE, allocator.GetSize()); + } }; UNIT_TEST_SUITE_REGISTRATION(TMemPoolTest); |