#du #sh #dup #filesystem #cache

app du-dup

替代 'du -sh' 的最小化、快速工具

1 个不稳定版本

使用旧的 Rust 2015

0.2.0 2018年11月1日

#11 in #du

MIT/Apache

11KB
176 代码行

dup

Build Status

替代 du -sh 的最小化、快速工具。

dup 是一个非常简单的程序,用于计算当前目录的总大小。它是 du -sh 的并行版本。在我的 8 核笔记本电脑上,它比 du 快约九倍,在热缓存的情况下快两倍以上。

> dup
14.56 GB (14556806983 bytes)

基准测试

以下基准测试是在一个适度大的文件夹(15GB,100k 个目录,400k 个文件)上使用 hyperfine 进行的。对于更小的文件夹,实际上并不感兴趣,因为所有程序都会在合理的时间内完成,这不会打断你的工作流程。

除了 dudup 之外,我们还比较了 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