diff --git a/src/libs/utils/smallstring.h b/src/libs/utils/smallstring.h index 663ef566384..3a86d2435ce 100644 --- a/src/libs/utils/smallstring.h +++ b/src/libs/utils/smallstring.h @@ -658,18 +658,9 @@ unittest_public: { const size_type cacheLineSize = 64; - const auto divisionByCacheLineSize = std::div(int64_t(size), int64_t(cacheLineSize)); + size_type cacheLineBlocks = (size - 1) / cacheLineSize; - size_type cacheLineBlocks = size_type(divisionByCacheLineSize.quot); - const size_type supplement = divisionByCacheLineSize.rem ? 1 : 0; - - cacheLineBlocks += supplement; - int exponent; - const double significand = std::frexp(cacheLineBlocks, &exponent); - const double factorOneDotFiveSignificant = std::ceil(significand * 4.) / 4.; - cacheLineBlocks = size_type(std::ldexp(factorOneDotFiveSignificant, exponent)); - - return cacheLineBlocks * cacheLineSize; + return (cacheLineBlocks + 1) * cacheLineSize; } size_type countOccurrence(SmallStringView text) diff --git a/tests/unit/unittest/smallstring-test.cpp b/tests/unit/unittest/smallstring-test.cpp index fb50c1d5949..ea18fcacc2d 100644 --- a/tests/unit/unittest/smallstring-test.cpp +++ b/tests/unit/unittest/smallstring-test.cpp @@ -1067,13 +1067,13 @@ TEST(SmallString, OptimalHeapCacheLineForSize) ASSERT_THAT(SmallString::optimalHeapCapacity(191), 192); ASSERT_THAT(SmallString::optimalHeapCapacity(193), 256); ASSERT_THAT(SmallString::optimalHeapCapacity(255), 256); - ASSERT_THAT(SmallString::optimalHeapCapacity(257), 384); - ASSERT_THAT(SmallString::optimalHeapCapacity(257), 384); + ASSERT_THAT(SmallString::optimalHeapCapacity(256), 256); + ASSERT_THAT(SmallString::optimalHeapCapacity(257), 320); ASSERT_THAT(SmallString::optimalHeapCapacity(383), 384); - ASSERT_THAT(SmallString::optimalHeapCapacity(385), 512); + ASSERT_THAT(SmallString::optimalHeapCapacity(385), 448); ASSERT_THAT(SmallString::optimalHeapCapacity(4095), 4096); ASSERT_THAT(SmallString::optimalHeapCapacity(4096), 4096); - ASSERT_THAT(SmallString::optimalHeapCapacity(4097), 6144); + ASSERT_THAT(SmallString::optimalHeapCapacity(4097), 4160); } TEST(SmallString, OptimalCapacityForSize)