1 个不稳定版本
使用旧的 Rust 2015
0.2.0 | 2018年11月1日 |
---|
#11 in #du
11KB
176 代码行
dup
替代 du -sh
的最小化、快速工具。
dup
是一个非常简单的程序,用于计算当前目录的总大小。它是 du -sh
的并行版本。在我的 8 核笔记本电脑上,它比 du
快约九倍,在热缓存的情况下快两倍以上。
> dup
14.56 GB (14556806983 bytes)
基准测试
以下基准测试是在一个适度大的文件夹(15GB,100k 个目录,400k 个文件)上使用 hyperfine 进行的。对于更小的文件夹,实际上并不感兴趣,因为所有程序都会在合理的时间内完成,这不会打断你的工作流程。
除了 du
和 dup
之外,我们还比较了 tin-summer (sn
) 和 dust
。这两个也是用 Rust 编写的,并且比 dup
提供了更多的功能(查看它们!)。sn
的最佳线程数(-j
选项)是通过 hyperfine --parameter-scan
确定的。
冷缓存磁盘
sudo -v
hyperfine --prepare 'sync; echo 3 | sudo tee /proc/sys/vm/drop_caches' \
'dup' 'sn p -d0 -j8' 'du -sb' 'dust -d0'
(sudo/
sync/
drop_caches
命令是一种在基准测试运行之间清除文件系统缓存的方法)
命令 | 平均 [s] | 最小…最大 [s] |
---|---|---|
dup |
1.729 ± 0.012 | 1.717…1.756 |
sn p-d0-j8 |
9.778 ± 0.098 | 9.587…9.904 |
du-sb |
16.016 ± 0.067 | 15.923…16.147 |
dust-d0 |
19.845 ± 0.466 | 19.428…20.948 |
热缓存磁盘
在热缓存磁盘上,差异较小
hyperfine --warmup 5 'dup' 'sn p -d0 -j8' 'du -sb' 'dust -d0'
命令 | 平均 [ms] | 最小…最大 [ms] |
---|---|---|
dup |
465.9 ± 14.7 | 446.5…487.4 |
sn p-d0-j8 |
596.4 ± 12.2 | 579.2…615.9 |
du-sb |
1100.3 ± 20.5 | 1086.9…1153.0 |
dust-d0 |
3560.1 ± 27.8 | 3521.7…3612.8 |
安装
基于 Debian 的系统
wget "https://github.com/sharkdp/dup/releases/download/v0.1.0/dup_0.1.0_amd64.deb"
sudo dpkg -i dup_0.1.0_amd64.deb
其他发行版
查看 发布页面 以获取二进制构建。
依赖关系
~4–6MB
~102K SLoC