algorithm - 如果一个函数在一秒钟内被调用超过一百万次,打印一个错误
问题描述
如果一个类中有一个函数在一秒钟内被调用超过一百万次,我们需要打印一个错误。这基本上是我们应该使用哪种方法的设计问题。
我正在考虑使用时间计数器和计数变量。只要计数变量的值超过一百万或每秒之后,时间计数器就会重置计数变量。
解决方案
如果你在 0.1 秒内接到 900K 呼叫,然后计数器被计时器重置,然后在 0.1 秒内又接到 900K 呼叫,那么你将在一秒钟内接到 180 万次呼叫,但你将无法打印错误。
我会做这样的事情:
- 每 100K 调用,读取时钟并将时间存储在循环缓冲区中
- 在缓冲区中保留 10 次,因此在至少 1M 次调用之后,无论何时添加新时间,它都会替换之前 1M 次调用中的一个。如果这些时间之间的差异小于 1 秒,那么您应该打印一个错误。
在最坏的情况下,您仍然可以在一秒钟内收到多达 110 万次调用而不会引发错误,但它可能已经足够接近了。如果您需要更高的精度,您可以使用更多的缓冲槽和更小的批次。
推荐阅读
- keras - 如何为每一层堆叠相同的RNN?
- javascript - 将类转换为函数 React Error 无效的钩子调用
- python - 给定除数列表的数字的有效逆向分解
- php - Laravel Eloquent 带分页的查询递归关系模型
- sql - Toad for Oracle 上的任务自动化
- blazor - IISExpress 中的两个 Blazor 集线器出现错误
- jquery - 如何在模态弹出按钮单击上运行 Jquery 功能
- android - 排毒测试不会在没有重新加载包的情况下在 react 本机 android 设备上运行
- google-apps-script - 我的代码不再起作用,但我没有更改它
- jquery - 通过 AJAX 调用在 div 中呈现 HTML