【问题标题】:Achieve best performance when passing variables through different node.js modules/files通过不同的 node.js 模块/文件传递变量时获得最佳性能
【发布时间】:2015-09-04 00:53:10
【问题描述】:

在节点应用程序中,您通常会像这样开始加载一些模块:

var express = require('express')
  , app     = express()
  , mongodb = require('mongodb')
  , http    = require('http');

现在,假设您有一个如下所示的 routes.js 文件:

module.exports = function(app) {
  app.get('/', function(req, res) {
    res.render('homepage');
  });
  // other routes
};

因此,当您调用该 routes.js 文件时,您会传递 app var:

require('./routes')(app);

我的问题是:那里发生了什么?将 app 变量传递给 routes 模块时是否存在资源消耗?我知道 node.js 缓存模块,但我想知道这如何影响它们之间传递的变量,我想知道以下方法是否有效:

让我们开始加载一些模块,但让我们以不同的方式来做:

var _ = {};

_.express = require('express');
_.app     = _.express();
_.mongodb = require('mongodb');
_.http    = require('http');

Routes.js:

module.exports = function(_) {
  _.app.get('/', function(req, res) {
    res.render('homepage');
  });
  // other routes
};

调用 routes.js:

require('./routes')(_);

显然 _ 变量会很大,但它会包含您在任何模块中可能需要的任何内容。所以我想知道传递变量的大小是否会影响性能,在这种情况下传递比需要更多的数据会很愚蠢。

我寻求在我的应用程序中实现可实现的最佳性能,同时我尝试在编写代码时简化事情,所以任何可能对此有所帮助的建议,或任何关于它在 node.js 中如何在幕后工作的解释都将不胜感激.

提前致谢。

【问题讨论】:

  • 我不想保证任何事情,但是您不传递对象,而是传递它的引用。所有引用的大小都是一样的
  • 如果你说的最终是真的(而且它是有道理的),那正是我想知道的。我会调查的。谢谢!

标签: javascript node.js performance


【解决方案1】:

here

tl;dr:对象通过引用而不是值传递。因此,当您将同一个对象多次传递给多个模块时,您不会增加内存消耗。

【讨论】:

  • 似乎它不是纯粹的传递引用(根据该问题的答案),但它的行为至少对于我的用例而言确实如此。它的工作原理非常有趣。谢谢!
猜你喜欢
  • 1970-01-01
  • 2018-09-10
  • 2013-03-20
  • 2014-12-16
  • 2011-09-16
  • 1970-01-01
  • 2021-08-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多