本文是Dolphin 26.08技术更新系列的下半部分,聚焦可量化性能提升。前文已介绍界面功能与行为变更,本篇则揭示底层框架的优化成果。Dolphin本身不直接处理文件操作,其性能表现主要由KIO框架决定——对比6.25版(随26.04发布)与6.29版(随26.08发布),后者历经4次框架迭代和294次提交。此外还将预览6.30版的重大改进。
所有数据均在相同硬件环境测试,采用相同编译方式,通过多轮对比确保准确性。非整数值保留原样,未做向上取整处理。
在26.04版发布后,团队引入LeakSanitizer工具检测内存泄漏。此次更新完成了大量修复,并建立持续集成(CI)机制:KIO框架在每次合并请求中自动运行LeakSanitizer测试,有效防止问题复发。
Sebastian Englbrecht是本周期贡献最多的开发者,其工作集中在对象生命周期管理:终止未完成的KIO任务、清理Konsole组件、优化KIO缓存销毁顺序,并修复未释放的内存分配。他还新增了烟雾测试、8个位置面板单元测试,并禁止裸用QTest::qWait(),代之以信号触发等待机制,提升CI可靠性。Wendi Gan则修复了KConfig::sync()在退出时的悬垂指针问题,关闭了516481和518433号缺陷。
作者本人也参与了Dolphin和KIO的优化:在Dolphin中修复了信息面板销毁时的文件夹统计任务、版本控制插件悬垂指针、文件夹图标动作子菜单泄漏及回收站设置页面内存泄漏。在KIO方面,除了启用CI检测外,还解决了三个用户可见问题:
FilePreviewJob未停止重复计时器导致异常触发KDirModel在目录列表延迟完成时的无效指针引用核心改进包括四项关键技术优化:
针对本地文件,KIO框架将file工作线程集成至应用程序进程,通过全新ThreadConnectionBackend内存队列替代原有套接字通信。kio_file模块直接传递所有权字节缓冲区而非复制数据,实现零拷贝读取(详见7月性能博客)。
CopyJob不再对每个文件重复探测目标文件系统类型。原实现中每文件需调用KFileSystemType::fileSystemType(),在libmount环境下需解析整个挂载表,导致N个文件需解析N次/proc/self/mountinfo。优化后仅探测一次,在39个挂载点环境下,单次解析耗时约57微秒,且耗时随挂载点数量线性增长。
目录缓存机制从保留10个目录压缩至3个,仅保留实际需要的上一级或上两级目录。同时新增3分钟未访问自动清理机制,避免如50000张图片目录的无效内存占用。
UDSEntry数据结构拆分为独立数字向量和字符串向量,每字段节省1字节。加载时按实际内容动态调整向量大小,避免原实现中数字向量过度分配、字符串向量预留不足的问题。
关注微信号:智享开源 ,及时了解更新信息。
原文链接:https://blogs.kde.org/2026/08/27/dolphin-26.08-and-kio-part-two-what-got-faster-and-smaller/
你必须 登录 才能发表评论.
| 微信捐赠 | 支付宝捐赠 |
|---|---|
![]() |
![]() |
扫码关注公众号:智享开源

还没有任何评论,你来说两句吧!