Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Performance 加载模块时的节点js性能_Performance_Node.js - Fatal编程技术网

Performance 加载模块时的节点js性能

Performance 加载模块时的节点js性能,performance,node.js,Performance,Node.js,我有几个自定义模块,每秒调用数百次,我想确保调用这些模块不会对性能造成影响 示例模块-random-string.js module.exports = function() { // Required modules var logs = require(__dirname + '/logs.js'); // Custom logger var uuid = require('node-uuid'); // Simple, fast generation of RFC

我有几个自定义模块,每秒调用数百次,我想确保调用这些模块不会对性能造成影响

示例模块-random-string.js

module.exports = function() {

    // Required modules
    var logs = require(__dirname + '/logs.js'); // Custom logger
    var uuid = require('node-uuid'); // Simple, fast generation of RFC4122 UUIDS

    var randomString = uuid.v1() + uuid.v4();
    logs.dev(randomString);

    return randomString;
};

如果我从另一个ie.require\u dirname+'/random string.js'调用这个模块,并且它每秒被调用数百次,这是不是每次都读取磁盘以加载logs.js或节点uuid?

否。模块返回值会被缓存和重用

尽管构建代码的更好方法是:

var logs = require(__dirname + '/logs.js'); // Custom logger
var uuid = require('node-uuid'); // Simple, fast generation of RFC4122 UUIDS

module.exports = function() {
  var randomString = uuid.v1() + uuid.v4();
  logs.dev(randomString);
  return randomString;
};

否。模块返回值被缓存和重用

尽管构建代码的更好方法是:

var logs = require(__dirname + '/logs.js'); // Custom logger
var uuid = require('node-uuid'); // Simple, fast generation of RFC4122 UUIDS

module.exports = function() {
  var randomString = uuid.v1() + uuid.v4();
  logs.dev(randomString);
  return randomString;
};

Node.js缓存模块,以便仅在第一次请求时加载模块。有关详细信息,请参阅。

Node.js缓存模块,以便仅在第一次请求时加载模块。有关详细信息,请参阅。

否,由require加载的模块由节点缓存,因此它不会每次都进入磁盘,但仍然没有充分的理由在每次函数调用时加载模块:仍然存在一些与require调用和查找缓存模块对象相关的开销

为什么不在模块顶部加载依赖项呢

var logs = require(__dirname + '/logs.js'); // Custom logger
var uuid = require('node-uuid'); // Simple, fast generation of RFC4122 UUIDS

module.exports = function() {

    var randomString = uuid.v1() + uuid.v4();
    logs.dev(randomString);

    return randomString;
};
不,由require加载的模块是由节点缓存的,因此它不会每次都进入磁盘,但仍然没有充分的理由在每次函数调用时加载模块:仍然存在一些与require调用和查找缓存模块对象相关的开销

为什么不在模块顶部加载依赖项呢

var logs = require(__dirname + '/logs.js'); // Custom logger
var uuid = require('node-uuid'); // Simple, fast generation of RFC4122 UUIDS

module.exports = function() {

    var randomString = uuid.v1() + uuid.v4();
    logs.dev(randomString);

    return randomString;
};