alexv-smirnov bf0f13dd39 add ymake export to ydb | 1 year ago | |
---|---|---|
.. | ||
ut | bf0f13dd39 add ymake export to ydb | 1 year ago |
CMakeLists.darwin-x86_64.txt | 33ed6077e6 Intermediate changes | 1 year ago |
CMakeLists.linux-aarch64.txt | 9f448c9c67 Intermediate changes | 1 year ago |
CMakeLists.linux-x86_64.txt | 33ed6077e6 Intermediate changes | 1 year ago |
CMakeLists.txt | 887be65957 External build system generator release 29 | 1 year ago |
CMakeLists.windows-x86_64.txt | 6324d075a5 Intermediate changes | 1 year ago |
README.md | 1eb755fbca Restoring authorship annotation for Vasily Gerasimov <UgnineSirdis@gmail.com>. Commit 2 of 2. | 2 years ago |
sliding_window.cpp | 8af5b431af Restoring authorship annotation for <ygpr@yandex-team.ru>. Commit 2 of 2. | 2 years ago |
sliding_window.h | 8af5b431af Restoring authorship annotation for <ygpr@yandex-team.ru>. Commit 2 of 2. | 2 years ago |
sliding_window_ut.cpp | 8af5b431af Restoring authorship annotation for <ygpr@yandex-team.ru>. Commit 2 of 2. | 2 years ago |
ya.make | bf0f13dd39 add ymake export to ydb | 1 year ago |
TSlidingWindow - класс скользящего окна, позволяющий поддерживать и обновлять определённое значение (максимум, сумму) в промежутке времени определённой длины. Разбивает общий временной промежуток на маленькие бакеты (число задаётся в конструкторе) и ротирует их, поддерживая значение за окно. Есть возможность также указать мьютекс или спинлок для синхронизации (по умолчанию 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
- сумма