节点js加载模块时的性能

Jus*_*oud 1 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 RFC4122 UUIDS

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

    return randomString;
};
Run Code Online (Sandbox Code Playgroud)

如果我从另一个模块调用此模块(即require(__ dirname +'/ random-string.js'))并且它每秒被调用数百次,那么这是一次读取磁盘每次加载logs.js或节点UUID?

jos*_*736 5

不,加载的模块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;
};
Run Code Online (Sandbox Code Playgroud)