Если вы получаете 900K звонков за 0,1 секунды, а затем счетчик сбрасывается по таймеру, а затем вы получаете еще 900K звонков за 0,1 секунды, то вы получите 1,8M звонков в секунду, но вы не сможете распечатать ошибка.
Я бы сделал что-то вроде этого:
- Каждые 100К вызовов, чтение часов и сохранение времени в кольцевом буфере
- Хранить в буфере 10 раз, поэтому после как минимум 1M вызовов, а затем при добавлении нового времени он заменяет один из 1M вызовов ранее. Если разница между этими значениями составляет менее 1 секунды, вы должны вывести ошибку.
В худшем случае вы все равно можете получить до 1.1M вызовов в секунду, не вызывая ошибки, но это, вероятно, достаточно близко. Вы можете использовать больше слотов буфера и меньшие партии, если вам нужна большая точность.