需求和内存:用于全局或功能范围

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了需求和内存:用于全局或功能范围相关的知识,希望对你有一定的参考价值。

我是javascript的初学者,我正在重构一些使用require的代码。我想知道如果只是在运行时间内使用了几次,那么在功能范围内只需要“外部库”是否有任何内存优势。

例如:在我现有的代码中,我使用fast-csv但我只在一个函数中使用它,它只会很少被调用。

我现在拥有的:

const csv = require("fast-csv");

function importCSV(filepath) {
       csv.fromPath(filepath, { headers: true, ignoreEmpty: true })
           .on("data", function (data) {
                // do some stuff
            })
            .on("end", function () {
                 // finish up
            });
}

这在内存使用方面是否更好?

function importCSV(filepath) {
   var csv = require("fast-csv");
       csv.fromPath(filepath, { headers: true, ignoreEmpty: true })
           .on("data", function (data) {
                // do some stuff
            })
            .on("end", function () {
                 // finish up
            });
}
答案

不,我相信这里的内存使用量几乎没有差异,因为require将内存中的模块缓存。例如,第一次调用require('fast-csv')时,它会从磁盘中读取文件。随后对require('fast-csv')的调用使用require.cache中的缓存对象。

您可以从缓存中删除该模块,但这将减慢将来的需求调用。担心内存中模块的大小似乎是一种过早的优化。

以上是关于需求和内存:用于全局或功能范围的主要内容,如果未能解决你的问题,请参考以下文章

用于在多个活动/片段中重用的全局加载器 (LoaderManager)

需求工程

如何在运行时确定共享库中全局变量的地址范围?

常用Javascript代码片段集锦

按位或运算符 | C中用于对齐内存块的用法[重复]

内存区域