React之Perf
import Perf from 'react-addons-perf' // ES6语法
var Perf = require('react-addons-perf') // ES5语法针对nodejs
var Perf = React.addons.Perf; // ES5语法,针对浏览器,增加react-with-addons.js在script标签中
1.概要
React本身就非常快速了,然而,如果你想进一步提升你的应用的性能的话,可以通过shouldComponentUpdate()来优化你的DOM diff算法,这是我们之前就已经接触或者是非常了解的优化方式。
除此之外,你还可以概述你的应用程序的总体性能,而Perf就是这样一个工具,它会告诉你哪里需要设置shouldComponentUpdate去减少优化你视图的更新变更次数等等。
如果你已经确定你的React应用存在性能上面的问题,可以使用这个工具来进行检测,它会给出一些帮助性的警告,让你能够了解到一些东西。
然而,Perf工具只能用来处理React应用,同时它只会显示性能最差的部分。
2.使用Perf
Perf对象是用于React的开发阶段的,你不应该将这个包放在最终的应用程序包中。
获得测试结果的方法
start()
stop()
getLastMeasurements()
下面的方式是通过 Perf.getLastMeasurements()处理后进行打印的。
printInclusive()
printExclusive()
printWasted()
printOperations()
printDOM()
3.函数详解
start(),stop()
调用方式
Perf.start()
// ...
Perf.stop()
start/stop这两个方法,放在你要测试性能的代码的两端,如果操作消耗一些时间,但是这些时间是微不足道的,会被直接忽略(所以在小型的项目中,这个工具可能并不会有结果)。
在stop函数调用,停止测试后,你需要用Perf.getLastMeasurements()去得到测试的结果。
Perf.getLastMeasurements()
这个函数会得到一个关于之前测试数据结果的结构体,你可以保存它或者通过打印函数将结果打印出来,从而去分析测试的结果。
注意
请不要依赖于返回的数据格式,也就是说尽可能用打印函数打印返回的结构体,因为这个格式可能在以后的版本中发生较大的变更,如果返回的格式已经被加入到公共的API中,那么官方文档会进行更新。
Perf.printInclusive(measurements)
这个函数会打印测试的总时间以及一些相关信息,如果没有什么参数的话,函数会打印出所有的测试记录,它同时会在控制台直接以table的格式良好的进行显示(在console中用console.table()函数可以进行table格式的显示)
Perf.printExclusive(measurements)
Exclusive单词的意思是独立,跟printInclusive有点类似,但是不会包括装载组件的时间:处理props,componentWillMount和componentDidMount这些东西的时间都不会算进去。
printWasted()
Perf.printWasted(measurements)
这是Perf性能分析工具最有用的部分,”Wasted“浪费的时间:时间浪费在组件上但是又没有用于去更新组件
Perf.printOperations(measurements)
打印底层的一些操作
Perf.printDOM(measurements)
它是printOperations的别名,最终会被弃用。
React之Perf的更多相关文章
- react+redux渲染性能优化原理
大家都知道,react的一个痛点就是非父子关系的组件之间的通信,其官方文档对此也并不避讳: For communication between two components that don't ha ...
- react 实用的性能优化方式
react 组件渲染分为初始化渲染和更新渲染,当我们更新某个组件的时候,只是想关键路径上组件的render,但react的默认做法是调用所以组件的reder,再生成虚拟dom进行对比,如不变则不进行更 ...
- react生命周期,中间件、性能优化、数据传递、mixin的使用
https://github.com/lulujianglab/blog/issues/34 一.生命周期 1,初始化的执行顺序,初始生命周期执行过程详解 class initSate extends ...
- react问题解决的一些方法
原文链接: https://segmentfault.com/a/1190000007811296?utm_source=tuicool&utm_medium=referral 初学者对Rea ...
- React性能优化总结(转)
原文链接: https://segmentfault.com/a/1190000007811296?utm_source=tuicool&utm_medium=referral 初学者对Rea ...
- React-用ImmutableJS提高性能
一.需求 1.子组件有更新时,只重新渲染有变化的子组件,而不是全部 二.ImmutableJS原理 三.代码 1.CheckboxWithLabel.jsx var React = require(' ...
- 前端模块化开发学习之gulp&browserify篇
随着web应用的发展,前端的比重占得越来越多,编写代码从而也越来越复杂.而通常我们需要将不同功能或者不同模块的代码分开写,最后在html中一起加载,这样做是可以的,但是当你需要进行维护或者是二次开发 ...
- reactJs 基础
react不是一个完整的mvc,mvvm框架. react跟web components 不冲突 背景原理:基于React进行开发时所有的DOM构造都是通过虚拟DOM进行,每当数据变化时,React ...
- 金三银四,磨砺锋芒;剑指大厂,扬帆起航(2020年最全大厂WEB前端面试题精选)上
金三银四,磨砺锋芒:剑指大厂,扬帆起航(2020年最全大厂WEB前端面试题精选)上 引言 元旦匆匆而过,2020年的春节又接踵而来,大家除了忙的提着裤子加班.年底冲冲冲外,还有着对于明年的迷茫和期待! ...
随机推荐
- 在linux系统中实现各项监控的关键技术(2)--内核态与用户态进程之间的通信netlink
Netlink 是一种在内核与用户应用间进行双向数据传输的非常好的方式,用户态应用使用标准的 socket API 就可以使用 netlink 提供的强大功能,内核态需要使用专门的内核 API 来使用 ...
- C#中as运算符
as运算符用于执行引用类型的显式类型转换.如果要转换的类型与指定的类型兼容,转换就会成功进行:如果类型不兼容,as运算符就会返回null值.如下面的代码所示,如果object引用实际上不引用strin ...
- 在IWMS中的分页效果
第一步,你需要在后台修改你所要显示的新闻数目: 第二步,你需要把这段代码加到你需要分页的列表里边 代码: <%=config.TopAd%><asp:Literal id=" ...
- jquery和js的几种页面加载函数的方法以及执行顺序
参考博客:http://www.cnblogs.com/itslives-com/p/4646790.html https://www.cnblogs.com/james641/p/783837 ...
- 导出数据到EXL表格中
项目使用的是SSI框架,通过struts访问到action xml文件: <action name="fabAttributedaochu" class="com. ...
- Python——Entry、Text控件
background(bg) : 文本框背景色: foreground(fg) : 前景色: selectbackground : 选定文本背景色: selectforegroun ...
- xml-dtd
dtd用于校验XML的语法. dtd步骤: 1.看XML中有多少个元素,有几个元素,在dtd文件中写几个<!ELEMENT> 2.判断元素是简单元素还是复杂元素 -复杂元素:有子元素的元素 ...
- How to gitignore
git rm -r --cached . git add . git commit -m "remove gitignore cache" git push
- Real-time chart using ASP.NET Core and WebSocket
Solution in glance The following diagram illustrates our solution where IoT device reports readings ...
- Web API 2 使用SSL
在Server上启用SSL 稍后我会想在IIS 7 上配置SSL,现在先往下看. 本地测试,您可以启用SSL的IIS Express Visual Studio.在属性窗口中,启用SSL设置为True ...