Tag: v8

在Nodejs中pipe理大量的callbackrecursion

在Nodejs中,几乎没有阻塞的I / O操作。 这意味着几乎所有的nodejs IO代码都涉及很多callback。 这适用于从数据库,文件,进程等读写数据,这是一个典型的例子: var useFile = function(filename,callback){ posix.stat(filename).addCallback(function (stats) { posix.open(filename, process.O_RDONLY, 0666).addCallback(function (fd) { posix.read(fd, stats.size, 0).addCallback(function(contents){ callback(contents); }); }); }); }; … useFile("test.data",function(data){ // use data.. }); 我期待写代码将做许多 IO操作,所以我期望写很多callback。 我很喜欢使用callback,但我担心所有的recursion。 我是否有陷入过度recursion的危险,并在某个地方吹过堆栈? 如果我用成千上万的callback函数向我的键值存储进行数千次单独写入,我的程序是否会最终崩溃? 我是误解还是低估了影响? 如果没有,有没有办法解决这个问题,同时仍然使用Nodejs的callback编码风格?

为什么在nodejs的for循环中放慢速度?

我写了一个非常简单的基准: console.time('var'); for (var i = 0; i < 100000000; i++) {} console.timeEnd('var') console.time('let'); for (let i = 0; i < 100000000; i++) {} console.timeEnd('let') 如果您正在运行Chrome,则可以在此尝试(因为NodeJS和Chrome使用相同的JavaScript引擎,尽pipe通常略有不同): // Since Node runs code in a function wrapper with a different // `this` than global code, do that: (function() { console.time('var'); for (var i = 0; i < […]

node.js是像Perl和Python这样的传统脚本语言的可行替代品吗?

最近我已经不再爱用Perl作为一种跨平台的通用脚本语言,无论是Python还是Ruby,都没有真正吸引过我。 但是在浏览器中,我越来越习惯使用JavaScript,在V8等当代引擎中performance得相当不错,而node.js现在已经真正起飞了好几年了。 但是node.js主要用于服务器端networking编程。 正如它在主页上所声明的那样: 基于V8的事件驱动的I / O服务器端JavaScript环境。 我想知道node.js目前是否适合作为* nix和Windows上的一般脚本语言来替代Perl,Python和Ruby。 我没有多less关于它被用于这种方式的讨论,但它似乎有一个广泛的社区,我没有注意到任何说它不适合这种使用。 这种方式广泛使用吗? 还是缺乏这种types的关键function或模块?

在部署Node.js Web应用程序时,最重要的统计数据是什么?

首先 – 关于我的背景一点点:我已经编程了一段时间(在这一点上是10年),而且在编写想法时,我相当有能力。 一年前,我开始从事networking应用程序的编程工作,并且幸运地发现了nodeJS,这使得networking应用程序的创build更像传统编程。 现在,我有一个node.js应用程序,我已经开发了一段时间,现在正在运行在网上生产。 我的主要困惑源于这样一个事实,即我对networking开发的世界很陌生,并且不知道在监视我的应用程序时什么是重要的,什么是不重要的。 我正在使用Joyent SmartMachine,查看他们提供的分析选项有点压倒性。 有很多不同的选项和configuration,我不知道每个分析的目的是什么。 对于下面的问题,我会很感激任何答案,无论是Joyent的云分析还是全面的一般。 问题一 现在,我主要关心的是弄清楚我的应用程序如何利用运行的服务器。 我想知道我的应用程序是否有足够的资源分配给它。 它收到的请求的数量是否使服务器过度杀伤,还是需要额外的资源? 什么分析是非常重要的,以便为此目的查看NodeJS应用程序? (如果这种做法有所不同,则可以在不同的服务器上同时使用MongoDB和Redis) 问题二 在pipe理正在生产的服务器时,还有哪些其他统计数据通常非常重要? 我习惯于运行一次程序来执行一些特定的事情(例如,一旦它计算出图像,就结束运行的光线跟踪器),而不是连续运行并与许多客户端交互的networking应用程序。 我敢肯定有很多事情对于长期服务器pipe理员来说是显而易见的,而不是像我这样的新手。 问题三 在处理NodeJS时要特别注意什么? 当处理NodeJS的单线程事件循环与更标准的服务器系统时,什么是统计/分析变得特别重要? 我还有其他关于数据库如何进入等式的问题,但我认为现在已经足够了…

Node.js与V8适合有限的内存设备?

想知道的是,具有V8引擎的node.js适合部署在有限的内存设备(如256MB)上并与其他进程并行运行。 我读到它将挂钩机器的资源。 有没有办法限制V8引擎本身的内存和处理使用?

V8有预编译的二进制文件吗?

V8是node.js的重要组成部分,它使用Google V8 Javascript引擎。 在我的windows系统[Windows 7/64-bit]上构buildV8需要花费数小时的时间来抓取和安装我不熟悉的工具(尽pipe我使用Cygwin)。 如果有一些二进制安装程序,它会为我节省很多麻烦。 谷歌search没有返回任何明显的位置 – 古鲁的这里知道吗? 即使你不知道我的确切环境,在这里分享他人会帮助同一个船上的人…

debugging“超出最大调用堆栈大小”

我有一个服务器,我可以导致死亡与以下输出: events.js:38 EventEmitter.prototype.emit = function(type) { ^ RangeError: Maximum call stack size exceeded 但是,如果没有堆栈转储或跟踪,我无法find这是无限recursion还是只是一个稍大的链,更不用说问题函数的位置了。 使用–trace选项运行节点导致我的testing不仅运行缓慢(正如人们所期望的),而是不会重现该问题。 任何人有任何解决scheme或提示,以达到这个底部?

为ARM6交叉编译Node.js(树莓派)

我试图让node.js v0.7.9编译为覆盆子pi,但是由于node和v8相当大,我希望能够在另一个更强大的PC上进行交叉编译。 我使用https://github.com/raspberrypi/tools中的linux-x86 arm-bcm2708-linux-gnueabi工具链,并使用它们成功构build了系统的其他可执行文件。 我最终设置了CC,CXX,CPP,STRIP,OBJCOPY等。 variables转换为环境variables中的工具链等价物,然后使用./configure –dest-cpu=arm –without-snapshot运行configuration以获取最终的可执行文件。 将其复制到系统并运行它会产生以下错误: Extension or internal compilation error at line 0. Segmentation fault 但是,对于像node –version和node –help这样的非javascript任务,不会发生分段错误。 有没有任何CFLAGS / CXXFLAGS我可能会丢失造成这个问题? 有点困惑….

什么是Node.js中的“CrankShaftScript”?

Node.js社区中有越来越多的参考文献在Twitter,GitHub和Facebook小组讨论中提到“CrankShaftScript”(和“CrankShaftJS”)。 我认为Node.js是用C ++和JavaScript编写的,那么CrankShaftScript在性能回归中提到的错误是: https://github.com/nodejs/CTC/issues/146#issue-237435588

如何debugging节点js应用程序与断点和一切?

我已经安装了node-inspector来发现它不支持断点:| 有什么意思呢,要记住,在大部分节点代码是asynchronous的,你不能一步一步地跟着它? 我在这里肯定错过了一点 无论如何,用断点和一切来debugging节点代码?