Tag: 性能

提高networking速度并连接到node.js服务器时出现意想不到的行为

我有一个简单的node.js服务器,如: var app = require('express')(); var compression = require('compression'); app.use(compression()); app.get('/', function(request, response) { response.send('<!DOCTYPE html>…….'); } app.listen(2345); 我发送的html是2.4kB(压缩时为1.2kB)。 当testing不同的networking速度(使用开发工具),我得到这个意外的行为: 50kbps: Latency 600ms, download 1ms 250kbps: Latency 300ms, download 0.6ms 750kbps: Latency 100ms, download 100ms 2Mbps: Latency 10ms, download 200ms 32Mbps: Latency 5ms, download 210ms 当网速在250kbps之后增加时,我不认为下载时间应该增加。 到底是怎么回事? 再看看如果我删除压缩会发生什么: var app = require('express')(); app.get('/', function(request, response) […]

为什么在新节点版本中使用字母数字键创build对象的速度太慢?

我在不同的节点版本中运行这个testing: function test() { var i; var bigArray = {}; var start = new Date().getTime(); for (i=0; i<100000; i+=1) { bigArray[i] = {}; var j= Math.floor(Math.random() * 10000000); bigArray[i]["a" + j] = i.toString(32); if (i % 1000 === 0) console.log(i); } var end = new Date().getTime(); var time = end – start; console.log('Execution time: ' […]

在NodeJS中创build对象的build议方式是什么?

我正在构build一个request模块的组合,但是我不确定有什么关于构buildJS for Node的对象的最佳实践。 选项1: function RequestComposite(request) { return { get: function (url) { return request.get(url); } } } var comp = RequestComposite(request); 注意:我知道我应该以asynchronous方式调用一个CB,但为了便于解释,我将它返回… 选项2: function RequestComposite(request) { this.request = request; } RequestComposite.prototype.get = function (url) { return this.request.get(url); }; var comp = new RequestComposite(request); 备选案文3: var RequestComposite = { init: function (request) { this.request = […]

将对象的所有键都变成小写的最好方法是什么(最有效)?

我已经想出来了 function keysToLowerCase (obj) { var keys = Object.keys(obj); var n = keys.length; while (n–) { var key = keys[n]; // "cache" it, for less lookups to the array if (key !== key.toLowerCase()) { // might already be in its lower case version obj[key.toLowerCase()] = obj[key] // swap the value to a new lower case […]

NodeJ比Clojure更快吗?

我刚开始学习Clojure。 我注意到的第一件事就是没有循环。 没关系,我可以复发。 那么让我们来看看这个函数(来自Practical Clojure): (defn add-up "Adds up numbers from 1 to n" ([n] (add-up n 0 0)) ([ni sum] (if (< ni) sum (recur n (+ 1 i) (+ i sum))))) 为了在Javascript中实现相同的function,我们使用如下循环: function addup (n) { var sum = 0; for(var i = n; i > 0; i–) { sum += i; } […]

JavaScript之间的性能差异等于(==)和三等于(===)

在JavaScript中,使用double equals( == )与使用triple equals( === )之间是否存在性能差异? 例如: if (foo == bar) vs if (foo === bar)

为什么绑定比闭包慢?

以前的海报在Javascript中使用Function.bind vs Closure问题:如何select? 并收到了这个答案的一部分,这似乎表明绑定应该比closures更快: 范围遍历意味着,当您要获取存在于不同范围内的值(variables,对象)时,因此会增加额外开销(代码执行速度会变慢)。 使用绑定,你正在调用一个现有的范围的函数,所以范围遍历不会发生。 两个jsperfs表明绑定实际上比闭包慢得多。 这是作为对上述评论发布 而且,我决定写我自己的jsperf 那么为什么要这么慢(铬含量70%以上)呢? 既然速度不快,closures可以达到同样的目的,应该避免绑定?

node.js与ASP.NET Core性能testing的意外结果

我正在用node.js和asp.net-core编写的两个(有点)hello世界项目做一个快速压力testing。 他们都在生产模式下运行,没有logging器连接到他们。 结果是惊人的! 即使在做了一些额外的工作之后,ASP.NET核心的performance也优于node.js应用,而node.js应用只是渲染一个视图。 应用程序1: http://localhost:3000/nodejs node.js 使用 :node.js,express和vash渲染引擎。 这个端点的代码是 router.get('/', function(req, res, next) { var vm = { title: 'Express', time: new Date() } res.render('index', vm); }); 正如你所看到的,除了通过timevariables发送当前date到视图之外,它什么都不做。 应用程序2: http://localhost:5000/aspnet-core asp.net core 使用 :ASP.NET核心,默认模板定位dnxcore50 然而,这个应用程序不只是呈现一个页面上的date。 它生成5段各种随机文本。 理论上这应该比nodejs应用稍微重一点。 这是渲染这个页面的动作方法 [ResponseCache(Location = ResponseCacheLocation.None, NoStore = true)] [Route("aspnet-core")] public IActionResult Index() { var sb = new StringBuilder(1024); […]