Gentoo项目引入了Portage 3.0包管理系统

稳定化 包管理系统发布 波蒂奇3.0,用于分布 Gentoo Linux。 所提出的主题总结了向 Python 3 过渡和终止对 Python 2.7 支持的长期工作。

除了终止对 Python 2.7 的支持之外,另一个重要的变化是包含 优化,这使得与确定依赖关系相关的计算速度加快了 50-60%。 有趣的是,一些开发人员建议用 C/C++ 或 Go 重写依赖解析代码以加快其运行速度,但他们不费吹灰之力就解决了现有问题。

对现有代码的分析表明,大部分计算时间都花在使用一组重复的参数调用 use_reduce 和 catpkgsplit 函数上(例如,catpkgsplit 函数被调用 1 到 5 万次)。 为了加快速度,使用字典缓存这些函数的结果。 缓存存储的最佳选择是内置的 lru_cache 函数,但它仅在从 3.2 开始的 Python 版本中可用。 为了与早期版本兼容,添加了一个存根来替换 lru_cache,但是 Portage 2.7 中停止支持 Python 3.0 的决定大大简化了任务,并且可以在没有这一层的情况下完成。

使用缓存将 ThinkPad X220 笔记本电脑上“emerge -uDvpU —with-bdeps=y @world”操作的执行时间从 5 分 20 秒减少到 3 分 16 秒 (63%)。 对其他系统的测试显示性能至少提高了 48%。

准备更改的开发人员也尝试用 C++ 或 Rust 实现依赖解析代码的原型,但任务太困难,因为需要移植大量代码,而且结果是否值得值得怀疑。

来源: opennet.ru

添加评论