1 mxT52CRuqR6o5 2023-04-03 15:47:23 +08:00 ntfs 的问题 |
2 AOK123 OP @mxT52CRuqR6o5 感谢,但我不是很懂文件系统,有个疑问:WSL 也是装在同一个硬盘上的,应该也是 ntfs 吧? |
![]() | 3 codehz 2023-04-03 15:57:35 +08:00 via iPhone 杀毒软件扫描文件的问题,每次创建 /打开 /写入文件都要过一个文件系统过滤器然后才会返回程序 |
![]() | 4 Eiden 2023-04-03 16:03:07 +08:00 如果你说的 wsl 是指 wsl2 的话, wsl2 是虚拟机, 文件系统不是 ntfs |
5 busier 2023-04-03 16:03:41 +08:00 杀毒软件的锅,禁用杀毒软件(包括自带的)就会快很多!另外 Windows 删除目录也会先扫描目录结构,然后在删除! 如果删除大量文件,还不如 cmd 里面 rd /s 来的快! |
![]() | 6 coderluan 2023-04-03 16:06:47 +08:00 python 没代码不确定。但是删除那个,你不能拿 cli 和 gui 比啊,(rm -rf) 得和(del /s)比才公平, |
![]() | 7 marcong95 2023-04-03 16:08:09 +08:00 你要对比 rm -rf 的话,为何不对比 Windows 下对应的指令呢,例如 powershell 下 Remove-Item -Recurse -Force <路径> 迫于 npm/node_modules 经常需要删除超大量文件,GUI 下的删除即便是 Shift + Delete 可能也有大量需要预处理的情况,主观感觉用指令会快一点 |
![]() | 8 FozillaMox 2023-04-03 16:10:17 +08:00 via iPhone 同感。我分别用 Windows 和 macOS 对同一台文件系统为 FAT32 的设备进行文件操作,Windows 下就连简单的复制粘贴都比 macOS 慢很多。 |
![]() | 9 encro 2023-04-03 16:10:26 +08:00 用界面要统计进度和空间,如果很多小文件,那么会慢。 而且杀毒软件确实非常大影响。 |
10 0attocs 2023-04-03 16:23:22 +08:00 via iPhone 还有 explorer.exe 本身的效率问题,加载的插件和层层逻辑太多了。 |
![]() | 11 cwcc 2023-04-03 16:29:29 +08:00 WSL2 的话,Linux 的文件会保存到 VHDX 虚拟硬盘中。 如果将文件放入虚拟硬盘中且同时用 WSL2 操作文件,效率会高很多。 如果将文件放在 Windows 的硬盘分区中,操作是走网络挂载会影响性能。 如果是 Windows 操作 WSL2 内的文件,也是走的网络挂载,性能可能被 Windows 的杀毒软件和多系统之间的 IO 影响。 如果是 Windows 操作 Windows 的文件,有 GUI 也会影响性能,有时候 Explorer 卡住了也会导致无法正常满速传输。 |
![]() | 12 mmdsun 2023-04-03 16:30:33 +08:00 ![]() |
13 NessajCN 2023-04-03 16:35:26 +08:00 @marcong95 很认真地说,我认为对比指令执行速度时必须包括敲这些指令的时间。更极端一点,还应该比较记住并能熟练使用这些指令的时间...... |
14 em70 2023-04-03 16:39:04 +08:00 命令行跟 GUI 比速度? linux 用 FTP 客户端删除,一样慢死,这是 GUI 需要处理过多消息的缘故,你用 cmd 跟 shell 速度一样的 |
16 woyaoying 2023-04-03 16:45:08 +08:00 ![]() 禁止 windows 杀毒实时扫描 |
![]() | 17 lisxour 2023-04-03 16:52:43 +08:00 ![]() @aptupdate 然而暂停功能是真的难用,你拷大文件或者超多文件时,你一点暂停,运气好卡几分钟,运气不好,无限期卡住,重新开始传输也是 |
18 Kiriya 2023-04-03 16:56:44 +08:00 windows 在操作大量文件时会先统计文件数量及文件大小,这会浪费大量时间,所以 Windows 移动复制删除大量文件推荐使用 fastcopy 替代资源管理器,可以省略统计文件大小所浪费的时间 |
![]() | 19 kkocdko 2023-04-03 17:01:14 +08:00 虽然很多人确实不知道这件事,但是你的问题无论是用 New Bing 还是传统的搜索引擎,都能得到正确答案。 |
20 PrinceofInj 2023-04-03 18:46:09 +08:00 @mmdsun 这个暂停挺好用的。有时候从 U 盘上拷东西开始拷贝后才发现是 2.0 的口,暂停一下,插到 3.0 得上,然后继续,速度刷的一下子就上去了,超好用。 |
21 0attocs 2023-04-03 18:57:23 +08:00 via iPhone @NessajCN pwsh 可以说是非常现代非常易用的 shell 了,且不说类似 fish/zsh 的 tab 补全和提示,pwsh 的函数 /cmdlet 是可以自动提示 /补全 /预测参数的,而且 pwsh 不区分大小写,常用命令都有 alias ,参数按前缀匹配,这一条命令纯手打也就是 rm -r -fo 。 |
22 0attocs 2023-04-03 19:04:31 +08:00 via iPhone @NessajCN 要比较学习曲线的话,pwsh 首先文档齐全,其次 verb-noun 的全名绝对更好记,加上 tab 提示 /补全,函数名 alias ,参数名前缀匹配,-?帮助,现代化的语法和语言特性,绝对是更好学的那个。 |
![]() | 23 newmlp 2023-04-03 19:09:34 +08:00 你在 Windows 下用命令删除文件和目录也可以秒删 |
![]() | 24 newmlp 2023-04-03 20:36:43 +08:00 @mxT52CRuqR6o5 和文件系统没多大关系,系统 api 具体实现不同 |
26 mxT52CRuqR6o5 2023-04-03 20:53:33 +08:00 @newmlp 前端开发表示并不能,同一个项目,在 windows host 上删除 node_module 还没有在 windows host 下虚拟的黑苹果 guest 系统里删的快 |
![]() | 27 newmlp 2023-04-03 21:12:37 +08:00 @mxT52CRuqR6o5 为什么我这里的 Windows 用 rmdir 能秒删 node_module 呢[二哈]有没有可能是不是你不会删 |
![]() | 29 Chipmunker 2023-04-03 21:39:39 +08:00 @0attocs pwsh 启动太慢了。 |
30 mxT52CRuqR6o5 2023-04-03 21:43:34 +08:00 via Android |
31 justaname 2023-04-03 22:07:59 +08:00 via iPhone @0attocs 至少对我来说我觉得 bash 以及 gnu 相关的那一套命令好学很多,pwsh 的面向对象设计经常用起来很难受……我需要查文档才知道具体应该怎么调用和控制对象,如果有外部命令需要交互的话那就更是乱成一团。相反 Linux shell 的设计逻辑就是字符串流,在大部分需要脚本解决的任务上我觉得方便很多 |
![]() | 32 lusi1990 2023-04-03 22:42:51 +08:00 都用命令操作, window 也慢. 文件系统的原因 |
![]() | 33 wisetc 2023-04-03 22:52:22 +08:00 via iPhone 问题存在,我也有类似的疑惑 |
34 Donahue 2023-04-03 23:46:27 +08:00 很久没用过 windows 了哈哈,这个系统用来编程感觉挺蛋疼的 |
![]() | 35 est 2023-04-03 23:55:04 +08:00 因为 explorer.exe 是三哥写的 shell 。。你试试命令行 rd /s /q C: 看看快不快。 |
37 0attocs 2023-04-04 05:27:24 +08:00 @Chipmunker #22 这个不可避免吧,我配置好的 zsh 甚至 bash 启动和 pwsh 差不多慢,pwsh 无配置启动(-nop )也挺快的。 |
38 0attocs 2023-04-04 05:38:05 +08:00 @justaname #23 前面提到的也都是在 windows 下用 pwsh 。你如果说的是在 linux 下的话,在 gnu 的环境里当然是 bash 更搭,但学习记忆曲线还是不低的。想用 pwsh 在 linux 下做交互确实是要学习那一套 best practice ,我也尽量不碰,只是偶尔用 pwsh 做一些简单的 parallel processing 。 |
![]() | 39 rm0gang0rf 2023-04-04 09:18:06 +08:00 用 c 试试? |
![]() | 40 yolee599 2023-04-04 09:20:52 +08:00 via Android 因为还要计算进度条用来显示 [有进度条反而速度更慢?有关进度条你不知道的秘密-哔哩哔哩] https://b23.tv/qPT3XzL |
41 Huelse 2023-04-04 09:21:57 +08:00 NTFS 文件系统有啥问题?这个文件系统微软用了多少年了,期间 linux 都换了不知道多少个文件系统 |
![]() | 42 newmlp 2023-04-04 09:33:41 +08:00 @mxT52CRuqR6o5 我可用是机械硬盘。。。。 |
![]() | 44 kindjeff 2023-04-04 09:44:24 +08:00 文件放在哪,wsl2 和 win 宿主机互相之间访问都要走网络奥 |
45 mscsky 2023-04-04 11:24:54 +08:00 有没有可能 Windows 也能用命令行删除 |
![]() | 46 jacy 2023-04-04 11:44:48 +08:00 把 windows defender 关掉 |
![]() | 47 BrettD 2023-04-04 12:30:25 +08:00 via iPhone @newmlp 那为什么在 WSL 里面 git checkout 一个大仓库,比如 LLVM ,比在 Windows 里面直接在 NTFS 上 checkout ,只需要接近一半时间? |
![]() | 48 newmlp 2023-04-04 12:41:56 +08:00 @BrettD 原因有很多,我甚至可以认为网络环境不一样,但是你非要说和文件系统有关系,那似乎我也无法反驳,因为你这个简单的对比中不可控的变量太多了 |
![]() | 49 BrettD 2023-04-04 12:44:29 +08:00 via iPhone @newmlp 对比方式是先把一样的仓库 clone 下来,然后比较的是从一个 tag checkout 到另一个 tag 的时间,整个过程是全本地的文件操作。我的印象就是 NTFS 操作大量小文件的效率非常低。VHDX 就是一个文件,所以没有这些在 NTFS 操作大量小文件的瓶颈。 |
![]() | 50 Yeen 2023-04-04 15:12:50 +08:00 建议写 C++代码,直接调用系统 api 操作。 |