I hate to file yet another performance/cores/Python versions report but I haven't seen anything related, only the opposite ones. Out of the box Scrapy tests are much slower on 3.14 than on 3.13, and the 3.14 speed can be improved by setting COVERAGE_CORE=ctrace.
Some numbers:
- On current master the GitHub CI runs for the Ubuntu py env for 3.13 and 3.14 report respectively 244.02s (0:04:04) and 460.74s (0:07:40), this is with 4 xdist workers.
- Locally without xdist I get 291.91s (0:04:51) for 3.13, 394.46s (0:06:34) for 3.14 and 296.78s (0:04:56) for 3.14 with COVERAGE_CORE=ctrace.
- Locally with xdist (16 workers) I get 46.57s for 3.13, 79.93s (0:01:19) for 3.14 and 47.94s for 3.14 with COVERAGE_CORE=ctrace.
The way to reproduce this is to clone https://github.com/scrapy/scrapy and run tox -e py with various settings and Python versions (note that COVERAGE_* aren't in passenv though).
The currently used versions are Python 3.13.12/3.13.13 and 3.14.5, coverage 7.14.0, pytest-cov 7.1.0, pytest 9.0.3. COVERAGE_DEBUG=core doesn't print anything. The config:
[tool.coverage.run]
branch = true
include = ["scrapy/*"]
omit = ["tests/*"]
disable_warnings = ["include-ignored"]
patch = [
"subprocess",
]
[tool.coverage.paths]
source = [
"scrapy",
".tox/**/site-packages/scrapy"
]
[tool.coverage.report]
exclude_also = [
"@(abc\\.)?abstractmethod",
'\A(?s:.*# pragma: no file cover.*)\Z',
]
Reactions are currently unavailable
I hate to file yet another performance/cores/Python versions report but I haven't seen anything related, only the opposite ones. Out of the box Scrapy tests are much slower on 3.14 than on 3.13, and the 3.14 speed can be improved by setting COVERAGE_CORE=ctrace.
Some numbers:
The way to reproduce this is to clone https://github.com/scrapy/scrapy and run tox -e py with various settings and Python versions (note that COVERAGE_* aren't in passenv though).
The currently used versions are Python 3.13.12/3.13.13 and 3.14.5, coverage 7.14.0, pytest-cov 7.1.0, pytest 9.0.3. COVERAGE_DEBUG=core doesn't print anything. The config:
[tool.coverage.run] branch = true include = ["scrapy/*"] omit = ["tests/*"] disable_warnings = ["include-ignored"] patch = [ "subprocess", ] [tool.coverage.paths] source = [ "scrapy", ".tox/**/site-packages/scrapy" ] [tool.coverage.report] exclude_also = [ "@(abc\\.)?abstractmethod", '\A(?s:.*# pragma: no file cover.*)\Z', ]