gpt4 book ai didi

node.js - for循环中的Nodejs延迟/中断

转载 作者:搜寻专家 更新时间:2023-11-01 00:00:03 25 4
gpt4 key购买 nike

我想写一个记录器(请不要评论为什么和“使用......”)但我对 nodejs(事件?)loop/forEach 感到困惑。

例如:

for(var i = 0; i<100; i++){
process.stdout.write(Date.now().toString() + "\n", "utf8");
};

output as: 1466021578453, 1466021578453, 1466021578469, 1466021578469

问题:16ms 的 Delay 是从哪里来的?我该如何防止这种情况发生?

编辑:Windows 7,x64; (在 Ubuntu 15 上延迟,最大 2ms)

最佳答案

sudo ltrace -o outlog node myTest.js

这可能比您想要的更多。调用 Date.now() 在我的机器上转换为 clock_gettime。您想查看对 clock_gettime 的后续调用之间的内容。您还写出到 STDOUT,每次这样做都会产生开销。您可以在 ltrace 下运行整个过程以查看发生了什么,并使用 -c 获得摘要。

对我来说,如果不在 ltrace 下运行,它会在 3 毫秒内运行。

% time     seconds  usecs/call     calls      function
------ ----------- ----------- --------- --------------------
28.45 6.629315 209 31690 memcpy
26.69 6.219529 217 28544 memcmp
16.78 3.910686 217 17990 free
9.73 2.266705 214 10590 malloc
2.92 0.679971 220 3083 _Znam
2.86 0.666421 216 3082 _ZdaPv
2.55 0.593798 206 2880 _ZdlPv
2.16 0.502644 211 2378 _Znwm
1.09 0.255114 213 1196 strlen
0.69 0.161741 215 750 pthread_getspecific
0.67 0.155609 209 744 memmove
0.57 0.133857 212 631 _ZNSo6sentryC1ERSo
0.57 0.133344 226 589 pthread_mutex_lock
0.52 0.121342 206 589 pthread_mutex_unlock
0.46 0.106343 207 512 clock_gettime
0.40 0.093022 204 454 memset
0.39 0.089857 216 416 _ZNSt9basic_iosIcSt11char_traitsIcEE4initEPSt15basic_streambufIcS1_E
0.22 0.050741 195 259 strcmp
0.20 0.047454 228 208 _ZNSt8ios_baseC2Ev
0.20 0.047236 227 208 floor
0.19 0.044603 214 208 _ZNSt6localeC1Ev
0.19 0.044536 212 210 _ZNSs4_Rep10_M_destroyERKSaIcE
0.19 0.044200 212 208 _ZNSt8ios_baseD2Ev

我不确定为什么那里有 31,690 个 memcpy 和 28544 个 memcmp。这似乎有点过分,但也许只是 JIT 启动成本,至于运行时成本,您可以看到对 clock_gettime 的调用有 512 次。也不知道为什么会有那么多调用,但您可以看到 clock_gettime 中丢失了 106 毫秒。祝你好运。

关于node.js - for循环中的Nodejs延迟/中断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37845048/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com