如何通过优化策略大幅提升JSON.stringify()函数的执行效率?
- 内容介绍
- 文章标签
- 相关推荐
本文共计2658个文字,预计阅读时间需要11分钟。
1. JSON.stringify() 在浏览器端或服务端都是我们常用的方法:将 JSON object 存储到 localStorage 中;POST 请求中的 JSON body;处理响应体中的 JSON 格式数据。
1. 熟悉的JSON.stringify()
在浏览器端或服务端,JSON.stringify()都是我们很常用的方法:
- 将 JSON object 存储到 localStorage 中;
- POST 请求中的 JSON body;
- 处理响应体中的 JSON 形式的数据;
- 甚至某些条件下,我们还会用它来实现一个简单的深拷贝;
- ……
在一些性能敏感的场合下(例如服务端处理大量并发),或面对大量 stringify 的操作时,我们会希望它的性能更好,速度更快。这也催生了一些优化的 stringify 方案/库,下图是它们与原生方法的性能对比:
绿色部分时原生JSON.stringify(),可见性能相较这些库都要低很多。那么,在大幅的性能提升背后的技术原理是什么呢?
2. 比 stringify 更快的 stringify
由于 JavaScript 是动态性很强的语言,所以对于一个 Object 类型的变量,其包含的键名、键值、键值类型最终只能在运行时确定。因此,执行JSON.stringify()时会有很多工作要做。在一无所知的情况下,我们想要大幅优化显然无能为力。
本文共计2658个文字,预计阅读时间需要11分钟。
1. JSON.stringify() 在浏览器端或服务端都是我们常用的方法:将 JSON object 存储到 localStorage 中;POST 请求中的 JSON body;处理响应体中的 JSON 格式数据。
1. 熟悉的JSON.stringify()
在浏览器端或服务端,JSON.stringify()都是我们很常用的方法:
- 将 JSON object 存储到 localStorage 中;
- POST 请求中的 JSON body;
- 处理响应体中的 JSON 形式的数据;
- 甚至某些条件下,我们还会用它来实现一个简单的深拷贝;
- ……
在一些性能敏感的场合下(例如服务端处理大量并发),或面对大量 stringify 的操作时,我们会希望它的性能更好,速度更快。这也催生了一些优化的 stringify 方案/库,下图是它们与原生方法的性能对比:
绿色部分时原生JSON.stringify(),可见性能相较这些库都要低很多。那么,在大幅的性能提升背后的技术原理是什么呢?
2. 比 stringify 更快的 stringify
由于 JavaScript 是动态性很强的语言,所以对于一个 Object 类型的变量,其包含的键名、键值、键值类型最终只能在运行时确定。因此,执行JSON.stringify()时会有很多工作要做。在一无所知的情况下,我们想要大幅优化显然无能为力。

