Skip to content
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

Reduce allocations #855

Merged
merged 6 commits into from
Aug 21, 2015
Merged

Reduce allocations #855

merged 6 commits into from
Aug 21, 2015

Conversation

kmod
Copy link
Collaborator

@kmod kmod commented Aug 21, 2015

Spent some time looking into it since GC time is showing up pretty high on the django benchmarks.

This PR reduces django_template3 bytes allocated by about 20%, leading to about a 3% improvement on that benchmark, and about 2% overall (geomean).

@undingen
Copy link
Contributor

The speedup it pretty amazing ;-)
I too forgot to add the destructor to the set class. Do you want to add it or should I create a PR?

@kmod
Copy link
Collaborator Author

kmod commented Aug 21, 2015

ok, I'll update the pr to fix set too :)

Forgot to do this when I switched away from an StlCompatAllocator,
so we were leaking memory pretty badly.
- Check for the allocation of empty tuples and just return the singleton
- Try to avoid creating the kwargs dict since it might end up being empty
- Let unicode-creation special case apply to all argument types
- Fix type(obj) to be fast again (got superceded by a different special case)
- Do fewer allocations in int()
This is a temporary fix for the fact that "-1" is currently getting
parsed as "-(1)", which will cause us to call '(1).__neg__()' with
the associated overhead and allocation.

It should be useful even after that gets fixed though.
Reduces boxing during the import process
For some reason CPython allocates an extra "item" for generic
variable-sized objects, but it looks like it doesn't do that for
tuples.  We had been doing that, so let's try not doing that
and saving 8 bytes per tuple.
@kmod
Copy link
Collaborator Author

kmod commented Aug 21, 2015

Hmm spoke a bit too soon; after fixing some bugs the effects are about half what they were at first :/

kmod added a commit that referenced this pull request Aug 21, 2015
@kmod kmod merged commit 432fcb5 into pyston:master Aug 21, 2015
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants