Home > StatModule

StatModule

StatModule is a project mainly written in C++ and C, it's free.

Тестовое задание:

Надо разработать модуль для сбора статистики о выполнении различных процедур в приложении. API должен быть приблизительно таким ∙ void SetInterval(int interval); //Установить интервал за который возвращаются статистика. Интервал общий для всех блоков и всех процессов. Этот метод вызывается один раз при старте приложения. Этот метод вызывается первым ∙ STAT_HANDLE AddStat(const char* szName); //создает блок статистики. Например, блок создается для каждого запроса к базе данных ∙ void AddCallInfo(STAT_HANDLE h, int64_t callDuration); //добавить информацию о вызове метода в статистику ∙ int64_t GetCallCount(STAT_HANDLE h); //вернуть количество вызовов в секунду ∙ int64_t GetAvgDuration(STAT_HANDLE h); //вернуть среднее время вызовов ∙ int64_t GetMaxDuration(STAT_HANDLE h); //вернуть максимальное время вызова ∙ int64_t GetMinDuration(STAT_HANDLE h); //вернуть минимальное время вызова

Предполагается, что блоков может быть до тысячи. Интервал может быть от 1 секунды до суток. Вызовов AddCallInfo может быть до 10 тысяч в секунду. Приложение может быть много поточным и многопроцессным. Среда - линукс.

Счетчик блок глобален в системе. Т.е. если несколько процессов вызывает AddStat c одинаковым именем, то статистика будет общей. Также одно приложение может вызвать AddCallInfo, а другое запрашивать статистику. Статистика должна быть скользящей. Т.е. всегда при вызове должна возвращается статистика за приблизительно interval (+-10%) прошедших секунд. Уровни сложности: 1) Однопоточное приложение 2) Многопоточное приложение 3) Несколько многопоточных приложений, при этом блоки статистки у них общие.

Previous:Hello-World