节点8中的process.env.NODE_ENV是否仍然很慢

我很早以前就听说过,阅读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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章