Tag: v8

如何检查与我的NodeJS安装哪个版本的V8?

V8如何与NodeJ一起安装? 我目前的V8引擎是什么版本?

为什么在JavaScript中Math.pow()(有时)不等于**?

我刚刚发现了ECMAScript 7特性a**b作为Math.pow(a,b) ( MDN参考 )的一个替代方法,并且在Math.pow(a,b) 文章中发现了一个他们明显performance不同的讨论。 我已经在Chrome 55中进行了testing,可以确认结果不同。 Math.pow(99,99)返回3.697296376497263e+197 而 99**99返回3.697296376497268e+197 因此,logging区别Math.pow(99,99) – 99**99结果-5.311379928167671e+182 。 到目前为止,可以这么说,这只是另一个实现,但是将其封装到一个函数中又会有所不同: function diff(x) { return Math.pow(x,x) – x**x; } 调用diff(99)返回0 。 为什么会这样呢? 正如xszaboj指出的,这可以缩小到这个问题: var x = 99; x**x – 99**99; // Returns -5.311379928167671e+182

为什么typeof null的值在循环内部改变?

在Chrome控制台中执行此代码段: function foo() { return typeof null === 'undefined'; } for(var i = 0; i < 1000; i++) console.log(foo()); 应该打印1000次false ,但在某些机器上会打印false的迭代次数,其余为true 。 为什么发生这种情况? 这只是一个错误?

在没有浏览器的情况下执行JavaScript?

我正在调查没有浏览器的JavaScript编程。 我想从Linux或Mac OS X命令行运行脚本,就像我们运行任何其他脚本语言(ruby,php,perl,python …) $ javascript my_javascript_code.js 我研究了蜘蛛猴(Mozilla)和v8(Google),但是这两者似乎都是embedded式的。 是否有人使用Javascript作为脚本语言从命令行执行? 如果有人好奇我为什么要看这个,我一直在绕过node.js。 node.js的性能让我怀疑javascript是否是一种可行的处理大数据的脚本语言。

Bluebird的util.toFastProperties函数如何使对象的属性“快速”?

在Bluebird的util.js文件中 ,它有以下function: function toFastProperties(obj) { /*jshint -W027*/ function f() {} f.prototype = obj; ASSERT("%HasFastProperties", true, obj); return f; eval(obj); } 出于某种原因,返回函数之后有一个声明,我不知道为什么它在那里。 同样,这似乎是故意的,因为提交人已经沉默了JSHint对此的警告: “返回”后无法到达'eval'。 (W027) 这个函数到底做了什么? util.toFastProperties是否真的使对象的属性“更快”? 我已经通过Bluebird的GitHub仓库search了源代码中的任何评论或者在他们的问题列表中的解释,但我找不到任何。

运行V8 Javascript引擎独立

我想在V8上运行一个Javascript控制台。 我如何做到这一点?

nodejs / v8 flamegraph中使用perf_events的未知事件

我试着用Brendan Gregg 在这里描述的使用Linux perf_event进行nodejs分析。 工作stream程如下: 使用–perf-basic-prof运行节点> 0.11.13,它会创build/tmp/perf-(PID).map JavaScript符号映射的/tmp/perf-(PID).map文件。 使用perf record -F 99 -p `pgrep -n node` -g — sleep 30捕获堆栈perf record -F 99 -p `pgrep -n node` -g — sleep 30 使用此库中的stackcollapse-perf.pl脚本折叠堆栈 使用flamegraph.pl脚本生成svg火焰图 我得到以下结果(开头看起来非常好): 问题是有很多[unknown]元素,我想应该是我的nodejs函数调用。 我假设整个过程在第3点失败,其中perf数据应该使用由–perf-basic-prof执行的node / v8生成的映射来折叠。 创build/tmp/perf-PID.map文件,并在节点执行过程中向其写入一些映射。 如何解决这个问题? 我正在使用CentOS 6.5 x64,并且已经尝试使用节点0.11.13,0.11.14(包括预构build和编译),但都没有成功。

对象/数组在JavaScript中的性能是什么? (专门针对Google V8)

与JavaScript中的数组和对象(尤其是Google V8)相关的性能将会非常有趣。 我在互联网上的任何地方找不到关于这个主题的综合性文章 我知道有些对象使用类作为其基础数据结构。 如果有很多属性,它有时被视为一个哈希表? 我也明白,数组有时被视为C ++数组(即快速随机索引,缓慢删除和resize)。 而且,其他时候,它们更像对象(快速索引,快速插入/删除,更多内存)。 而且,也许有时它们被存储为链接列表(即,慢速随机索引,在开始/结束时快速移除/插入) Array / Object的检索和操作在JavaScript中的精确性能是什么? (专门针对Google V8) 更具体地说,它对性能的影响如下: 将属性添加到对象 从对象中删除一个属性 索引对象中的属性 将项目添加到数组 从arrays中删除项目 索引数组中的项目 调用Array.pop() 调用Array.push() 调用Array.shift() 调用Array.unshift() 调用Array.slice() 任何文章或链接的更多细节,也将受到赞赏。 🙂 编辑:我真的很想知道JavaScript数组和对象如何在引擎盖下工作。 另外,在什么情况下 V8引擎“知道”切换到另一个数据结构? 例如,假设我创build一个数组… var arr = []; arr[10000000] = 20; arr.push(21); 这里究竟发生了什么? 或者…这个怎么样? var arr = []; //Add lots of items for(var i = 0; i […]

ECMAScript 6function在Node.js 0.12中可用

Node.js(0.12)的一个新的稳定版本最近登陆升级的Google的v8 JavaScript引擎, v3.28.73 。 什么ECMAScript 6function目前在Node.js中,而不使用–harmony标志? 我检查了几个网站,声称列出的ES 6function,但他们都似乎过时了 – 最显着的是, 这张表 ( 更新: 现在更新与当前Node.js状态0.12 ),因为几个function被列为需要–harmony标志,而我发现其中一些是默认启用(地图,集合,符号,仅举几例)。 更新 : 节点特定的表已经可用 此外,试图纯粹为v8引擎谷歌这个信息提供了最新的信息 – 目前的v8版本是4.2。* ,这是比Node.js使用相当的领先。 我希望这个问题(及其答案)将成为一个全面的总结,介绍Node.js开发人员现在可以使用哪些ES 6function。 在Node.js 0.12中启用了ES 6function我目前知道: 地图,集合/弱地图,弱集合 符号 Object.observe 承诺 数 .isInteger .isSafeInteger .isNaN 小量 .MIN_SAFE_INTEGER .MAX_SAFE_INTEGER math .clz32 .imul 。标志 .log10 .log2 .log1p .expm1 .cosh .sinh .tanh .acosh .asinh .atanh .trunc .fround .cbrt […]

JavaScript的正则expression式挂起(使用V8)

即时通讯使用这个正则expression式来获取文件中的标签的内容。 var regex = new RegExp("<tag:main>((?:.|\\s)*)</tag:main>"); 这会导致v8引擎无限期挂起。 现在,如果我使用new RegExp("<tag:main>([\s\S]*)</tag:main>") ,一切都很好。 任何人都有一个想法,为什么第一个花了太长时间?