Skip to content

Библиотека `counter_atm` предоставляет программный интерфейс (API) для высокопроизводительного подсчета событий и измерения их скорости (интенсивности) в многопоточных приложениях.

Notifications You must be signed in to change notification settings

khromenokroman/counter

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Counter

Counter Logo

Описание

Библиотека counter_atm предоставляет программный интерфейс (API) для высокопроизводительного подсчета событий и измерения их скорости (интенсивности) в многопоточных приложениях. Библиотека разработана с использованием современных возможностей C++20 и специально оптимизирована для безопасной работы в параллельных средах, где счетчики могут инкрементироваться из разных потоков одновременно.

Возможности

  • Потокобезопасный подсчет событий:

    • Атомарный счетчик с гарантированной целостностью данных при параллельном доступе
    • Безопасное использование в многопоточных приложениях без необходимости внешней синхронизации
    • Минимальные накладные расходы при интенсивном использовании благодаря оптимизированным атомарным операциям
  • Измерение скорости поступления событий:

    • Автоматическое вычисление скорости (событий в секунду) на основе интервала между измерениями
    • Точное измерение временных интервалов с использованием высокоточных часов std::chrono::steady_clock
    • Мгновенная оценка интенсивности событий в реальном времени
  • Гибкие возможности инкрементирования:

    • Пошаговое увеличение счетчика (по одному событию)
    • Пакетное обновление для добавления нескольких событий одной операцией
    • Возможность сброса счетчика для начала нового цикла измерений
  • Программный интерфейс:

    • Простой и интуитивно понятный API на основе абстрактного интерфейса ICounter
    • Фабричный метод для создания экземпляров счетчика с корректной обработкой ошибок
    • Получение статистики в виде структуры CounterWithRate с общим количеством событий и их скоростью
    • Реализация с использованием современных возможностей C++20 (атомарные операции, noexcept, unique_ptr)
    • Обработка ошибок с информативными сообщениями через исключения
  • Практическое применение:

    • Измерение производительности и нагрузки в высоконагруженных системах
    • Мониторинг интенсивности событий в режиме реального времени
    • Анализ пропускной способности обработки данных
    • Учет статистики в многопоточных серверных приложениях

Зависимости

  • C++20

Опции сборки

Проект предоставляет следующие опции сборки через CMake:

  • BUILD_SHARED_LIBS - выбор типа библиотеки для сборки:

    • ON (по умолчанию) — сборка динамической библиотеки (.so)
    • OFF - сборка статической библиотеки (.a)
  • BUILD_EXAMPLE - включение/отключение сборки примера:

    • ON - собирать пример использования библиотеки
    • OFF (по умолчанию) — не собирать пример
  • BUILD_TESTING - включение/отключение сборки тестов

    • ON - собирать тесты
    • OFF (по умолчанию) — не собирать тесты

Сборка

Проект использует CMake для сборки:

mkdir build
cd build
cmake ..
make

Сборка только тестов

mkdir build
cd build
cmake -DBUILD_TESTING=ON ..
make

Сборка только статической библиотеки

mkdir build
cd build
cmake -DBUILD_SHARED_LIBS=OFF ..
make

Сборка только статической библиотеки без примера

mkdir build
cd build
cmake -DBUILD_SHARED_LIBS=OFF -DBUILD_EXAMPLE=OFF ..
make

Для создания пакета DEB:

cd build
make package

Установка

После сборки можно установить библиотеку:

sudo make install

Или установить созданный DEB-пакет:

sudo dpkg -i libcounter0*.deb

При сборке динамической библиотеки создаются два пакета:

  • libcounter0 - содержит саму динамическую библиотеку
  • libcounter0-dev - содержит заголовочные файлы и символьные ссылки для разработки

При сборке статической библиотеки создается только один пакет:

  • libcounter0-dev - содержит статическую библиотеку и заголовочные файлы

Пример вывода программы

=== ТЕСТИРОВАНИЕ БИБЛИОТЕКИ COUNTER ===

[13:09:32] Демонстрация счетчика в одном потоке
[13:09:32] Событие добавлено
[13:09:32] Событие добавлено
[13:09:33] Событие добавлено
[13:09:33] Событие добавлено
[13:09:34] Событие добавлено
[13:09:34] Всего событий: 5, Скорость: 2.00 событий/сек

[13:09:34] Демонстрация счетчика при высокой нагрузке
[13:09:34] Всего событий: 10000, Скорость: 35822007.61 событий/сек

[13:09:34] Демонстрация пакетного обновления счетчика
[13:09:34] Добавлено 100 событий
[13:09:35] Добавлено еще 200 событий
[13:09:35] Добавлено еще 300 событий
[13:09:36] Всего событий: 600, Скорость: 399.73 событий/сек


=== ТЕСТИРОВАНИЕ ЗАВЕРШЕНО ===

About

Библиотека `counter_atm` предоставляет программный интерфейс (API) для высокопроизводительного подсчета событий и измерения их скорости (интенсивности) в многопоточных приложениях.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published