diff options
author | Vasily Gerasimov <UgnineSirdis@gmail.com> | 2022-02-10 16:49:10 +0300 |
---|---|---|
committer | Daniil Cherednik <dcherednik@yandex-team.ru> | 2022-02-10 16:49:10 +0300 |
commit | 1eb755fbca92172a6aec2f57371b2b3a19dfab43 (patch) | |
tree | 5d5cb817648f650d76cf1076100726fd9b8448e8 /library/cpp/sliding_window/README.md | |
parent | 6cdc8f140213c595e4ad38bc3d97fcef1146b8c3 (diff) | |
download | ydb-1eb755fbca92172a6aec2f57371b2b3a19dfab43.tar.gz |
Restoring authorship annotation for Vasily Gerasimov <UgnineSirdis@gmail.com>. Commit 2 of 2.
Diffstat (limited to 'library/cpp/sliding_window/README.md')
-rw-r--r-- | library/cpp/sliding_window/README.md | 58 |
1 files changed, 29 insertions, 29 deletions
diff --git a/library/cpp/sliding_window/README.md b/library/cpp/sliding_window/README.md index b9c952ba8e..47692da7d5 100644 --- a/library/cpp/sliding_window/README.md +++ b/library/cpp/sliding_window/README.md @@ -1,30 +1,30 @@ -# TSlidingWindow - скользящее окно - +# TSlidingWindow - скользящее окно + [TSlidingWindow](/arc/trunk/arcadia/library/cpp/sliding_window/sliding_window.h) - класс скользящего окна, позволяющий поддерживать и обновлять определённое значение (максимум, сумму) в промежутке времени определённой длины. Разбивает общий временной промежуток на маленькие бакеты (число задаётся в конструкторе) и ротирует их, поддерживая значение за окно. Есть возможность также указать мьютекс или спинлок для синхронизации (по умолчанию TFakeMutex). Использование: - -``` -// Создаём окно, вычисляющее максимум за последние пять минут, поддерживая 50 бакетов со значениями. -TSlidingWindow<TMaxOperation<int>> window(TDuration::Minutes(5), 50); - -// Загружаем значения в различные моменты времени -window.Update(42, TInstant::Now()); - -... // делаем какую-то работу -int currentMaximum = window.Update(50, TInstant::Now()); - -... // делаем ещё что-то -int currentMaximum = window.Update(25, TInstant::Now()); - -... -// Просто получаем значение максимума за последние 5 минут -int currentMaximum = window.Update(TInstant::Now()); - -... -int currentMaximum = window.GetValue(); // получение значения без обновления времени -``` - -# Поддерживаемые функции - -* `TMaxOperation` - максимум -* `TMinOperation` - минимум -* `TSumOperation` - сумма + +``` +// Создаём окно, вычисляющее максимум за последние пять минут, поддерживая 50 бакетов со значениями. +TSlidingWindow<TMaxOperation<int>> window(TDuration::Minutes(5), 50); + +// Загружаем значения в различные моменты времени +window.Update(42, TInstant::Now()); + +... // делаем какую-то работу +int currentMaximum = window.Update(50, TInstant::Now()); + +... // делаем ещё что-то +int currentMaximum = window.Update(25, TInstant::Now()); + +... +// Просто получаем значение максимума за последние 5 минут +int currentMaximum = window.Update(TInstant::Now()); + +... +int currentMaximum = window.GetValue(); // получение значения без обновления времени +``` + +# Поддерживаемые функции + +* `TMaxOperation` - максимум +* `TMinOperation` - минимум +* `TSumOperation` - сумма |