Tag: v8

在Node / V8中如何实现正则expression式匹配?

我遇到过一篇文章 ,显示正则expression式匹配通常使用潜在的低性能algorithm与build议的Thompson NFAalgorithm实现。 考虑到这一点,如何在Node或V8中实现? 是否有可能使用Thompson NFA的JS实现来提高性能,也许如果只使用了有限的特性子集(可能会去除超前或其他“高级”特性)?

为什么node.js运行时比Google Chrome控制台慢

我们知道Chrome和node.js在同一个V8 javascript引擎上运行。 我的理解: 铬应该是慢的,它不仅处理内部执行,但也做了额外的用户界面工作 node.js应该很快, 没有额外的UI工作 所以,比较简单的速度testingnode.js的V8的JavaScript 与Chrome的V8 为什么node.js比Chrome慢? 顺便说一句,这是代码: function speedTest(){ console.time("loop"); for (var i = 0; i < 1000000; i += 1){ // Do nothing } console.timeEnd("loop"); }

JSON.stringify()在V8中是确定性的吗?

我还没有看到(还?) JSON.stringify在Node.JS中是非确定性的。 不能保证它在规格级别上是确定性的。 但是V8呢? 它的实现是否具有确定性? 有没有保证它为未来的V8版本保持确定性? 编辑: 对于确定性,我的意思是,无论json_str的值是什么,下面的断言都是正确的。 (给定值是一个有效的JSONstring。) const obj = JSON.parse(json_str); assert(JSON.stringify(obj)===JSON.stringify(obj)); // always true 编辑2: 其实,我也有兴趣下面的说法是真实的 if( deepEqual(obj1, obj2) ) { assert(JSON.stringify(obj1)===JSON.stringify(obj2)) } 事实并非如此(见答案)。

node.js:为什么NODE_DEBUG = 1不起作用? (试图debugging一个require()错误)

我有一个像这样的目录结构: project lib paperboy redis-client node-cookie srv main.js … 我从项目目录中启动main.js: $ node srv/main.js 在main.js中,我可以这样做: paperboy = require('./lib/paperboy'); 但是,这失败了: redis = require('./lib/redis-client'); 同样,如果我在“项目”目录中启动交互式节点,我可以要求paperboy,而不是redis-client。 我得到的错误是: > require('./lib/redis-client') Error: Cannot find module './lib/redis-client' at resolveModuleFilename (node.js:265:13) at loadModule (node.js:231:20) at require (node.js:291:14) … 查看resolveModuleFilename()的源代码,它试图打印一个debuggingstring,我没有看到: debug("looking for " + JSON.stringify(id) + " in " + JSON.stringify(paths)); 我已经尝试通过导出NODE_DEBUG = 1来启用它,但是在尝试请求时仍然看不到此debugging打印。 […]

用节点检查器debuggingV8

我正在尝试使用节点检查器来debugging在V8中运行的JavaScript脚本。 在应用程序方面,我刚刚做到了 v8::Debug::EnableAgent("MyApp", 5858); 节点检查器连接良好,甚至可以暂停/取消暂停和显示代码。 但是,逐步执行不起作用,既不是断点,也可能是其他许多事情。 当我尝试做这样的事情时,我从Node-inspector得到这些错误: Node Inspector v0.7.0 Visit http://127.0.0.1:8080/debug?port=5858 to start debugging. Received request for a method not implemented: Debugger.setSkipAllPauses Received request for a method not implemented: Debugger.setSkipAllPauses Received request for a method not implemented: Debugger.setSkipAllPauses Received request for a method not implemented: Debugger.setBreakpoint Received request for a method not implemented: Debugger.setBreakpoint […]

将C ++虚拟方法绑定到具有覆盖function的js

假设我有一个C ++类: class cRenderer { … virtual void draw(); … } 这是渲染引擎的一部分,所以任何inheritancecRenderer C ++类cRenderer可以重写draw方法,并在屏幕上绘制东西。 问题是我如何实现与v8绑定相同的行为(这将最终是一个Node.js模块)? 有人可能会说,我可以这样做: class cApplication : public cRenderer, public node::ObjectWrap { … define bindings … } 然后在我的JavaScript我做了这样的事情: var app = new cApplication(); var oldDraw = app.draw; //saving old instance of draw app.draw = function() { … do drawing api calls … oldDraw(); […]

v8 / node.js中的内部数组表示

我为node.js写了一个小内存基准: http : //pastebin.com/KfZ4Ucn4 它使用process.memoryUsage().heapUsed来测量内存使用情况process.memoryUsage().heapUsed for 3 cases: 具有10个属性的对象数组,每个元素的属性名称不同 具有10个属性的对象数组,具有相同的属性名称 具有10个属性,相同属性名称的对象数组,表示为数组对象 情况1的开销为1300字节,情况2为300字节,情况3为150字节。同样只有情况1的垃圾收集,而在后一种情况下,内存使用量不下降。 这些效果是否有任何解释或文档? 我试图优化对象的对象数组的内存使用情况,像 [ { foo : { bar : 1, baz : 2 } , bar : { bar : 2, baz : 7 } } , { foo : { bar : 1, baz : 2 } , bar : { bar […]

这是使用nodejs的好scheme吗?

我和几个朋友正计划做一个时间跟踪的Web应用程序。 在我们之间,我们有Java,C ++,Django和Backbone.js的经验,尽pipe我们从未做过任何完整的商业应用。 这是我们第一个真正的项目,我们希望在学习nodejs之前更清晰一些。 关于应用的更多信息: 用户将在整天使用这个应用程序logging各种任务(有点像任务pipe理应用程序) 跟踪在这些任务上花费的时间(时间跟踪) 用户不会相互交stream任务。 我们希望用户能够在一天中持续使用这个应用程序 所以我们希望应用程序具有高性能。 我们还预见将来可以使用原生的移动应用程序(ios和Android),这些应用程序可以使用与Web相同的API。 因为这个,JSON和javascript非常有吸引力。 我们也不想在客户端和服务器上重新编写代码。 我已经检查了这个答案: 如何决定何时使用Node.js? 但真的要更清晰些。 node.js是否适合这种情况? Django + Backbone.js有什么优势呢?

为node.js安装V8plus

我正在安装v8 + C ++到C边界层添加( https://github.com/wesolows/v8plus ),以便调用我写的C封装器,并且我很难理解如何安装和使用它。 我安装了v8plus模块,将它列在我的依赖文件package.json中,然后使用npm install,现在我试图通过列出的命令将它绑定到Makefile中: PREFIX_NODE := $(shell dirname `bash -c 'hash node; hash -t node'`)/.. V8PLUS := $(shell $(PREFIX_NODE)/bin/node -e 'require("v8plus");') 然而,每当我input这个到我的Ubuntuterminal,它不能识别上面的'shell'命令我放在那里,并build议我应该安装'lshell','拼写',或'bshel​​l'。 有人可以请解释我可以如何正确安装和使用此模块,以通过node.js中的Javascript调用我的C函数。 我正在使用C包装来调用popen为了代表我的node.js应用程序pipe道命令到terminal,有没有更好的解决scheme,然后使用这样的命令,如: popen() execv c system 你能推荐任何其他好的解决scheme/教程来解决这个问题吗? 感谢您的时间!

从AS3客户端运行MongoDB查询?

是否有可能从AS3客户端AIR应用程序运行在服务器端的mongo shell的本地Javascript函数? 我有很多的经验,在embedded/加载HTML的地方embeddedSWF的Javascript方法,我想知道如果我可以做一个服务器端请求来运行驻留在服务器上的JavaScript方法。 更具体地说,我对在基于V8或类似的构build的mongoDB控制台上运行命令感兴趣。 例如,在官方的mongoDB网站上embedded了一个控制台。 我不知道这个控制台实际上是连接到服务器,还是只是一个模拟? 我不想使用node.js,如果我可以使用V8或直接连接到控制台,是否有可能? 谢谢