我很早以前就听说过,阅读process.env
对于Node的表现至关重要。我想知道是否有人可以澄清这种情况是否仍然存在,应该避免调用process.env还是对性能没有影响?
谢谢!
您可以使用process.hrtime()为此设置自己的测试,让我们尝试阅读很多次,看看会得到什么:
const time = process.hrtime();
const NS_PER_SEC = 1e9;
const loopCount = 10000000;
let hrTime1 = process.hrtime(time);
for (var i = 0; i < loopCount; i++)
{
let result = process.env.TEST_VARIABLE
}
let hrTime2 = process.hrtime(time);
let ns1 = hrTime1[0] * NS_PER_SEC + hrTime1[1];
let ns2 = hrTime2[0] * NS_PER_SEC + hrTime2[1];
console.log(`Read took ${(ns2 - ns1)/loopCount} nanoseconds`);
我的机器上的结果(旧的Windows Tower,Node v8.11.2):
Read took 222.5536641 nanoseconds
因此大约为0.2微秒。
这是非常快的..当我们谈论性能问题时,一切都是相对的。如果您确实需要非常频繁地阅读此内容,则最好对其进行缓存。
为了清楚起见,让我们测试两种情况:
// Cache
const test = process.env.TEST_VARIABLE;
let loopCount = 10000000; console.time("process.env cached"); for (var i = 0; i < loopCount; i++) { let result = test } console.timeEnd("process.env cached");
// No cache
loopCount = 10000000; console.time("process.env uncached"); for (var i = 0; i < loopCount; i++) { let result = process.env.TEST_VARIABLE } console.timeEnd("process.env uncached");
缓存时大约需要10毫秒,如果不使用任何变量来缓存该值,则需要2秒钟。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句