·
116 views
· ·

Say Goodbye to Space Sniffer

This article is part of Myriad Dreamin Blog 2025-05.



Space Sniffer 是一个很不错的工具,但是最近我不满足于他较慢的速度,自己写了一个扫描工具。发布页面在这里

Backend API: Event Iterator

我将shr分为了前端和后端。后端接受参数,扫描文件系统,返回一个迭代器,每项是一个事件更新,这样前端就能不断从迭代器中获取事件,更新UI。

CLI Frontend

shr-clishr-cli是一个类dudu的命令行工具,使用了shrshr的后端API。它支持所有主流平台。

Slint GUI Frontend

shr-browsershr-browser是一个Slint GUI,使用了shrshr的后端API。出乎意料的是,它也支持所有主流平台。

Figure 1: Slint GUI

性能

在我的机器上,shr-browsershr-browser比已有的工具dustdust快了大约6.1% (77秒对比82秒)。似乎并没有明显优势。

可能的改进

shrshr的IO瓶颈在于std::fs::read_dirstd::fs::read_dir,可能可以使用比tokio更好的后端,例如compio。

shrshr的内存瓶颈在于保存了太多完整路径。实测5000k个文件(800G)时,内存占用在1.5GB左右。这意味着,45G的内存可以支持32TB的完整预览,已经基本满足扫全盘的需求了。未来如果有可能,会有限改进这一点。

后记

已经使用过几次了,速度很快,UI也很流畅。但是每次扫盘的时候,都主要是扫描到大量占用的cargo cache。感觉我只是需要一个好的cargo缓存清理工具。

Comments

  1. 云楼汐 at

    可以试试WezTree,也很快 :)

  2. paran3xus at

    好像是WizTree罢