Articles of 性能

优化我的Node.js / Js / Socket射击游戏

所以在这里,我做了一个小射手游戏只是为了玩和在我的电脑上运行良好,但与互联网/function较差的电脑(例如在学校/我的朋友很less)的人是相当滞后,这是我的第一个canvas所以我不确定通常的优化技术。 我通过套接字将客户端信息以及其他玩家信息(只有客户端需要的最低限度)发送给客户端60秒钟。 对不起,这个问题有点模糊,基本上只是寻找优化技巧。 如果需要更多的代码,只需要问! 谢谢! 这是我的绘图function: function draw() { ctx.clearRect(0, 0, canvas.width,canvas.height); //grey background ctx.fillStyle="rgba(128, 128, 128, 0.15)"; ctx.fillRect(0, 0,canvas.width, canvas.height); //drawing background grid for(var pos = 25;pos<5000;pos+=25) { ctx.beginPath(); ctx.strokeStyle = "rgba(128, 128, 128, 0.75)"; ctx.lineWidth="1"; ctx.moveTo(0, pos-player.y+pos); ctx.lineTo(canvas.width, pos-player.y+pos); ctx.stroke(); } for(var pos = 25;pos<5000;pos+=25) { ctx.beginPath(); ctx.strokeStyle = "rgba(128, 128, 128, 0.75)"; […]

在JavaScript中传递参数的代价(node.js)

我正在创build一个基于node.js的网站,我要求用户填写大量细节的表单,这样每个表单就成为一个参数。 我写代码的方式是不断地将这些参数从一个函数传递给另一个函数。 我认为这些参数至less需要4个函数,因为我的代码已经对单独的模型和控制器感到厌烦了。 我的问题是在JavaScript中传递这么多参数的成本是多less。 他们会传递我的参数作为一些参考/指针或整个对象将被复制。 我真的不希望整个对象被复制,因为一些参数可能包含大量的文本或数字信息。 有没有关于这方面的任何已知的信息来源? 谷歌的前5个结果没有得到有用的结果。

哪个斐波纳契函数的评估速度会更快?

我想获得第一个100斐波那契数字输出到.txt文件。 我得到它运行,但它需要一段时间。 Fibonacci或Fibonacci2会更快吗? 下面的代码使用第一个。 #!/usr/bin/env node var fs = require('fs'); // Fibonacci // http://en.wikipedia.org/wiki/Fibonacci_number var fibonacci = function(n) { if(n < 1) { return 0;} else if(n == 1 || n == 2) { return 1;} else if(n > 2) { return fibonacci(n – 1) + fibonacci(n – 2);} }; // Fibonacci: closed form expression […]

在Nodejs中关于url.parse的性能

我刚刚跟踪我的nodejs服务器的性能使用: siege -b -t10s -q http://mynodejsserver 我发现,当没有“url.parse(req.url)” 交易速度约为4300转/秒 但是当我使用url.parse时,事务速率大约是3600-3700 trans / sec 其他代码是一样的。 我试了很多次,结果很稳定。 url.parse真的有性能问题吗?

node.jsdynamic的javascript执行性能

我想执行一个任意的用户提供的一段JavaScript代码在文件的每一行。 我创build了一个简单的节点命令行应用程序,作为一个例子,只需取每行并输出它的长度: #!/usr/bin/env node // eachline.js – execute some js per line in a file var fs = require('fs'), readline = require('readline'); vm = require('vm'); var args = process.argv.slice(2); if (args.length < 1) { console.log("Usage: eachline.js FILENAME") process.exit(code=1) } var rd = readline.createInterface({ input: fs.createReadStream(args[0]), output: process.stdout, terminal: false }); var context = vm.createContext({}); // […]

节点HTTP服务器的最高性能?

我正在运行一个testing,试图从节点HTTP服务器获得最大的传输速度。 这是一个简单的服务器。 在我的testing中,我有50K的虚拟客户端build立与服务器的永久连接(我之前运行ulimit -n 99999)。 然后,在另一个事件,一个HTTP连接到不同的端口,服务器发送一个消息到每个虚拟客户端。 最后,所有客户端都收到相应的消息。 在我的testing中发送所有消息需要几分钟。 有没有任何build议可以帮助我改进这些测量,以便我可以在几秒钟内发送5万条消息而不是几分钟? 服务器在m1.medium AWS实例中运行。 这个想法是用相同的平台来提高性能。 复制服务器代码: var http = require("http"); var connectionResponse = []; var connectionIndex = 0; http.createServer(function(request, response) { console.log("Received connection " + connectionIndex); response.setTimeout(1200000, function() { console.log("Socket timeout"); }); connectionResponse[connectionIndex] = response; connectionIndex++; }).listen(8888); http.createServer(function(request, response) { console.log("8887 connected – Will respond"); response.writeHead(200, {"Content-Type": "text/plain"}); […]

JavaScript性能:通话与应用

当params是一个空数组或null时func.apply(obj, params)从func.apply(obj, params)切换到func.call(obj)是否有性能优势? 我的意思是,调用func.call(obj)比调用func.apply(obj, null)更快吗? 我最感兴趣的是在NodeJS 4.x下的性能。 这是一个algorithm,必须做很多这样的调用。

如何在Node.js应用程序上执行loadtest

请,我需要一个关于如何高效地testing完成的Node.js应用程序的专家build议。 我想要做的是 1.我想运行testing来刺激例如100个用户都将数据插入到mongoDB中 2. 100个用户从数据库中回顾logging 3. 100个用户可能会从数据库中删除,我想检查系统如何在这样的情况下执行。 我读了关于npm的loadtest,在我看来,它是一个很好的候选人,但是我不知道我是否可以使用这个将数据(post / get)请求传递到数据库中,看看系统将如何响应像100个用户都将真实数据发布到数据库中。 我想,loadtest有助于检查例如20秒的响应时间,也许有40个并发请求,这是我对模块的基本认识,我不知道它是否具有其他function,比如我期望的function。 任何build议或线索去这个将不胜感激,因为我希望尽可能避免重新devise车轮谢谢

需要node.js模块在单个函数和全局函数中对性能的影响

我有一个node.js文件与几个function。 假设每个函数都需要下划线模块。 什么是对添加var underS = require("underscore");性能的影响var underS = require("underscore"); 在每一个函数与声明一个单独的var underS = require("underscore"); 全球在顶部? 哪个性能更好?

Pg-promise性能提升:具有多个更新参数的多个插入

正如我在这里和那里所build议的那样,我正在实施Vitaly的pg-promise性能模式。 这是我的代码: for (var i=0;i<chunkedData.length;i++){ var insertData = chunkedData[i].map(function (d) { return { application_id: d.application_id, country_id: d.country_id, collection_id: collectionId }; }); // Would need to make a loop here, and thus turning the result into an array var updateData = { application_id: chunkedData[i][j].application_id, country_id: chunkedData[i][j].country_id, collection_id: collectionId }; var query = h.insert(insertData, cs) + " […]