我之前看见别人说, 在编译和启动速度上,wsl 上的 linux 都比 Windows 强,我使用同一台机器,使用 maven 编译同一个项目,实际对比了下,时间没啥差距,为什么?(注:wsl 我分配的全部核心和 16G 内存,编译的项目也复制到 wsl 内部了)。

我的 mac mini m1 ( 16+256 )倒是在编译和启动方面都有显著提升,比我的 Windows 电脑(amd R7 5800H + 32G + 512G)快一倍了

这个不绝对,有些编程语言的编译器针对 linux 系统有优化

java 编译是吃 io 还是 cpu ,node 会不会差别比较大

主要是那种喜欢创建一堆进程的构建工具跑起来差别比较大吧

maven 用什么 wsl

mac mini 主要是 io 太有优势了

win 主要是 ntfs 处理大量小文件比较慢, java 顶多就几百几千个 .class 其实还好

5800H 的性能不占优吧,7840 这个级别就好多了

他们说的编译速度差距基本是 C/C++那种编译。不过也挺扯淡的,因为影响的变量也太多了。我反正 mac 上装了 linux 容器,用 gcc 编译,实测速度也就那样

我还试过 Windows 自带的 dev drive , 用 ReFs 来存储源代码和相关库,微软自己说用于编译挺牛的,实际使用起来,效果也不明显

maven 指定下构建线程数看看,默认是单线程跑的,两者 IO 差距不大的话不会有大差异的。

主要我研究相关问题时,搜到的都是说 Windows 的文件系统比 linux 慢,我就换成 linux 试了下,没想到没啥提升,用 Windows 的 ReFs 试了下,效果也不明显,难不成这方面没啥瓶颈,可能最主要还是看 CPU 的频率吧

maven 已经设置了 -T 1C 多线程了, 但是指定线程是多模块构建用的,我是单模块编译,javac 本身好像是单线程编译的

说明你的项目编译速度已经快拉满了,再提升只能靠硬件了。
mac 不就是换了个硬件么?不要看都是 16G 就觉得内存一样,其实 mac 的内存和 win 的内存还真有区别的。

#11 ntfs 性能没有问题,msvc 编译甚至比 mingw 还快,当然有些菜鸡都不知道 msvc 怎么开多线程编译,那就没办法了。一般 windows 上编译卡住都是杀毒把磁盘卡住了,完全是误会

有没有一种可能?
WSL 的行为,不被防火墙检查,所以比较快?

主要是 io 的问题吧

因为 wsl 里面的 linux 无论用什么文件系统,最终落盘的时候都会转成 ntfs (假设你用的是这个)保存到磁盘,这一道转换都要浪费不少性能。你试试把磁盘直通 linux 看看

防火墙都关了的
我看相关文档,说两边系统是隔离的,只要不通过 /mnt 的方式来跨系统访问,应该不会进行转换吧,所以我测试也是将项目放到 wsl 里了

试试用 wsl 在 ntfs 上编译 openwrt ,会慢到你怀疑人生。

#18 编译出来的文件也要保存啊,最终可能就是你在 Windows 资源管理器里的 .vmdk 之类的文件,你也可以把编译输出文件夹挂载到 tmpfs ,把它放内存里