当前位置: 首页 > 面试题库 >

React的性能问题

弘涛
2023-03-14
问题内容

我读到React非常快。最近,我写了一个应用程序来测试对角的反应。不幸的是,我发现反应的表现要慢于角度反应。
http://shojib.github.io/ngJS/#/speedtest/react/1

这是react的源代码。我是新来的人。我确定我的反应代码在这里做错了。我发现它异常缓慢。
https://jsbin.com/viviva/edit?js,输出

看看是否有任何反应专家可以找到瓶颈。

更新1:

  1. 删除了上下文的用法。
  2. 更好地使用setState。
  3. 更好地使用shouldComponentUpdate。

我仍然无法使它快于角形甚至接近角形。
https://jsbin.com/viviva/96/edit?js,输出

更新2:

通过在单元组件中创建2d数组,我犯了一个大错误。所以我将它们移到了mixin。现在,我相信在DOM操作中,反应要比角度更快。
https://jsbin.com/nacebog/edit?html,js,输出

更新3:

我的错误再次出现。我做错了,这使它更快。经过分析,它渲染不正确。如果有人可以帮助我理解,这可以更快。我知道反应并不擅长处理大型阵列。在这种情况下,它将处理四个3d阵列。https://jsbin.com/viviva/100/edit?html,css,js


问题答案:

我认为这是一个非常人为的例子。

  • 如上所述,您使用的上下文不正确。
  • 不需要混合:列数和行数可以并且应该作为道具传递。create2DArraygetRandomNumber应在脚本顶部声明为简单的全局函数。
  • 您设置的状态不正确。永远不要这样改变状态this.state.some = 'whatever',必须使用setState

this.setState({some:’whatever’});



 类似资料:
  • 问题内容: 我对React,Redux和ImmutableJS还是相当陌生,并且遇到了一些性能问题。 我有一个大的数据树结构,目前正在以平面列表形式存储该数据: 虽然将其构造为平面列表使更新节点变得容易,但我发现随着树的增长,交互变得缓慢。交互包括能够选择一个或多个节点,切换其子节点的可见性,更新文本等等。UI缓慢的主要原因似乎是每次交互都重绘了整个树。 我想这样使用,如果我更新节点3,则节点2和

  • 起因 问题的起因是左侧模版列表在开发时没有测试最多五百条数据的极限,当数据列表达到五百条的时候,就单纯的改变checkbox组件状态(选中或者不选中之间切换),就很慢,看了一下性能分析,一个click事件在4倍降低CPU的情况下长达4s的长任务,我不理解 :) 这里我在控制台中,发现列表并没有重新渲染所有节点,而且也没有接口调用。仅仅五百个节点就这样,虚拟dom性能有点... 顺便补充一下:rea

  • 问题内容: 我只是在我的 无状态功能组件 之一中设置默认值时遇到了一个关于React性能的问题。 此组件有其定义,但我不喜欢它,因为是 在最后 的文件,这实际上使得它很难看到的。因此,我们不知道默认属性。因此,我将其直接移至函数声明,并使用ES6默认参数值对其进行了分配。 但是随后我们与一位同事争论说这 是否是一个好主意 。因为这样做似乎很简单,但由于 react无法识别 默认值,因此对性能也可能

  • 问题内容: 我在Java2D方面表现有些古怪。我知道sun.java2d.opengl VM参数可以为2D启用3D加速,但是即使使用该参数也有一些奇怪的问题。 这是我运行的测试结果: 在JComponent上绘制具有32x32像素图块的25x18地图, 图像1 = .bmp格式,图像2 = .png格式 没有-Dsun.java2d.opengl = true 使用.BMP图像1的120 FPS使

  • 最近,我们将数据库从11g更新为19c。 在新数据库版本中测试应用程序时,我们遇到了一个特定视图的性能问题,该视图工作得非常好,但在19c中会导致性能问题。 在分析计划时,我们看到执行计划发生了巨大变化,这导致了19c中视图的性能非常差。 令人惊讶的是,其他观点的效果很好。 如果你能对这个问题有所了解,那就太好了。 谢谢你,JD

  • 问题内容: 我正在尝试对我们的客户代码进行基准测试。因此,我决定编写一个多线程程序来对我的客户端代码进行基准测试。我正在尝试测量下面的方法需要多少? 因此,下面是我编写的用于对上述方法进行基准测试的多线程代码。在两种情况下,我看到了很多变化- 1)首先,使用和来处理多线程代码。我得到95%的。我正在使用- 2)但是,如果我运行相同的程序以使用- 代替 当我使用运行代码时,我得到95%,比上面的数字