-
Notifications
You must be signed in to change notification settings - Fork 51
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Pull pyston benchmarks into pyperformance. #60
Comments
FWIW, I started looking at the Pyston suite and tried to find areas where pyperformance lack a month ago. So far I ported over their mypy benchmark (see python/pyperformance#102). Just my two cents: I think their aiohttp, gevent and gunicorn benchmarks are interesting too because they're more modern workloads. However, I've been trying to find benchmarks that use OOP concepts more heavily since that's an area pyperformance lacks right now. |
I've mostly gotten to the point I can post PRs:
Now I just need to follow up with @vstinner and @pablogsal on the pyperformance approach. |
Also, with my changes we could get rid of the idea of "groups" in pyperformance. Instead we would have a separate manifest file for each of the existing groups. |
This comment has been minimized.
This comment has been minimized.
Current pyperformance vs. my branch:
Although the geometric means indicates no change, there is some variance in the results where I'd expect none. I'll be looking into that. @brandtbucher, any ideas? |
What exactly do the two columns represent? There is often some noise in benchmarks -- Brandt has tried to quantify this in #109 |
Yeah, this is a problem with certain benchmarks. For example, I've often seen
|
Also, I've grown to dislike As a concrete example, here's the whole run that I got that
|
FYI, the pyston benchmarks don't work against CPython main (as of about a month ago) due to dependencies failing to build. It looks like a problem in Cython. See cython/cython#4461 and MagicStack/uvloop#450. |
I wonder if we just need to have a low-intensity workstream that fixes
various issues we're causing in Cython and other packages -- not just so
3rd parties can test with the alpha releases but so *we* can test with 3rd
party packages.
|
It's the two results files that I was comparing. Here's the non-table comparison from pyperf:
|
I get that. :-) What I didn't get is what is different between the two runs you are comparing. Were they two different commits on cpython's main branch? Were they using different versions of pyperformance? You write "my branch". Your branch of what? Here's my current hypothesis. You were using two different versions of PyPerformance, i.e. the head of its main branch and the head of your branch (python/pyperformance#109), and you ran these with exactly the same cpython commit, and both with optimizations enabled. Moreover, the main PyPerformance branch is the left column and the PR 109 branch is on the right. What did I miss? |
You've described it exactly. :) I was checking to see if my changes impact the pyperformance results. (Sorry about the confusion.) |
The problem was fixed a couple weeks ago (for 0.29.x) but it's unclear when the next release (0.29.25) will happen: https://github.com/cython/cython/milestones. Separately, it looks like uWSGI doesn't build currently on 3.11. I've opened unbit/uwsgi#2365. |
Do we need to wait for a Cython release or could we (temporarily) point our lockfile to a specific commit? |
Alternatively, we can try to install cython based on its master branch (IIRC pip allows a git-based specifier), but we need to make sure we can build the wheel ourselves (should happen automatically, but not sure what build dependencies and requirements cython has). |
I'll give it a shot. |
The specifier is "Cython@https://github.com/cython/cython/archive/0.29.x.tar.gz". I tried it and it looks like Cython is incompatible with main at the moment ( |
Are there at least Cython issues that make the Cython team aware of those incompatibilities? Ideally we could probably submit PRs that fix them -- I think this is within the scope of our project. I'm surprised that PyCode_New() is still an issue, I thought that Stefan had fixed this (cython/cython#4414). |
Yeah, I'll check the Cython issue tracker and post a bug report if needed. I also don't mind putting up a fix for them if it isn't too hairy. 🙂 |
FTR, here are the issues for extension problems with 3.11 that I found while running the Pyston benchmarks against CPython's |
I think solving these is going to be a priority -- In #102 we are also running into this. |
Just FYI - I believe Stefan has released Cython 0.29.25 which should unblock the vast majority of Cython-based dependencies (at least until Python 3.11.a3...) |
Well 3.11a3 comes out today, so let's hope it still works with that. We didn't change the code object creation API, but we did change other things since alpha 2. |
The Pyston project published a set of macro benchmarks that they used. We can work on incorporating those into the pyperformance suite.
TODO:
req-1636475547-esnow
vs.req-1636488560-esnow
[includes]
section to manifestSteps to incorporate Pyston benchmarks on a benchmarking host:
pyperformance compile ...
More concretely:
The text was updated successfully, but these errors were encountered: