我在玩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秒钟。
为什么这么慢?为什么会有如此不同的结果?有没有更快的方法来获取格式化的当前时间字符串? (我不太在乎这个项目的执行时间,因为它可以脱机工作,但仍然困扰着我)。
答案 0 :(得分: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)
332,222 ops / sec意味着操作平均花费了1 / 332,222秒。
答案 1 :(得分:0)
我建议您使用node.js内置模块“ Performance hooks”。
您可以在此处找到文档:https://nodejs.org/dist/latest-v11.x/docs/api/perf_hooks.html#perf_hooks_performance_mark_name
从上至下标记每个进程,然后打印指标(以毫秒为单位),您将找出实际的问题