裂痕天堂

標題: 尝试找到任何容易实现的目 [打印本頁]

作者: rmruhul    時間: 2024-1-8 12:43
標題: 尝试找到任何容易实现的目
这是您在开始评估任何类型的应用程序性能时遵循的流程吗?是关于 Notion 的案例研究吗?它是否遵循您对任何事情都会遵循的相同流程?

伊万·阿库洛夫:是的。(?) 过程是您识别问题,然后在本地重现问题。就 Notion 而言,Notion 页面需要一段时间才能加载,然后您使用拥有的所有工具对其进行分析,并标或不那么容易实现的目标。试着弄清楚如何切掉这个水果。这就是高水平的审查。有很多具体细节。

德鲁·麦克莱伦:这是一本非常引人入胜的读物,我将在节目笔记中 电报号码数据 放置一个链接,以便人们如果没有看过它,可以去看它。我看到您提到 React 17 去年删除了您最喜欢的性能功能之一。那是关于什么的?

伊万·阿库洛夫:React 已经经历了几代的性能特性。与 React 15 一样,我认为 15.5 有一个内置的强大对象,它让您可以测量最昂贵的组件或不必要渲染的组件。您可以在控制台中编写类似 perf dot 的内容...我不记得具体的指南。这就像测量一些东西。

伊万·阿库洛夫:是的,我们的想法是,这对于检测哪些组件是不必要的非常方便。我看到了哪些组件被渲染,但生成的 DOM 树与之前的 DOM 树相同。但后来 React 删除了它。我不知道为什么。那时我并没有积极参加表演。

伊万·阿库洛夫:React 删除了它。我想他们当时也引入了 React profiler。而且,在某个时候,他们引入了一个不同的 API,即用户计时。这个想法是,每当您运行 React 的开发版本时,您都会使用 Chrome DevTools 性能选项卡记录性能跟踪。React 要做的就是测量、标记每个组件的开始和结束、每个组件渲染的时间以及每个组件效果运行的时间,例如 componentDidMount、componentDidUpdate。

伊万·阿库洛夫:因此,它将测量每个组件的开始和结束,以及它的生命周期挂钩。它会使用用户计时 API 将它们部分放入性能记录中。这对于调试来说非常方便,因为当您记录单个渲染或其他内容的性能记录时,然后打开主线程窗格,然后查看它,您会看到很多被破坏的内部代码,就像它的 Fiber 算法作用于组件,调用数组组件。



伊万阿库洛夫识别每个组件渲染从哪里开始、每个组件渲染在哪里结束将是非常困难的。但是,如果您滚动得更高一点并打开用户计时会话,您将能够直接看到它,并且您将能够将用户计时应用程序场景中发生的情况相匹配,哪个组件正在此处渲染到中发生的情况性能窗格。如果您看到性能窗格中一些昂贵的工资计算,您只需向上滚动一点即可看到,“嘿,这实际上与此特定组件或此特定 inode,componentDidMount 匹配。”

伊万·阿库洛夫:因此,这对于调试(例如特定的性能问题)非常方便。然而,这样做的问题是,对于 React 开发人员来说,它相当难以维护。GitHub 上对该描述进行了讨论,并给出了具体的推理。React 最终所做的是他们在 React 17 中删除了这个 API。在 React 17 中删除了这个 future。

伊万·阿库洛夫:因此,目前在 React 17 中,调试 React 性能的唯一方法是使用 React profiler。虽然这对很多事情都很有效,但有一些用例,比如查看生命周期钩子,React Profiler 无法测量它或我的链。弄清楚为什么特定组件需要一段时间才能渲染,React Profiler 再次向您显示该特定组件需要 30 或 300 毫秒来渲染,但它没有显示原因并弄清楚为什么您必须切换回性能窗格。






歡迎光臨 裂痕天堂 (http://oves.makebbs.com/) Powered by Discuz! X3.3
一粒米 | 中興米 | 論壇美工 | 設計 抗ddos | 天堂私服 | ddos | ddos | 防ddos | 防禦ddos | 防ddos主機 | 天堂美工 | 設計 防ddos主機 | 抗ddos主機 | 抗ddos | 抗ddos主機 | 抗攻擊論壇 | 天堂自動贊助 | 免費論壇 | 天堂私服 | 天堂123 | 台南清潔 | 天堂 | 天堂私服 | 免費論壇申請 | 抗ddos | 虛擬主機 | 實體主機 | vps | 網域註冊 | 抗攻擊遊戲主機 | ddos |