为什么(新的Date())的ToString()是如此之慢的Node.js?

问题描述 投票:0回答:2

我打了一下用Node.js的我刚开始写新的东西,并坚持我,我的简单的“控制台”的应用程序需要相当长的时间作出反应。这个应用程序加载一个5MB的JSON文件,把它变成一个对象,但一切仍没有考虑的时间显著量。我进一步搜索(在一个相当短而简单的代码),使我的结论,这个单行:

this.generated_on = ( new Date() ).toString();

大约需要2.5秒执行。进一步的调查使我更不明白了。我已经将它修改为:

this.generated_on = new Date();
this.generated_on = this.generated_on.toString();

(之间console.timeLogs)中,用线toString()是接管2秒执行所述一个。于是,我再次修改了代码:

this.generated_on = new Date('2019-02-04 20:00:00');
this.generated_on = this.generated_on.toString();

而结果是周围的其他方式。 toString()只用了2毫秒,同时创造Date对象了超过2秒。

为什么这么慢?为何如此不同的结果?任何更快的方式得到格式化的当前时间字符串? (我不那么在意的执行时间为这个项目,因为它可以离线工作,但仍然是我的错误)。

node.js date tostring
2个回答
0
投票

我觉得你的开发环境是关闭或东西。为什么你的机器以缓慢的方式运行的代码,我不能告诉你。我不能复制你说的问题。

我试图基准你有上面的代码。

https://repl.it/@act/HotpinkFearfulActiveserverpages

转到这里,并尝试点击运行按钮,在顶部。

下面是我看到的结果

// Case Togehter: 
// this.generated_on = ( new Date() ).toString();
// Case Separately:
// this.generated_on = new Date();
// this.generated_on = this.generated_on.toString();

Together x 332,222 ops/sec ±7.75% (44 runs sampled)
Separtely x 313,162 ops/sec ±8.48% (43 runs sampled)

332222个操作/秒装置的操作耗时1/332222秒平均。


0
投票

我建议你使用Node.js的内置模块“绩效挂钩”。

你可以在这里找到文档:https://nodejs.org/dist/latest-v11.x/docs/api/perf_hooks.html#perf_hooks_performance_mark_name

马克每个进程从上到下,然后打印指标(单位为毫秒),你会找出实际问题

© www.soinside.com 2019 - 2024. All rights reserved.