Tag: 性能

从Node.js发布所需的模块

如何在运行时释放Node.js模块以节省内存或提高整体性能。 我的应用程序在运行时dynamic加载Node.js中的模块,但不会卸载它们中的任何一个。 我正在寻找这样的function。 在代码加载模块后更新已经被更改的模块; 并且还卸载可能不被进一步使用的模块。 任何见解? 谢谢。

如何提高PostgreSQL在INSERT上的性能?

我写了一个Node.js应用程序,它将大量logging写入PostgreSQL 9.6数据库。 不幸的是,这感觉很慢。 为了能够testing一些东西,我创build了一个简短但完整的程序来重现场景: 'use strict'; const async = require('async'), pg = require('pg'), uuid = require('uuidv4'); const pool = new pg.Pool({ protocol: 'pg', user: 'golo', host: 'localhost', port: 5432, database: 'golo' }); const records = []; for (let i = 0; i < 10000; i++) { records.push({ id: uuid(), revision: i, data: { foo: 'bar', […]

为什么一个nodejs数组移位/推循环比数组长度87369慢1000倍?

为什么nodejs数组移位/推送操作的速度在数组大小上不是线性的? 在87370有一个戏剧性的膝盖,完全粉碎了系统。 试试这个,首先是q中的87369个元素,然后是87370.(或者,在64位系统上,尝试85983和85984)。对我而言,前者运行时间为0.05秒; 后者在80秒 – 1600倍慢。 (在节点v0.10.29的32位debian linux上观察) q = []; // preload the queue with some data for (i=0; i<87369; i++) q.push({}); // fetch oldest waiting item and push new item for (i=0; i<100000; i++) { q.shift(); q.push({}); if (i%10000 === 0) process.stdout.write("."); } 64位debian linux v0.10.29从85984开始爬行,运行时间为0.06 / 56秒。 节点v0.11.13具有相似的断点,但具有不同的数组大小。

RabbitMQ:如何限制消费率

我需要限制从rabbitmq队列中消费消息的速度。 我发现了很多build议,但是其中大多数提供使用预取选项。 但是这个选项并没有做我所需要的。 即使我将预取设置为1,速率也是大约6000个信息/秒。 这对消费者来说太多了。 我需要每秒限制大约70到200条消息。 这意味着每5-14ms消耗一个消息。 没有同时消息。 我正在使用Node.JS和amqp.node库。

npm run <cmd>工作缓慢

我曾经通过Makefile运行各种命令,但是对于nodejs项目,package.json是这个东西的更合适的地方。 通过npm运行命令与命令时间执行相比效果很好但非常慢。 $ time ./node_modules/.bin/jshint . && ./node_modules/.bin/jscs . real 0m0.759s user 0m0.524s sys 0m0.085s No code style errors found. $ time npm run lint > @ lint /path/to/project > jshint . && jscs . No code style errors found. real 0m2.246s user 0m1.637s sys 0m0.277s 有可能加快速度? UPD。 我的package.json: { "devDependencies": { "jscs": "^1.12.0", "jshint": […]

在新的Node.js错误对象的性能命中

在用于检索堆栈跟踪(例如用于logging引擎或内联debugging)的目的中,需要新增一个Error对象的用例。 在第一次创buildError对象时,现代node.js中有没有一个很重的性能问题,或者当开发人员调用<Error> .stack属性时,聪明的V8开发人员就会根据需求展开堆栈。 从我对这些工具的探究中,我认为堆栈跟踪展开不会被执行,直到访问<Error> .stack,这似乎是一个常识性的devise方法。 任何人都可以阐明这一点或build议的方法来validation短的debugging本机V8代码?

我应该静态分配Javascriptstring的内存性能?

所以我正在写这个node.js应用程序,我试图让它超快速,并且占用内存很less。 我有很多string连接,function如下: function f(pt) { return pt.x + ' + ' + pt.y; } 如果我在应用程序的内部循环中执行了1亿次这样的操作,JavaScript引擎是否需要分配并且必须释放string' + ' 1亿次? 将这些代码重写成类似的东西,会不会是更高效的记忆方式? var plus = ' + '; function f(pt) { return pt.x + plus + pt.y; } 还是编译器只是在后台执行这个操作,还是不要紧? (我的代码实际上使用的string比“+”长得多,我只是用它作为例子)。

为什么如果道具数大于8,NodeJS对象创build的性能如此糟糕?

我想知道当创build一个具有8个以上属性的对象时,NodeJS是否有任何限制? 我做了一个基准testing,看起来如果对象有8个以上属性,性能会很差。 testing套件: https : //github.com/icebob/js-perf-benchmark/blob/master/suites/properties.js (问题结束时的完整副本) 结果: 创build1道具0%(62,695,620 rps)(平均15ns) 用8-prop-31.95%(42,662,752 rps)(平均23ns) 创build对象9 prop -95.79%(2,640,046 rps) (平均:378ns) 码: bench.add("Create object with 8 prop", () => { let opts = { prop1: 5, prop2: "", prop3: false, prop4: 1, prop5: 0, prop6: null, prop7: "Hello", prop8: 12345 }; return opts; }); bench.add("Create object with 9 prop", […]

n的有效计算在Node.js中selectk

我有一些性能敏感的代码需要计数组合的Node.js服务器上。 从这个答案 ,我用这个简单的recursion函数来计算nselectk: function choose(n, k) { if (k === 0) return 1; return (n * choose(n-1, k-1)) / k; } 那么既然我们都知道迭代几乎总是比recursion快,我写了这个函数的基础上的乘法公式 : function choosei(n,k){ var result = 1; for(var i=1; i <= k; i++){ result *= (n+1-i)/i; } return result; } 我在我的机器上运行了一些基准testing 。 下面是其中一个的结果: Recursive x 178,836 ops/sec ±7.03% (60 runs sampled) Iterative x […]

node.js误解?

从node.js页面 Node中几乎没有函数直接执行I / O,所以进程永远不会阻塞。 因为没有什么东西阻止,不太专业的程序员能够开发出快速的系统。 所以如果一个比专家程序员less的事情就像在callback中启动一个无限循环一样,它不会终止系统(最终)? 或者更现实的说,某人做了一些效率低下的事情,处理请求需要很长时间(比如半秒钟或者其他)。 感觉就像“没有任何障碍” – “快速系统”有根本的缺陷。 有人可以解释一下,在这种情况下系统将不会遇到性能问题? 好像会…