窗户上的纱线慢了5倍

时间:2016-11-12 18:27:36

标签: javascript windows yarnpkg

当我将新软件包添加到已经运行yarn install的现有安装时,添加新依赖项需要5分钟,这与我刚刚yarn install没有{的情况一样慢{1}}还有。

这是正常的吗?

我在Windows 10 x64上使用Yarn 0.17.9。我确实让Windows Defender忽略了我的项目目录和yarn全局缓存目录。

编辑:这是我做的一些基准测试结果。基于它们,似乎纱线添加速度实际上要快30-40%,真正的问题只是纱线在Windows上慢了500%

编辑2:我已经确认没有为项目和纱线缓存目录启用索引。但现在我已将纱线从0.16.1升级到0.17.9,并且Windows的速度提高了35-50%!但它仍然比Linux慢350-400%。我更新了基准测试。

Windows性能问题似乎存在Github问题:https://github.com/yarnpkg/yarn/issues/990

基准:

-

Windows - 纱线安装(缓存):

node_modules

Ubuntu - yarn install(缓存):

Done in 172.29s.

-

Windows - 纱线添加lodash:

yarn install  48,75s user 11,32s system 117% cpu 51,161 total

Ubuntu - 纱线添加lodash:

Done in 143.11s.

-

仅供参考,Ubuntu基准测试在NTFS驱动器上的同一文件夹上运行。

用于基准测试的项目:https://github.com/amcsi/szeremi

5 个答案:

答案 0 :(得分:15)

在工作文件夹和纱线缓存文件夹上禁用Windows搜索索引以及完全禁用Windows防御程序或在文件夹上禁用Windows应该会显着提升性能。我对使用SSD驱动器的类似系统的性能下降了30-50%,原来时间与你的一样。

在Yarn缓存文件夹中禁用它也可以为您提供一些加速。默认情况下,yarn cache dir命令%USERPROFILE%\Local Settings\Yarn\cache显示其位置。

要在文件夹上禁用搜索索引,请在资源管理器中找到它,右键单击,然后选择属性 - 常规 - 高级,取消选中"允许此文件夹中的文件除了文件属性之外还有内容编入索引"复选框,然后应用更改。

这个性能问题已存在于github纱线上(10月' 2016),目前仍然开放:https://github.com/yarnpkg/yarn/issues/990

答案 1 :(得分:2)

我的经历...

执行 yarn start 非常缓慢。

我的设置。 我在 Windows 10 家庭版上运行 WSL2 Ubuntu 20。 我的 WSL src 目录有一个指向 windows c:\Users\chai 的符号链接(与 WSL 拥有的任何文件系统相反,即本机 WSL 文件系统)。 即。

Filesystem      Size  Used Avail Use% Mounted on
C:\             476G  395G   82G  83% /mnt/c

我正在运行通过 WSL2 Ubuntu 安装的纱线(即它是 linux 版本,而不是纱线的 windows 版本)。 V v 慢。

我尝试将相同的 src 文件复制到非符号链接目录中。 IE。在 ~/tmp 下,这是一个 WSL 文件系统,而不是在 windows 文件系统下。

Filesystem      Size  Used Avail Use% Mounted on
/dev/sdb        251G   11G  228G   5% /

现在的速度符合预期......即。正常(或相对于之前的行为,快得令人眼花缭乱)。

所以我现在在我的 React 项目中使用后一种设置。

答案 2 :(得分:0)

我曾经有过同样的问题。过去只花30分钟即可安装一个软件包。我将项目放在外部驱动器和网络驱动器上,尝试添加扫描病毒异常路径,打开防火墙等。没有一个可以提高速度。但是,一旦我git clone到,请说C:/ New Folder / my repo。花了1.5秒。我希望这可以为某些开发人员解决此问题。

答案 3 :(得分:0)

对我来说,从 WSL2 降级到 WSL1。

在 WSL2 上安装我的样板花了 890 秒

在 WSL1 上 - 245 秒。

在独立的 Ubuntu 上 - 130 秒。

https://github.com/microsoft/WSL/issues/4197

答案 4 :(得分:-1)

是的,这是正常的,但原因是你的网络设置,而不是你的操作系统。

打开Wireshark,你会发现纱线比npm提出的要求更少