diff --git a/dbms/include/DB/Common/Throttler.h b/dbms/include/DB/Common/Throttler.h index fb972faba69..42c37c9b9b4 100644 --- a/dbms/include/DB/Common/Throttler.h +++ b/dbms/include/DB/Common/Throttler.h @@ -7,7 +7,7 @@ /** Позволяет ограничить скорость чего либо (в штуках в секунду) с помощью sleep. * Особенности работы: - * - считается только средняя скорость, от момента создания объекта; + * - считается только средняя скорость, от момента первого вызова функции add; * если были периоды с низкой скоростью, то в течение промежутка времени после них, скорость будет выше; */ class Throttler @@ -23,10 +23,16 @@ public: { std::lock_guard lock(mutex); + if (0 == count) + { + watch.start(); + elapsed_ns = 0; + } + else + elapsed_ns = watch.elapsed(); + count += amount; new_count = count; - - elapsed_ns = watch.elapsed(); } /// Сколько должно было бы пройти времени, если бы скорость была равна max_speed.