Wide dataset quantile performance improvement (#5306)

This commit is contained in:
Rory Mitchell
2020-02-16 10:24:42 +13:00
committed by GitHub
parent ed2465cce4
commit 7e32af5c21
4 changed files with 23 additions and 8 deletions

View File

@@ -702,6 +702,7 @@ class QuantileSketchTemplate {
nlevel = 1;
while (true) {
limit_size = static_cast<size_t>(ceil(nlevel / eps)) + 1;
limit_size = std::min(maxn, limit_size);
size_t n = (1ULL << nlevel);
if (n * limit_size >= maxn) break;
++nlevel;
@@ -709,7 +710,8 @@ class QuantileSketchTemplate {
// check invariant
size_t n = (1ULL << nlevel);
CHECK(n * limit_size >= maxn) << "invalid init parameter";
CHECK(nlevel <= limit_size * eps) << "invalid init parameter";
CHECK(nlevel <= std::max(1, static_cast<int>(limit_size * eps)))
<< "invalid init parameter";
}
/*!