Tag: 性能

如果我通过一个variables太多require()会发生什么?

我在我的NodeJS文件夹中传递playersvariables3个级别。 第一个文件是server.js,它们有 var players = {}; require('./routines')(players); 在例程文件夹内,这是index.js: module.exports = function (players) { var addHp = require('./addHp')(players); } 在addHp.js里面: module.exports = function (players) { var addHp = setInterval ( function () { for (var player in players) { //… } }, 30000); } 我想知道这样做的performance是什么。 players参考仅在服务器初始化时发送? 是否有太多参考文献的缺点? 除了不好的做法,假设我有100个要求内线要求接players ,我会有问题吗?

NodeJS中有多个embedded式循环

我喜欢执行下面的代码…但是正如你所看到的那样 – 这将需要100亿个循环! 所以我想知道 – 你们会build议让它旋转得更快吗? 之所以这样做,是因为最内在的方法需要对一些历史数据进行一些复杂的计算 – 从数据库中获得大约700万行数据,是find给定参数af的最佳“设置”,其给出最佳结果… var a = 0.1; while(a <= 10) // 100 { var b = 0.1; while(b <= 10) // 100 { var c = 0.1; while(c <= 10) // 100 { var d = 0.1; while(d <= 10) // 100 { var e = 1; while(e <= […]

如何加快PHPmath?

我试图从这里直接从JavaScript转换成PHP的基准短代码 使用Javascript: (function() { var a = 3.1415926, b = 2.718; var i, j, d1, d2; for(j=0; j<10; j++) { for(i=0; i<100000000; i++) { a = a + b; } } console.log("a = " + a); })(); PHP: <?php $a = 3.1415926; $b = 2.718; for($j=0; $j<10; $j++) { for($i=0; $i<100000000; $i++) { $a = […]

奇怪的JavaScript / Node.js性能问题

目前我正在为一个非常奇怪的性能问题而苦苦挣扎。 SlowHeap所需的平均时间为1448.623ms,而FastHeap只需要550.425ms。 我已经多次查看过,但两者之间唯一的区别是,第一个在_arr的开头使用了“undefined”元素,而第二个不是。 但是,他们都做同样的行动等等。 我已经validation了下面的代码。 有没有人可以解释这个问题? let slowHeapOperationCount = 0 let fastHeapOperationCount = 0 let slowHeapExchanged = [] let fastHeapExchanged = [] function SlowHeap(cmp = (a, b) => a > b ? 1 : a < b ? -1 : 0) { this.cmp = cmp this._arr = [undefined] this.size = 0 } function FastHeap(cmp = […]

JavaScript严重执行函数:内联还是声明?

假设对于时间要求严格的应用程序来说,使用函数声明或函数expression式总是比较好,而不是在大量执行的callback函数中使用内联函数? 考虑下面的testing程序: var x; var count3 = function count3() { x++; } var count2 = function () { x++; } function count() { x++; } function execute(cb) { cb(); } x = 0; var a = new Date().getTime(); for (var i = 0; i < 100000000; i++) { execute(function named() { x++; }) } a […]

并行数据库请求从Node.js SDK到Couchbase

我希望能够在短时间内向Couchbase商店发出几个Get请求,比如在半毫秒内。 我不能使用multiGet,因为我没有同时拥有所有的密钥。 但是,如果我很快发出了几个单独的获取请求,我相信他们将一次处理一个,如http://docs.couchbase.com/couchbase-devguide-2.5/index.html#retrieving-多键 。 我可能做的一件事情是在启动时为每个Get请求创build一个单独的Connection对象,但是我没有看到在任何地方推荐这个最佳实践。 这样的工作,即允许我快速并行获取并且是推荐的事情吗?

由于Expressjs中间件而导致分析服务器性能不佳:jsonParser

我的一个Parse Server云functionperformance非常差,我希望有人能帮助我指出正确的方向,开始debugging我能解决这个问题的原因。 我使用New Relic APM做了一个函数的事务跟踪,除了罪魁祸首(看起来像是“Expressjs Middleware:jsonParser”),大概需要37,700毫秒才能完成。 有谁知道什么样的操作可能会造成这种情况,我该如何去修复它? 我的猜测是有一个巨大的JSON对象传递或closures,但我仍然是所有这些Web服务器的东西,所以想我会得到第二个意见,谢谢! 🙂 事务跟踪

Mongoose poolSize如何工作?

我试图提高我的应用程序的性能,并且认为创build多个客户端连接是一个很好的做法,以便mongodb可以并行处理查询(每个客户端连接的队列正在同步处理) 我正在使用mongoose,并阅读连接文档,我看到你可以设置poolSize(默认是5)。 我没有设置我的连接池大小,所以假设它应该是默认的5 var mongoOptions = { server: { poolSize: Number(process.env.MONGO_POOLSIZE) || 5 } } mongoose.connect(DATABASE_URL + "?authMechanism=SCRAM-SHA-1", mongoOptions); 在我的mongo客户端中运行db.serverStatus().connections ,看到下面的回复{ "current" : 9, "available" : 195, "totalCreated" : NumberLong(2058) } 我知道包含mongo shell连接,但是为什么它是9个连接vs 6? 当我断开我的服务器,它预计下降到1。 那么如果我将poolSize设置为180,我仍然可以获得9个连接与我的设置。 有人可以解释吗? mongoose连接池如何工作? 为什么我的poolSize不适用,并且 是否有多个连接意味着我的查询将通过mongo db并行进程? 或者一个mongoose连接意味着一个客户端连接?

如何在这个复杂的数据传输场景中最大限度提高效率

我不确定这个问题是否属于这个问题,因为它完全是基于理论的,但是我认为这个问题和其他问题相比,这个问题最适合。 我有500,000出租车与Android 4电脑里面。 每天,在一个人或一个派对旅行之后,计算机将关于旅程的信息发送到Node.js服务器。 每天大概有35次出行,这意味着每天有50万出租车* 35次出行= 1750万次的报告发送到Node.js服务器。 另外,每个报告大约有4000个字符,大小约为5KB。 出租车计算机发送到node.js服务器的报告只是一个http文章。 Node.js然后会发送确认信息给出租车。 如果出租车在分配的时间内没有收到报告A的确认,则重新发送报告A. node.js服务器只是接收报告。 将确认信息发送回出租车。 然后将完整的报告发送到MongoDB。 一个潜在的问题:出租车1向node.js发送报告A. Node.js在分配的时间内没有响应,因此出租车1将报告A重新发送到node.js. Node.js最终处理所有内容并将报告A两次发送到MongoDB。 因此,MongoDB负责检查是否收到多个相同的报告。 然后MongoDB插入数据。 其实我有几个问题。 这对于NodeJS来说太多了(我不这么认为,但是可能是一个问题)? 这对于MongoDB来说太多了吗? 我觉得检查重复报告可能会严重阻碍业绩。 我怎样才能使整个系统更有效率? 我应该改变或添加什么?

蓝鸟promisify与promisifyAll性能比较当想从模块promisification一个方法

我想知道蓝鸟promisify与promisifyAll之间的性能差异。 我已经尝试过蓝鸟 promisify和promisifyAll的性能testing。 但时间和记忆方面我并没有看到明显的差异,但我认为promisify是稍快,内存占用less。 仍然是最好的。 假设我想为只有1个方法renderFile的ejs模块renderFile promisification。 我有2个选项 const ejs = require('ejs'); const renderFile = Promise.promisify(ejs.renderFile, {context: ejs}); 要么 const ejs = Promise.promisifyAll(require('ejs')); 我通过testing性能 console.time('A'); console.timeEnd('A'); 和console.log(process.memoryUsage()); 当我想只有1方法的promisification时,请回答我应该使用什么。