2016-09-22 12 views
9

我正在单核windows 7机器上运行电子应用程序。似乎每当我使用fs库执行几乎任何文件I/O时,CPU对电子进程的峰值约为100%,执行文件I/O可能需要一分钟时间。Node.js针对单核Windows 7机器的电子应用程序在文件I/O上运行缓慢

一个功能,其特别是慢fs.readFileAsync()。我正在阅读的文件非常小,但它似乎需要很长时间才能完成。

我也在双核Windows 8.1,Windows 10和Ubuntu 15.10的Windows 7上运行这个确切的代码,并没有任何这些操作系统遇到这个问题,它似乎只是单核Windows 7机器。 (所以我几乎肯定有代码写入没有问题)。

有谁知道这可能是为什么发生?有没有解决这个问题的方法?核心数量影响电子应用的性能似乎很奇怪。再次,这只是Windows 7,所以单核Windows 8.1或Windows 10机器不会出现这种行为。

+0

我认为我们正在经历与单核心的Windows Server 2012 R2的虚拟机上的99%的CPU峰值同样的问题。我将在几天内改变我们已经运行到多个核心的所有4个实例。希望它可以解决我们Electron应用程序的当前蜗牛速度问题。 –

+0

我可能在启动时(基于Electron)在VS Code上看到类似的问题。在我的情况下,使用任务管理器将Code.exe进程的优先级降低到接近100%CPU几小时,立即“固定”这个问题并让VS代码开始。为另一个使用CPU的Code.exe进程做同样的事情却没有做任何事情。罪魁祸首似乎是最初的Code.exe过程。 – eug

回答

0

电子不主流程处理任务那样好。电子也不是多线程的。

即使你是单核的,我会建议使用节点的“child_process”运行文件的读/写(或与此有关的任何任务重)电子的主要过程之外。这应该解决应用程序中的任何奇怪的打嗝或口吃,并且通常会加快速度。

还铭记保持这种电子基于铬节点是基于V8是Chrome的核心。这些因素结合在一起,使得电子在自然界非常耗费资源,性能一般是电子的下行。明显的好处是能够快速创建跨平台的应用程序。一台1核心机器可能不适合运行1个电子应用程序。我们还没有一台核心机器在做什么? 10年?

相关问题