持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第 30 天,点击查看活动详情
学习 Performance
start
- 最近学习了谷歌浏览器
Performance
选项卡的基础使用; - 写个文章记录一下。
Performance
1. Performance 初始面板介绍
示例截图:
注意事项:
Performance
英文释义: 性能;- 初始面板如上述截图所示;
- 为了防止插件,网页缓存,其他因素,对我们调试结果的干扰,后续调试建议使用无痕浏览器。
浏览器打开无痕模式快捷键
ctrl shift N
(windows 系统);
2. 案例实践
写个案例,来熟悉熟悉 Performance
,怎么用。
2.1 基本操作
-
整个
Performance
有点类似于屏幕录制,点击左上角的开始录制
按钮,浏览器就会开始记录页面的各种信息; -
记录完你想记录的操作后,可以手动
stop
,来停止录制; -
点击
重新载入
的按钮,可以理解为刷新页面后开启录制(用于记录首屏加载);record
:记录;reload
:重新载入;
-
录制完毕后我们就可以得到相关的信息图标。
2.2 案例
写一个测试的代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>lazy_tomato</title>
</head>
<body>
<script>
function fn(n) {
if (n === 0 || n === 1) {
return n
}
return fn(n - 1) + fn(n - 2)
}
function tomato() {
fn(30)
}
tomato()
</script>
</body>
</html>
代码说明:
- 既然是判断性能,一行普通的
JS
代码,执行的太快了,不方便演示。- 我想到前段时间学习的
斐波那契数列
,所以采用了它作为演示案例。- 为了方便寻找到我们的函数,函数名我用了
tomato
定义。
开始操作:
-
用无痕浏览器打开我们的页面。
-
点击重新录制,从页面开始加载就开始记录我们页面的性能。
-
等待程序执行完毕,可以得到下方截图的内容。
截图内容讲解:
上方的截图记录了页面从开始渲染到停止录制的过程中,页面所做操作的信息。
可以看到它有很多区域,我们先看中间的区域。中间的区域又分好几个菜单,分别存储了对应的信息,例如网络,主线程,GPU 等各种信息。
JS 是单线程的,主干逻辑就在 Main(主线程) 中,先看 Main(主线程)中包含了哪些信息。
- Main(主线程)中有很多代码执行的逻辑,其中按颜色来区分:
- 灰色:task(任务)
- 橙色:浏览器内部的 JS
- 蓝色:html parse
上面列举出来的颜色,对应的是浏览器自身程序。其他的某些颜色,就是我们自己编写的 JS 代码。
- 上半部分区域操作方式:
- 可以左键按住上下拖动;
- 可以右键,已 JSON 的形式保存或者导入记录的信息;
- 可以通过滚轮放大缩小指定区域;
- 查看我们自己编写的代码
- 鼠标放到对应颜色区域,滑动滚轮放大,可以得到下图:
- 结合截图,可以看到我们编写的函数执行顺序,先
tomato
后fn
。而且可以看到从上向下,有很多 fn,它代表着 上方的fn
中调用了下方的fn
。对应我们函数的递归
案例优化一下
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>lazy_tomato</title>
</head>
<body>
<script>
var temp = [0, 1]
function fn(n) {
let result = temp[n]
if (typeof result != 'number') {
result = fn(n - 1) + fn(n - 2)
temp[n] = result
}
return result
}
function tomato() {
console.log(fn(30))
}
tomato()
</script>
</body>
</html>
在原本的代码基础上,添加了缓存的处理,再次查看性能记录。
结合上图可以看到,启用缓存的方式优化之后,调用 fn
的次数大幅度降低了。
end
-
本文主要是初步认识了
Performance
。用我自己的理解来描述它:可以录制网页执行过程中的各种信息,利用这些信息,做性能优化。
-
初步认识了
Performance
中 Main 菜单中的内容。- 灰色:task(任务)
- 橙色:浏览器内部的 JS
- 蓝色:html parse
-
谷歌官方的 Performance 文档 点击这里