首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >调试JS代码

调试JS代码

作者头像
零式的天空
发布2022-03-21 20:33:29
发布2022-03-21 20:33:29
22.2K0
举报
文章被收录于专栏:零域Blog零域Blog

记录下近期对JS代码的调试过程

性能分析

启动程序之后,打开google浏览器对应页面,按F12或者Ctrl+Shift+I进入 开发者工具页面

目前主要使用的功能有:

Performance. 性能评估,比如我想看下页面刷新的性能瓶颈所在,先点击 按钮,然后进行页面操作,当页面刷新完成,再点击 按钮,则会生成性能报告,可以看到资源消耗,JS代码的执行逻辑等

Sources. 性能报告页面的 部分,可以通过点击色块查看其所在的js代码文件,如 点击则会跳转到 功能栏,有了源文件就可以进行断点调试;这里注意部分js文件是压缩后的文件,建议手动修改程序替换成可读性更强的原始代码文件,方便调试

Console. 查看程序的打印输出,比如我想知道某个函数的执行时间,可以在js代码中进行修改

当js代码执行之后,可以在console输出中看到foo的执行时间

Network. 查看文件传输的时间,判断下瓶颈是否在网络带宽,以及是否数据量太大导致数据的转换和传输耗时较久

性能调优

通过性能分析,发现耗时最长的模块的操作是对数据的颜色计算,场景是我有1M个点需要显示,那么需要将它们从一个[2,1,4,10…]的 颜色数组 转换成RGB表示,js代码使用for循环进行操作,也就是线性复杂度,计算耗时随数据量的增大而线性增大

通过debug观察发现颜色数组会有不少重复的数值,而同样的输入会导致相同的输出,然后对整个数据的1M个点进行统计分析,发现重复率相当高,也就是for循环中有大量的重复计算

很自然想到增加缓存,用空间换时间来加速,当遇到计算过的数据时,直接返回计算结果,从而大大提高了程序执行的效率

代码语言:javascript
复制
var cache = {};
for(var i = 0; i < len; i++) {
    if (cache[colorIn[i]])
    {
        colorOut[i] = cache[colorIn[i]];
        continue;
    }
    colori = getColor(colorIn, i);
    opacityi = getOpacity(opacityIn, i);
    colorOut[i] = calculateColor(colori, opacityi);
    cache[colorIn[i]] = colorOut[i];
} 
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-07-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 性能分析
  • 性能调优
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档