From 8097c696de7d1d99904a50a36ea4a587a4b04ccf Mon Sep 17 00:00:00 2001 From: alesapin Date: Tue, 20 Oct 2020 23:05:20 +0300 Subject: [PATCH] Trying another fix --- src/Storages/MergeTree/SimpleMergeSelector.cpp | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/Storages/MergeTree/SimpleMergeSelector.cpp b/src/Storages/MergeTree/SimpleMergeSelector.cpp index 65d9aaecdab..ad8328cb7eb 100644 --- a/src/Storages/MergeTree/SimpleMergeSelector.cpp +++ b/src/Storages/MergeTree/SimpleMergeSelector.cpp @@ -90,9 +90,6 @@ double mapPiecewiseLinearToUnit(double value, double min, double max) /** Is allowed to merge parts in range with specific properties. */ -#if defined(__clang__) - ALWAYS_INLINE -#endif bool allow( double sum_size, double max_size, @@ -104,7 +101,9 @@ bool allow( // std::cerr << "sum_size: " << sum_size << "\n"; /// Map size to 0..1 using logarithmic scale - double size_normalized = mapPiecewiseLinearToUnit(log1p(sum_size), log1p(settings.min_size_to_lower_base), log1p(settings.max_size_to_lower_base)); + /// Use log(1 + x) instead of log1p(x) because our x variables (sum_size and settings) are always integer. + /// Also log1p seems to be slow and significantly affect performance of merges assignment. + double size_normalized = mapPiecewiseLinearToUnit(log(1 + sum_size), log(1 + settings.min_size_to_lower_base), log(1 + settings.max_size_to_lower_base)); // std::cerr << "size_normalized: " << size_normalized << "\n";