Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Node.js中的对象内存存储_Javascript_Node.js - Fatal编程技术网

Javascript Node.js中的对象内存存储

Javascript Node.js中的对象内存存储,javascript,node.js,Javascript,Node.js,我只是在Chromium控制台和Node.js控制台上都尝试了这段代码: var map = {}; for(var i = 0; i < 10000000; i++) { var key = '' + Math.random(); map[key] = true; } var time = (new Date()).getTime(); console.log(map['doesNotExists']); console.log((new Date()).getTime()

我只是在Chromium控制台和Node.js控制台上都尝试了这段代码:

var map = {};
for(var i = 0; i < 10000000; i++) {
   var key = '' + Math.random();
   map[key] = true;
}
var time = (new Date()).getTime();
console.log(map['doesNotExists']);
console.log((new Date()).getTime() - time);
var-map={};
对于(变量i=0;i<10000000;i++){
var key=''+Math.random();
map[key]=true;
}
var time=(新日期()).getTime();
log(map['doesNotExists']);
console.log((new Date()).getTime()-time);
在浏览器中:几秒钟

在Node.js中:几毫秒

因此,我假设Node.js使用
HashMap
存储,而Webkit不使用。对吗

我想知道Node.js是否以这种方式存储所有对象(即使是小对象)。您知道Node.js中是否有存储规则,具体取决于对象的大小


更新2017-05-02
这已不再是事实,现在,差异并不显著。我的猜测是,自2015年以来,Chromium console以
HashMap
的方式进行存储。

尽管感觉非常像控制台,Chromium console是一个为您提供图形用户界面的软件程序,但实际上它不是控制台。此程序正在后台运行您的命令。特别是,他们对I/O进行了大量的前后处理,以使其美观,如果是对象,则可折叠,等等——所有这些检测、比较,甚至颜色格式化都需要循环

所有这些都表明,有更多的事情发生在那里,而不仅仅是打击基础的V8引擎

除此之外,所有这些都受到浏览器本身的限制——更像你说的那样,“嘿,Chrome——当你在做其他选项卡中的任何事情时——也要把它放进去。”最后,你还将达到由浏览器控制的内存和超时限制所有这些都使得这是一个不公平的比较


而Node使用V8进行JS解释,它不会在你的1000万次迭代中做任何胡说八道的事情——我认为这绝对会加速NodeJS的运行……而且它与以不同的方式存储对象都没有任何关系。

尽管感觉非常像控制台,铬控制台是一个软件程序这是一个图形用户界面,实际上不是控制台。此程序正在后台运行您的命令。特别是,他们对I/O进行了大量的前后处理,以使其美观,如果是对象,则可折叠,等等——所有这些检测、比较,甚至颜色格式化都需要循环

所有这些都表明,有更多的事情发生在那里,而不仅仅是打击基础的V8引擎

除此之外,所有这些都受到浏览器本身的限制——更像你说的那样,“嘿,Chrome——当你在做其他选项卡中的任何事情时——也要把它放进去。”最后,你还将达到由浏览器控制的内存和超时限制所有这些都使得这是一个不公平的比较


而Node使用V8进行JS解释,它不会在你的1000万次迭代中做任何胡说八道的事情——我认为这绝对会加快NodeJS的运行速度……而且它与以不同的方式存储对象都没有任何关系。

我不确定使用Chrome控制台是否是对性能的现实评估……这看起来像什么你是在我不确定使用Chrome控制台是否是一个真实的性能评估之后……这看起来就像你是在我没有比较微秒差,有一个巨大的差距,只有1个console.log的未定义和1个console.log的数字,如果存储是一个HashMap方式,就像在Nodejs中一样,它应该不会那么长。但这在2017年不再是事实,现在的访问速度和Nodejs一样快。我没有比较微秒的差异,有一个巨大的差距,只有1个console.log的未定义和1个console.log的数字,如果存储是像Nodejs一样的HashMap方式,它应该不会这么长。但这在2017年不再是事实,现在的访问速度与Nodejs一样快。