2025年6月30日
提升一下自己使用邮件索引工具的体验
我这次因为新装主机,导致自己非常在乎一些应用的性能,时常会因为某些应用的响应不及预期,而怀疑是不是自己的软硬配置存在问题。尽管作为已经有十数年从业经验的系统运维仍有这种不自信不太正常。这次是我日常使用的邮件索引工具mu。
只是在经过了一定时间长度(这个长度我不想承认)的调试之后,我在 strace 的输出中发现了一行 <... clock_nanosleep resumed>0x7ffda4495140) = 0 <2.000065> 。整段程序也正好跑了二秒多一点,合理的怀疑是硬编码休眠引起的。我跑去搜了项目代码,果然发现了对应的代码片段 std::this_thread::sleep_for(std::chrono::milliseconds(2000)); ,实锤了这个问题。这里问题在于,在我的机器上,索引一万六的邮件这个动作仅需要一百多毫秒。所以两秒就变得有点多余。
考虑到 mu 的日常场景是对几十万封以上的邮件,再加上它至少有二十年的历史。很多老用户并不会更新设备,所以两秒这个设定本身细想一下也没有什么不合适的。但对于我这种只是把电子邮箱当成一种通知手段,而且用两块固态硬盘组建系统盘的家伙来说,这个值就变得很不符合个人的预期了。
我最后加了一个简单的指数退避来平衡这个问题,测试一下,感觉效果还不错,就提了一个合并请求(github PR),不过不得不说作者写了这么多年不是白写的,他的对我提交的代码的改进确实比我这种能用就行的家伙要讲究不少。