gpt4 book ai didi

node.js - ARM 上的 NodeJS 运行一个空文件需要 26 秒

转载 作者:行者123 更新时间:2023-12-03 09:51:24 26 4
gpt4 key购买 nike

NodeJS 在我的嵌入式系统上加载需要 26 秒。

我有一个来自 Microchip 的 SOM(模块上系统)。它是 ARM 架构,运行频率为 500MHz,内存为 128 MB。

它有一个运行 Linux 并安装了 NodeJS 的 BuildRoot 镜像。

我有一个名为“index.js”的空文件。

当我运行“time node index.js”时,需要 26 秒才能完成。如果我编辑“index.js”以添加“console.log('hello');”,它需要 26 秒才能打印出消息。

所以看起来 NodeJS 需要 26 秒来加载并开始运行 JS 文件。

我运行了“strace node index.js”。对于大部分减速,它调用 mprotect 和 cacheflush 数千次:

13:41:43 cacheflush(0x309228e0, 0x309228ec, 0) = 0
13:41:43 mprotect(0x30902000, 249856, PROT_READ|PROT_EXEC) = 0
13:41:43 mprotect(0x30902000, 249856, PROT_READ|PROT_WRITE) = 0
13:41:43 mprotect(0x30902000, 249856, PROT_READ|PROT_EXEC) = 0
13:41:43 mprotect(0x30902000, 249856, PROT_READ|PROT_WRITE) = 0

这似乎是在刷新指令和数据缓存,将一段内存标记为 RX,然后标记为 RW,然后返回 RX,最后返回 RW。我的猜测是它将一个函数复制到 RAM,修改它,然后运行它。

但是使用“strace -c node index.js”表示这使用了大约 0.5 秒。我需要找到另外 25.5 秒。

如何找到另外 25 秒?

最佳答案

我在以下位置找到了预编译包: https://nodejs.org/download/release/latest-v15.x/node-v15.3.0-linux-armv7l.tar.gz

现在执行一个空脚本需要 1.6 秒。

我可以运行一个脚本来打印出 NodeJS 的编译配置,以找出与此的区别:node -e "console.log(process.config);"

下一步是找出差异并将它们合并到 BuildRoot 脚本中。

关于node.js - ARM 上的 NodeJS 运行一个空文件需要 26 秒,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65112507/

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