Tag: v8

用于ECMAScript-262的IDE,以及用于node.js / V8的IDE执行/debugging

我目前使用Eclipse作为我的其他语言的IDE,我宁愿不必离开IDE的任何东西 – 但我真的很努力find纯ECMAScript-262相同或类似的设置。 为了澄清,我不寻找DOM支持,jQuery,HTML或类似的东西,最好只是一个内置ECMAScript-262支持(pref node.js)的IDE(debugging不重要),以便我可以简单地运行我的代码IDE。 有任何想法吗? ps:请不要build议aptana。

如何知道我的NODEJS中的哪个JavaScript版本?

我想知道哪个JavaScript版本是我的NodeJS支持的?

当用作Node.js的JS引擎时,微软的ChakraCore是否比Google的V8提供任何性能优势

[ 我已经编辑了我的问题来缩小场景只有Node.js. 请重新打开它。 这是一个有用的问题,恰当的答案可能会在未来,而不是在ChakraCore还处于非常年轻的时候。 但这个问题是有效的,应该在这里 ] 我们都知道/阅读/听说过Google的V8引擎的辉煌 ,以及它如何使node.js成为它的美丽多年。 但现在我们可以select微软的ChakraCore和Google的V8作为我们的首选JavaScript引擎, 我想知道是否有人有任何证据,或者testing他们发现哪一个比nodejs更高效 。 请回答一些事实和结果,因为有人不应该使用/select脉轮只是因为他/她爱微软或同样适用于V8和谷歌。 谢谢。

如何读取nodejs内部分析器的tick-processor输出

我有兴趣分析我的Node.js应用程序。 我用–prof标志启动了它,并获得了一个v8.log文件。 我已经采取了windows-tick处理器,并获得了一个据说是人类可读的分析日志。 在这个问题的底部是一些从日志文件中摘录的小节,我完全不理解。 我得到了蜱统计方法。 我不明白total vs vs nonlib是什么意思。 另外我不明白为什么有些事情是以LazyCompile , Function , Stub或其他术语为前缀的。 我希望得到的最好的答案是刻度处理器输出格式的完整文档/指南,完整地解释每个术语,结构等。 除此之外,我只是不明白懒惰编译是什么。 它是编译? 不是每个函数都只能编译一次吗? 那么编译怎么可能成为我的应用程序执行的重要部分呢? 该应用程序运行几个小时来生成这个日志,我假设内部的JavaScript编译需要几毫秒。 这表明懒编译是每个函数都不会发生的事情,而是在某种代码评估过程中发生的。 这是否意味着无处不在我有一个函数定义(例如一个嵌套的函数),内部函数每次都得到“懒编译”? 我无法在任何地方find任何信息,我一直在Google上search… 另外我知道有很多探查器标志。 关于这些的其他参考也是受欢迎的。 [JavaScript的]: 滴答总nonlib名字 88414 7.9%20.1%LazyCompile:* getUniqueId C:\ n \ dev \ SCNA \ infra \ lib \ node-js \ utils \ general-utils.js:16 22797 2.0%5.2%LazyCompile:*键本机v8natives.js:333 14524 1.3%3.3%LazyCompile:Socket._flush C:\ n \ dev \ […]

为什么node不会评估Math.tan(Math.PI / 2)到Infinity,但是Chrome V8呢?

在节点命令行界面中运行时: > Math.tan(Math.PI/2) 16331778728383844 但在Chrome中: > Math.tan(Math.PI/2) Infinity 不是都使用相同的V8引擎? 节点的结果甚至不等于JavaScript中的最大“整数”值 。

有没有任何解决方法破v8dateparsing器?

V8dateparsing器已损坏: > new Date('asd qw 101') Sat Jan 01 101 00:00:00 GMT+0100 (CET) 我可以像这样使用脆弱的正则expression式: \d{1,2} (jan|feb|mar|may|jun|jul|aug|sep|oct|nov|dec) \d{1,4} 但它太脆弱了。 我不能依靠new Date (V8发行) ,也不能帮助我,因为时刻正在摆脱date检测(github问题线程) 。 有没有任何解决方法破v8dateparsing器? 要清楚。 我们有Gecko和V8,都有Date 。 V8已经打破date,壁虎有工作之一。 我需要Gecko(Firefox)中的Date 。 更新:这绝对是破解器https://code.google.com/p/v8/issues/detail?id=2602 Status: WorkingAsIntended , Status: WorkingAsIntended

Javascript:如何在RegEx .exec结果中获得多个匹配项

