函数调用在2015年运行的最长时间是多少?

时间:2015-10-08 07:44:26

标签: performance load-balancing performance-testing database-performance

我有一个需要在每个按键上运行的功能,我想知道它是否做了太多的工作。为了找到它我会时间。如果它小于一毫秒,我将不得不迭代1k - 100万次然后除以该数量。

虽然这看起来似乎很广泛但我还是会问,2015年一项功能应该运行的最长时间是多少?还有标准吗?

在视频游戏中,如果你想要达到每秒30帧,那么你有33毫秒可以玩,因为1秒等于1000毫秒,1000毫秒/ 30帧每秒等于33毫秒。如果你的目标是每秒60帧,你只需要15毫秒。那么在什么时候你会对你的软件开发人员说他们的功能需要太长时间?之后,1毫秒? 100毫秒?

例如,如果您要使用JQuery在1000个元素的页面上查找元素该函数需要多长时间? 100毫秒太长了吗? 1 ms太长了吗?人们使用什么标准?我听说数据库管理员有一个标准的查询搜索时间。

更新
我真的不知道如何按照我的意思来说出这个问题。我问的原因是因为我不知道我是否需要优化功能或继续前进。如果我做时间函数,我不知道它是快还是慢。所以,如果它不到一毫秒,我将忽略它,如果它超过一毫秒,我将继续工作。

更新2:
我发现了一篇描述场景的帖子。查看this问题中的数字。查询数据库需要3ms。如果我是一名数据库管理员,我想知道这是否花费太长时间才能扩展到一百万用户。我想知道在添加另一台服务器以帮助负载平衡之前连接数据库或执行查询需要多长时间。

1 个答案:

答案 0 :(得分:2)

好。我想你问的是错误的问题。或者以一种不太可能产生有效结果的方式思考问题。

绝对没有规则说“你的函数应该在不超过X毫秒后返回”。有许多强大的Web应用程序利用可能无法返回250毫秒的函数。这可能没问题,具体取决于具体情况。

并且,请记住,在您的开发机器上运行(例如3毫秒)的函数可能会在其他人的计算机上运行得更快或更慢。

但是这里有一些提示让你更清楚地思考:

1)这完全取决于用户。 真的(我有点犹豫这么说,因为有人会把我太字面化,要么写错代码,要么和我发起火焰战争),但只要你的代码性能不影响用户体验,只要您想开展业务,您的职能就可以。我不是说你的代码优化应该是懒惰的;我只是说,只要用户没有察觉到任何延迟,你就不会真的需要强调它。

2)问自己两个问题: a)功能多久运行一次?和b)它会快速连续运行多少次,中间没有中断(即它是否会循环运行)?

在每次用户键入一个键时调用一个函数的示例中,您可以根据用户使用频率“做多长时间多长时间来完成一个函数”做出决定。打一把钥匙。同样,如果它没有对用户有效使用您的应用程序的能力大惊小怪,那么您将浪费时间讨价还价超过3毫秒。

另一方面,如果你的函数将在一个运行100,000次的循环中被调用,那么你肯定希望花一些时间让它尽可能精益。

3)在适当的时候使用承诺。 Javascript promises 是一个不错的功能(虽然它们并不是javascript独有的)。承诺是这样说的,“听着,我不知道这个功能要花多长时间。想开始研究它,我会在你完成时告诉你。”然后,您的其余代码可以继续执行,只要履行承诺,您就会收到通知,并且可以在此时执行某些操作。

最常见的承诺示例是AJAX设计模式。你永远不知道对后端的调用可能需要多长时间,所以你只需说“好吧,让我知道后端何时会回复一些有用的信息”。

Read more about promises here

4)有趣和利润的基准测试 如上所述,有时你确实需要削减每一个悲惨的毫秒。在那些情况下,我发现jsperf.com非常有用。他们可以很容易地快速测试两段代码,看看哪一段运行得更快。还有很多其他的基准测试工具,但我很喜欢那个。 (我意识到这与原帖有点相似,但在某些时候,其他人会花很长时间阅读这篇文章,所以我认为这是相关的)

毕竟说完了,请记住将此问题与 用户 保持联系。为用户优化,而不是为你的自我或任意数字。