Если функция вызывается более миллиона раз в секунду, выведите ошибку - PullRequest
1 голос
/ 28 мая 2019

В классе есть функция, если она вызывается более миллиона раз в секунду, нам нужно вывести ошибку. Это в основном вопрос дизайна того, какой подход мы должны использовать.

Я думаю об использовании счетчика времени и переменной счета. Счетчик времени сбрасывает переменную count всякий раз, когда ее значение превышает миллион или после каждой секунды.

1 Ответ

3 голосов
/ 28 мая 2019

Если вы получаете 900K звонков за 0,1 секунды, а затем счетчик сбрасывается по таймеру, а затем вы получаете еще 900K звонков за 0,1 секунды, то вы получите 1,8M звонков в секунду, но вы не сможете распечатать ошибка.

Я бы сделал что-то вроде этого:

  • Каждые 100К вызовов, чтение часов и сохранение времени в кольцевом буфере
  • Хранить в буфере 10 раз, поэтому после как минимум 1M вызовов, а затем при добавлении нового времени он заменяет один из 1M вызовов ранее. Если разница между этими значениями составляет менее 1 секунды, вы должны вывести ошибку.

В худшем случае вы все равно можете получить до 1.1M вызовов в секунду, не вызывая ошибки, но это, вероятно, достаточно близко. Вы можете использовать больше слотов буфера и меньшие партии, если вам нужна большая точность.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...