当我跑步 /(a)/g.exec('aaa ').length 我明白了 2 但我认为它应该返回 3 因为弦中有3 a s,而不是2个! 这是为什么? 我希望能够search正则expression式中的所有string,并迭代它们。 FWIW:我正在使用node.js

如何在Node.js中解释和执行asynchronousJavaScript?

最近我对Node.js的核心进行了大量的研究,并对Node平台的内部工作有一些疑问。 据我所知,Node.js是这样工作的: Node有一个使用Javascript编写的API,它允许程序员与文件系统和networking等进行交互。 但是,所有这些function实际上都是由C / C ++代码完成的,也是Node的一部分。 这是事情变得有点模糊的地方。 因此,Chrome V8引擎的工作基本上是将JavaScript编译成机器码。 V8是用C ++编写的,Javascript语言本身是由ECMA指定的,所以这些语言的关键字和特征等都是由它们定义的。 这导致我的第一个问题: 节点标准库如何能够与节点绑定进行交互,因为节点绑定是用C ++编写的? Chrome V8引擎如何在Node上下文中解释Javascript? 我知道它使用了一种叫做JIT的技术,在一个类似的问题中提到过:( https://softwareengineering.stackexchange.com/questions/291230/how-does-chrome-v8-work-and-why-was-javascript-但是这并不能解释Javascript是如何在Node上下文中解释的。 随同Node附带的Chrome V8引擎是否在Chrome浏览器上运行完全相同的引擎,还是已经修改为与Node一起使用? 这使我想到我的下一个问题。 所以Node提供了事件驱动的非阻塞IO。 它通过事件循环来完成这个事件,虽然它通常被称为“节点事件循环”,但它实际上是libuv库的一部分,libuv库是一个用来提供asynchronousIO的C ++库。 在高层次上,事件循环基本上是通过callback来访问的,这是一个原生的Javascript特性,也是Javascript被选为Node项目语言的原因之一。 以下是事件循环如何工作的示例: 这也可以通过这个整洁的小网站来演示: http : //latentflip.com/loupe/假设我们的Node应用程序需要调用外部API。 所以我们写这个: request(…, function eyeOfTheTiger() { console.log("Rising up to the challenge of our rival"); }); 我们的request调用被压入调用堆栈,并且我们的callback被传递到某个地方,直到请求操作结束。 当它发生时,callback被传递到callback队列中。 每次清除调用堆栈时,事件循环都会将callback队列顶部的项目压入调用堆栈,并在其中执行。 这个事件循环在一个线程上运行。 出现问题的时候是有人写'阻塞'的代码,或者从不离开调用堆栈的代码,并且有效地绑定线程。 如果总是有代码在调用堆栈上执行,那么事件循环将永远不会从callback队列中将项目推送到调用堆栈上,并且它们永远不会被执行,从而实质上冻结了应用程序。 这导致我到我的下一个问题: 如果JavaScript是由Chrome V8引擎解释的,而不是“控制”将代码推送到callback队列? Javascript代码如何由libuv事件循环处理? […]

使用节点,为什么代码用“严格使用”这么快?

我从来不知道use strict来加速运行时间,但简单的use strict使得我的基准testing速度大大加快,而较慢的testing速度明显较慢(超过两倍)。 这是怎么回事? // // RUN WITH AND WITHOUT THIS // "use strict"; var assert = require('assert'); var slice = [].slice; function thunkify_fast(fn){ assert('function' == typeof fn, 'function required'); return function(){ var args = new Array(arguments.length); for(var i = 0; i < args.length; ++i) { args[i] = arguments[i]; } var ctx = this; return […]

如何在Node.js / V8中debugging/分析非常长的GC暂停

我正在尝试在相对复杂的Node.js服务器应用程序中分析内存/ GC问题。 即使在非常适中的负荷下,它们在明显的时期也变得没有响应,而这些停顿随着时间的推移而变长。 使用–trace-gc参数运行可能会导致非常长的垃圾收集时间: [4805] 537 ms: Mark-sweep 17.6 (46.4) -> 10.3 (47.4) MB, 20 ms [allocation failure] [GC in old space requested]. [4805] 1338 ms: Mark-sweep 31.3 (58.4) -> 19.2 (57.2) MB, 40 ms [allocation failure] [promotion limit reached]. [4805] 2662 ms: Mark-sweep 58.0 (79.2) -> 43.9 (85.2) MB, 109 ms [Runtime::PerformGC] [promotion limit […]