更快的分支覆盖率测量

💡 原文英文,约400词,阅读约需2分钟。
📝

内容提要

经过近两年的努力,coverage.py 现已支持通过 sys.monitoring 更高效地测量分支覆盖率。用户需从 GitHub 获取 Python 主分支的构建版本并安装 coverage,设置环境变量后运行 coverage 将更快。此功能基于 Python 3.12 的新 sys.monitoring,解决了传统方法的低效问题。

🎯

关键要点

  • 经过近两年的努力,coverage.py 现已支持通过 sys.monitoring 更高效地测量分支覆盖率。

  • 用户需从 GitHub 获取 Python 主分支的构建版本。

  • 需要安装 coverage.py 的 GitHub 版本,尚未在 PyPI 发布。

  • 设置环境变量 COVERAGE_CORE=sysmon 后运行 coverage,性能将更快。

  • 传统方法依赖 sys.settrace,效率低下,新方法利用 sys.monitoring 解决了这一问题。

  • Python 3.12 引入的 sys.monitoring 允许在事件触发后禁用,从而减少重复调用的开销。

  • 经过多次讨论,最终确定了适用于测量分支和行的事件行为。

🔎

延伸解读

新功能的背景

coverage.py 的新功能基于 Python 3.12 引入的 sys.monitoring,旨在解决传统方法的效率问题。传统上,coverage.py 依赖 sys.settrace,导致重复调用增加了性能开销。新方法通过在事件触发后禁用,显著提高了测量效率。

使用要求与注意事项

用户需要从 GitHub 获取 Python 主分支的构建版本,并安装 coverage.py 的 GitHub 版本,尚未在 PyPI 发布。设置环境变量 COVERAGE_CORE=sysmon 后运行 coverage,才能体验到性能提升。

未来的版本更新

随着 Python 3.14 alpha 6 的发布,预计将简化用户的安装过程。用户应关注后续版本的更新,以便更方便地使用 coverage.py 的新功能。

延伸问答

如何使用 coverage.py 测量分支覆盖率?

用户需要从 GitHub 获取 Python 主分支的构建版本,并安装 coverage.py。设置环境变量 COVERAGE_CORE=sysmon 后运行 coverage,即可更快地测量分支覆盖率。

coverage.py 的新功能有什么优势?

新功能通过 sys.monitoring 提高了测量分支覆盖率的效率,解决了传统方法依赖 sys.settrace 的低效问题。

为什么需要从 GitHub 安装 coverage.py?

因为当前的代码尚未在 PyPI 发布,用户需要从 GitHub 安装最新的构建版本以使用新功能。

Python 3.12 的 sys.monitoring 有什么新特性?

sys.monitoring 允许在事件触发后禁用,从而减少重复调用的开销,提高了性能。

使用 coverage.py 测量分支覆盖率时需要注意什么?

用户需要确保安装了正确的 Python 构建版本,并设置环境变量 COVERAGE_CORE=sysmon,以确保性能提升。

coverage.py 的传统方法有什么缺陷?

传统方法依赖 sys.settrace,效率低下,因为每次执行的行都会重复调用记录函数,造成不必要的开销。

🏷️

标签

➡️

继续阅读