React 应用程序 Space 复杂性的后果

Consequences of Space Complexity in React Apps

我最近一直在 class 学习 space 的大 O 表示法和时间复杂度,我正在尝试将这些概念应用于我日常工作中的现实世界结果作为一名 React 开发者。我了解时间复杂性的后果。如果一个函数的复杂度越高,数据集越大,计算所需的时间就越长,因此用户的加载时间会更长,这是没人喜欢的。我不明白的是 space 复杂性在 React App 中的后果。如果你有一个非常大的数据集并且你最终在浏览器中使用了大量的 space 对用户或应用程序有什么影响?

实际上,它并不是专门基于 React 或任何其他框架。时间复杂度和 space 复杂度的概念不太依赖于框架或语言。这就是使用时间和 space 复杂性符号背后的概念。

现在回答您的问题,答案实际上取决于您 运行 您的 React 应用程序所使用的浏览器。每个浏览器都会为每个选项卡分配最大内存。如果网站使用的内存超过分配的内存,浏览器会终止该网页。

这里有一个关于 Whosebug 内存限制的问题--

Javascript memory limit

In Chrome and Chromium OS, the memory limit is defined by the browser, and you can inspect the limit with the following command in the Developer Tools command-line by hitting F12:

window.performance.memory.jsHeapSizeLimit 1090519040 On my Windows 10 OS, it is about 1 GB.

在 Chrom(e/ium) 上,您可以通过分配来绕过堆大小限制 本机数组:

var target = [] while (true) { target.push(新的 Uint8Array(1024 * 1024)); // 1Meg 本机数组 }

这会使选项卡在大约 2GB 时崩溃,这种情况发生得非常快。后 Chrom(e/ium) 失控,无法重复测试 无需重新启动浏览器。

上面link中有提到react和angular

Here are some examples of frameworks with well-known performance degradation:

..........

React Again,

Immutable collections of JS objects only scale so far.

create-react-app internally uses Immutable.JS, and Immutable.JS can only create about 500k immutable collections before it dies.

用户可能遇到的另一个副作用是整体系统滞后。滞后可能是由于可用 RAM 低和 OS 主动交换以分配更多内存给您的应用程序,直到达到最大限制,然后浏览器才会终止它。