-
Notifications
You must be signed in to change notification settings - Fork 181
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
First impressions porting the pandas repository #194
Comments
I've been using the terms "project" to refer to the project being benchmarked and "benchmark suite" to refer to a collection of benchmarks. I'll use that terminology below to respond. Most projects using Just to clarify a few things:
Yeah -- perhaps
Any sense of why? I use Thanks for the valuable feedback, and I'm sorry the documentation sent you on a wild goose chase! |
@mdboom Thanks for the response. I knew I was digging my own hole here but I think I might be able to get what I'm looking for by doing something like this:
The reason for my insistence getting a single-repo setup going is that it's very useful to benchmark performance fixes before they're merged. Having a single repo allows the default I'm going to take another stab at getting this set up and hopefully put together a script to automatically convert Thanks again! |
The usual mode of working to test the developer's repo (i.e. unchecked-in changes) is to install it to a virtualenv and then use |
Yeah, that's a very manual process for something I might do half a dozen times for a single PR. Here's how the vbench infrastructure currently handles it:
There's no fundamental difference between the two tools here, it's just a matter of getting Also, |
@qwhelan: I can see the value in working that way. I'll tinker a bit to see what it would take to make that work. |
So here's the moving pieces that I think would be involved. It might be worth discussing first to make sure I'm on the right track for this use case before too much implementation.
|
Duh -- we actually already have (c) in |
(a)+(b) should work now, since asv now uses
|
@mdboom @pv Sorry for disappearing on this. I've got a short script that converts |
@mdboom First of all, it's really impressive to see a v0.1 with this level of polish in presentation, especially given how even mature open source projects tend to be lacking in this regard.
Due to pandas-dev/pandas#8361, I decided to take a look at converting pandas to asv from https://github.com/pydata/vbench and ran into a few usability issues. Most of the following comments can be standalone issues, but I wanted to put everything in context first. I'm also willing to help fix many of these but I'd like feedback from you first.
The first snag was the relative location of
asv.conf.json
with regard to the git repo. I thought it would be something like this:But it instead seems to expect this:
Which poses some issues with distributing it with the repo, as well as conflicts between multiple projects in the same directory. The former fails due to the assumption that
./project
is the project root and thus thatproject/setup.py
exists. Due to my moving it down a level,asv.environment.install()
tries to install frompandas/pandas
and fails. Many of the following issues result from my patchingasv
locally to support the former approach, so please let me know if trying to support this is completely unreasonable.A few other things I noticed:
asv
doesn't create a secondary repo to run benchmarks in. Again this is only an issue due to my desire to distributeasv.conf.json
with the repo and this is the direct root cause of many of the following issues.asv run
does agit checkout -f master
which discards any uncommitted changes and committed changes on a detached HEAD (more on why this is a concern later)asv run
to work - I can guarantee this will cause a developer with a substantial change to lose their work.-f
and let git yell at the userasv run
does agit clean -fxd
which forcibly discards any untracked files.asv.conf.json
,benchmarks/
andenv/
were being deleted after everyasv run
envs/
directory, but that's consistent with everything elseasv run
doesn't return the repo to the state it was in prior to the runOn branch master
HEAD detached at 2ef4ba0
git checkout -f
, this leads to users losing commits (or at least digging intogit reflog
)benchmarks/
into the repo, benchmarks cannot be run retrospectively. Again, totally my fault.asv publish
didn't seem like the obvious choice to generate the html files. I think of publishing as making something widely available, but I might just be unaware of a common convention here.asv run
in theasv/tests
directory fails due to thebenchmarks/
directory being calledbenchmark/
astropy
test case fails to run due to dependencies missing fromsetup.py
(at leastjinja2
)ccache
from homebrew; works fine withoutccache
. This is a pretty common issue, so just FYI.CC=/usr/bin/gcc py.test
Once again, great job on
asv
!The text was updated successfully, but these errors were encountered: