JS JSON对象与JSON字符串相关

  • 时间:
  • 来源:互联网
  • 文章标签:

JSON对象与JSON字符串效率

    • 怎样拼接json字符串更好?
    • 为什么字符串模板会更快

怎样拼接json字符串更好?

在一个项目中向后台传递参数的形式是将JSON拼接到URL中,我是后来看代码的,发现原开发者用的是直接把字符串拼接,如下:

'{"memberid":"' + memberid + '","cardbag_number":"' + cardbag_number + '"}';

但是我觉得这样十分不方便编码阅读,会严重拉低编码体验,于是想也用可以使用JSON.stringify()将对象转换为字符串,如下:

JSON.stringify({
    memberid: memberid,
    cardbag_number:cardbag_number
});

这样是极大的改善了编码体验,但是是不是会增加运行的时间,或者运行内存呢?
于是我有了比较他们运行占用的想法。
这次比较的是运行时间,运行内存会在后续比较。
我首先编写了一段(如下)简单的测试代码,使用console.time()记录时间作比较。

memberid = 5;
cardbag_number = 5;
console.time("JSON转换");
JSON.stringify({
    memberid: memberid,
    cardbag_number:cardbag_number
});
console.timeEnd("JSON转换");

console.time("String拼接");
'{"memberid":"' + memberid + '","cardbag_number":"' + cardbag_number + '"}';
console.timeEnd("String拼接");

从得到的运行结果来看字符串拼接的速度的确比JSON转换快得多,大概是一个数量级。

JSON转换: 0.147ms
String拼接: 0.013ms

但是考虑到直接拼接字符串,的确比较难以阅读,所以就有了使用ES6中字符串模板的想法,如下:

`{
    memberid: ${memberid},
    cardbag_number: ${cardbag_number}
}`;

我在之前的代码上增加了关于字符串模板相关的代码。

memberid = 5;
cardbag_number = 5;
console.time("JSON转换");
JSON.stringify({
    memberid: memberid,
    cardbag_number:cardbag_number
});
console.timeEnd("JSON转换");

console.time("String拼接");
'{"memberid":"' + memberid + '","cardbag_number":"' + cardbag_number + '"}';
console.timeEnd("String拼接");

console.time("ES6 模板字符串");
`{
    memberid: ${memberid},
    cardbag_number: ${cardbag_number}
}`;
console.timeEnd("ES6 模板字符串");

运行后发现字符串模板字符串拼接数量级相当,大多数时间模板字符串比直接拼接字符串的速度要

JSON转换: 0.149ms
String拼接: 0.013ms
ES6 模板字符串: 0.009ms

所以,使用字符串模板会更快,更便于阅。
但是我们尝试拼接作为
所以我们通常会在这里停下脚步确定自己使用字符串模板来开发。
但是为什么字符串模板会更快呢。

疑问: 但是我们发现,按照模板字符串的样式会产生一个问题,拼接出来的Url会产生换行,我们是否需要进一步解决这个问题,除去模板字符串的的空格和换行呢?

为什么字符串模板会更快

我已经知道了,但是我要去吃饭了,回头再写。

本文链接http://www.taodudu.cc/news/show-1944687.html