【问题标题】:Efficiency JSON vs Delimited String in JavascriptJavascript中的效率JSON与分隔字符串
【发布时间】:2014-10-11 07:06:12
【问题描述】:

我目前在 Node.js 中使用 zeroMQ。 ZeroMQ 允许以字符串的形式在应用程序之间传递消息。该应用程序将处理数十万条消息。

解析分隔字符串会不会更快:

"foo bar baz".split(' ');

或字符串化的 JSON 对象:

JSON.parse('{"a":"foo","b":"bar","c":"baz"}');

如何在 Node.js 和/或浏览器中测试每个(速度和内存)的效率。

【问题讨论】:

  • 您的 json 无效。改用这个: JSON.parse('{"a":"foo","b":"bar","c":"baz"}');
  • 分割字符串应该快得多。见性能测试:jsperf.com/splitstringvsjsonparse
  • 分割字符串会得到一个数组,而 JSON.parse 会得到一个对象。这有点像比较苹果和橘子。如果你需要一个对象,使用 JSON.parse() 如果不需要,使用 split()

标签: javascript json node.js zeromq


【解决方案1】:

要测试在浏览器中执行任何指令所需的时间(假设您有适用于 Linux 的 chrome 或 chromium),您可以使用类似于以下代码的内容:

// first open the inspector **ctrl+shift+i** then switch to the console tab to write the code 
// or you can go to `tools > developer tools` then choose the console tab 
// here is the code : 


console.time('t1');
"foo bar baz".split(' ');
console.timeEnd('t1'); 

// result t1: 0.020ms 


console.time('t2');
// you instructions here
JSON.parse('{"a":"foo","b":"bar","c":"baz"}');
console.timeEnd('t2');

// result t2: 0.046ms

很明显,第一种方式比第二种方式快

注意要将对象字符串转换为 JSON 格式,您必须将属性及其值都放在 ""

以我们为例:

a:"foo" 应该是 "a":"foo"

b:"bar" 应该是 "b":"bar" 等等

所以整个字符串('{a:"foo",b:"bar",c:"baz"}' 在第二种方式中) 应该是 '{"a":"foo","b":"bar","c":"baz"}'

【讨论】:

  • 你不能从一次执行中真正判断任何事情。用数千个周期进行 JSPerf 测试。 jsperf.com
  • console.time("t1");for(var i=0;i<1000000;++i) { "foo bar baz".split(" "); } console.timeEnd("t1"); 给我约 100 毫秒。 console.time("t2");for(var i=0;i<1000000;++i) { JSON.parse('["foo","bar","baz"]'); } console.timeEnd("t2"); 给了我大约 350 毫秒。分裂似乎更快。 Array.join 约为 85 毫秒,JSON.stringify 约为 240 毫秒。
猜你喜欢
  • 1970-01-01
  • 2020-01-21
  • 1970-01-01
  • 1970-01-01
  • 2013-04-28
  • 2019-08-23
  • 1970-01-01
  • 2018-07-19
  • 1970-01-01
相关资源
最近更新 更多