diff options
author | Kaz Wesley <keziahw@gmail.com> | 2016-11-02 14:09:03 -0700 |
---|---|---|
committer | Kaz Wesley <keziahw@gmail.com> | 2016-11-02 16:52:56 -0700 |
commit | b3ddc5e76f457d504b05273429e06e684e76f5de (patch) | |
tree | 3ef7ad8ffc31c9cb49a7bbcf2352aadf89763846 /src/test/allocator_tests.cpp | |
parent | 0b59f80625923978583efca08f8e763ea1710bb2 (diff) |
LockedPool: avoid quadratic-time allocation
Use separate maps for used/free chunks to avoid linear scan through alloced
chunks for each alloc.
Diffstat (limited to 'src/test/allocator_tests.cpp')
-rw-r--r-- | src/test/allocator_tests.cpp | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/test/allocator_tests.cpp b/src/test/allocator_tests.cpp index a853aececb..77e9df5d82 100644 --- a/src/test/allocator_tests.cpp +++ b/src/test/allocator_tests.cpp @@ -39,7 +39,6 @@ BOOST_AUTO_TEST_CASE(arena_tests) } void *a0 = b.alloc(128); - BOOST_CHECK(a0 == synth_base); // first allocation must start at beginning void *a1 = b.alloc(256); void *a2 = b.alloc(512); BOOST_CHECK(b.stats().used == 896); @@ -63,8 +62,10 @@ BOOST_AUTO_TEST_CASE(arena_tests) BOOST_CHECK(b.stats().used == 128); b.free(a3); BOOST_CHECK(b.stats().used == 0); + BOOST_CHECK_EQUAL(b.stats().chunks_used, 0); BOOST_CHECK(b.stats().total == synth_size); BOOST_CHECK(b.stats().free == synth_size); + BOOST_CHECK_EQUAL(b.stats().chunks_free, 1); std::vector<void*> addr; BOOST_CHECK(b.alloc(0) == nullptr); // allocating 0 always returns nullptr @@ -74,7 +75,6 @@ BOOST_AUTO_TEST_CASE(arena_tests) // Sweeping allocate all memory for (int x=0; x<1024; ++x) addr.push_back(b.alloc(1024)); - BOOST_CHECK(addr[0] == synth_base); // first allocation must start at beginning BOOST_CHECK(b.stats().free == 0); BOOST_CHECK(b.alloc(1024) == nullptr); // memory is full, this must return nullptr BOOST_CHECK(b.alloc(0) == nullptr); |