GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — add version of Richards that uses super() by carljm · Pull Request #271 · python/pyperformance

Conversation

@carljm

@carljm carljm commented Apr 14, 2023 •
edited
Loading

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown
Member

Currently, none of the benchmarks in pyperformance exercise super() method calls significantly. But real-world modern object-oriented Python code often does (one source: Instagram server codebase uses lots of super() method calls, some in hot paths.)

To correct this gap in visibility, this PR adds a copy of the Richards benchmark that is modified to use super() calls. Existing super-method calls that were done by naming the base class directly (Task.__init__(self, ...)) are modified to use super(), and the already-polymorphic Task.fn method is modified slightly such that overrides now call up to the base method using super().

If we accept that Richards is a roughly reasonable representation of some object-oriented Python code, I think this is a similarly reasonable representation of the real-world use of super() in such code.

Thanks to @pablogsal for this suggestion.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
Carl Meyer added 2 commits April 14, 2023 10:35
Carl Meyer
add version of Richards that uses super()
2e1ed81
Carl Meyer
update some metadata
cefb41b
@carljm carljm mentioned this pull request Apr 14, 2023
gh-87729: add LOAD_SUPER_ATTR instruction for faster super() python/cpython#103497
Merged
@carljm
carljm requested review from corona10 and pablogsal April 14, 2023 18:45
@carljm

carljm commented Apr 14, 2023

Copy link
Copy Markdown
Member Author

The 3.12 failure looks like an issue building greenlet, not related to this PR.

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@hugovk

hugovk commented Apr 14, 2023

Copy link
Copy Markdown
Member

Yep, see #263 for 3.12+greenlet.

carljm reacted with thumbs up emoji
All reactions
  • 👍 1 reaction

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@corona10

corona10 commented Apr 15, 2023

Copy link
Copy Markdown
Member

Nice I will take a look

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@corona10

corona10 commented Apr 16, 2023 •
edited
Loading

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown
Member

Overall looks good, but why not just replace the Richards to use super()?
I feel the running time of benchmarks is increased these days, due to the increasing number of benchmarks.
Adding benchmarks is good, but let's avoid the duplicated similar workload added if possible.

cc @pablogsal

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@carljm

carljm commented Apr 16, 2023 •
edited
Loading

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown
Member Author

Overall looks good, but why not just replace the Richards to use super()?

I think the main reason is because this means Richards timing is no longer comparable to previous timings? (I'm not sure if this is an issue or not; I'm quite happy to just change Richards if that's ok with the maintainers.)

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@corona10 corona10 closed this Apr 19, 2023
@corona10 corona10 reopened this Apr 19, 2023
@corona10 corona10 closed this Apr 20, 2023
@corona10 corona10 reopened this Apr 20, 2023
AlexWaygood
AlexWaygood reviewed Apr 24, 2023
View reviewed changes
Comment thread pyperformance/data-files/benchmarks/bm_richards_super/run_benchmark.py Resolved

Uh oh!

There was an error while loading. Please reload this page.

@carljm
carljm requested a review from mdboom April 24, 2023 22:35
@mdboom

mdboom commented Apr 25, 2023

Copy link
Copy Markdown
Contributor

This looks good to me. I agree that adding (rather than replacing) is the way to go here. We can always remove the old benchmark once we learn more from this one.

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

mdboom
mdboom approved these changes Apr 25, 2023
View reviewed changes

@mdboom mdboom left a comment

Copy link
Copy Markdown
Contributor

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

carljm reacted with thumbs up emoji
All reactions
  • 👍 1 reaction
corona10
corona10 approved these changes Apr 25, 2023
View reviewed changes

@corona10 corona10 left a comment

Copy link
Copy Markdown
Member

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lgtm

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

carljm reacted with thumbs up emoji
All reactions
  • 👍 1 reaction
@carljm
remove unnecessary inheriting from object
0baf139
@carljm
carljm merged commit 974e29c into python:main Apr 25, 2023
@carljm
carljm deleted the richards_super branch April 25, 2023 17:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Reviewers

@AlexWaygood AlexWaygood AlexWaygood left review comments
@mdboom mdboom mdboom approved these changes
@corona10 corona10 corona10 approved these changes
@pablogsal pablogsal Awaiting requested review from pablogsal

Uh oh!

There was an error while loading. Please reload this page.

Assignees

No one assigned

Labels

None yet

Projects

None yet

Milestone

No milestone

Development

Successfully merging this pull request may close these issues.

Uh oh!

There was an error while loading. Please reload this page.

5 participants

@carljm @hugovk @corona10 @mdboom @AlexWaygood
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.