为了账号安全,请及时绑定邮箱和手机立即绑定

如何测试JavaScript代码?

如何测试JavaScript代码?

千巷猫影 2019-06-25 13:06:27
如何测试JavaScript代码?CPU周期,内存使用,执行时间等?补充:除了对代码运行速度的感知之外,有没有一种在JavaScript中测试性能的量化方法?
查看完整描述

3 回答

?
繁华开满天机

TA贡献1816条经验 获得超4个赞

分析器绝对是获取数字的好方法,但在我的经验中,感知性能对用户/客户端来说才是最重要的。例如,我们有一个带有Ext手风琴的项目,它扩展为显示一些数据,然后是一些嵌套的Ext网格。所有的东西都呈现得非常快,没有一个操作花了很长时间,只有大量的信息同时呈现,所以用户感觉很慢。

我们“修正”了这个问题,不是通过切换到更快的组件,也不是通过优化某些方法,而是先呈现数据,然后用setTimeout呈现网格。因此,信息首先出现,然后网格会弹出第二秒钟。总的来说,这样做花费了更多的处理时间,但是对于用户来说,感知到的性能得到了改善。


这些天来,Chrome分析器和其他工具是普遍可用和易于使用的,如下所示console.time()console.profile(),和performance.now()..Chrome还提供了一个时间线视图,它可以显示什么正在扼杀您的帧速率,用户可能正在等待的位置等等。

为所有这些工具找到文档是非常容易的,您不需要这样的答案。7年后,我仍将重复我最初答案中的建议,并指出,在用户不会注意到的情况下,您可以永远运行缓慢的代码,而在它们运行的地方运行的代码相当快,他们会抱怨代码不够快。或者您对服务器API的请求花费了220 ms。或者其他类似的东西。关键是,如果你拿出一个分析器去找工作去做,你会找到它,但它可能不是你的用户需要的工作。


查看完整回答
反对 回复 2019-06-25
?
蛊毒传说

TA贡献1895条经验 获得超3个赞

我确实同意,感觉到的表现才是最重要的。但有时我只是想找出哪种方法做某事更快。有时这种差别是巨大的,值得知道。

您可以只使用javascript计时器。但是我通常使用本机Chrome(现在也在Firefox和Safari中)devTool方法获得更一致的结果。console.time() & console.timeEnd()

我如何使用它的例子:

var iterations = 1000000;console.time('Function #1');for(var i = 0; i < iterations; i++ ){
    functionOne();};console.timeEnd('Function #1')console.time('Function #2');for(var i = 0; i < iterations; i++ ){
    functionTwo();};console.timeEnd('Function #2')


查看完整回答
反对 回复 2019-06-25
?
万千封印

TA贡献1891条经验 获得超3个赞

我们可以永远用简单日期对象度量任意函数所占用的时间.

var start = +new Date();  // log start timestampfunction1();var end =  +new Date();  // log end timestampvar diff = end - start;


查看完整回答
反对 回复 2019-06-25
  • 3 回答
  • 0 关注
  • 670 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信