Требовать и память: использовать в глобальной или функциональной области - PullRequest
0 голосов
/ 16 марта 2019

Я относительный новичок в 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
            });
}

1 Ответ

0 голосов
/ 16 марта 2019

Нет, я считаю, что здесь очень мало или нет различий в использовании памяти, потому что require кэширует модули в памяти. Например, при первом вызове require('fast-csv') он считывает файлы с диска. Последующие вызовы require('fast-csv') используют кэшированный объект в require.cache.

Вы можете удалить модуль из кэша, но это замедлит будущие вызовы. Похоже, преждевременная оптимизация беспокоит размер модулей в памяти.

...