Skip to content

Update property_descr_set to use vectorcall if possible. #88827

Description

@corona10
BPO 44661
Nosy @vstinner, @corona10, @pablogsal, @erlend-aasland, @Fidget-Spinner
PRs
  • bpo-44661: Update property_descr_set to use vectorcall if possible. #27206
  • Files
  • bench_property.py
  • Note: these values reflect the state of the issue at the time it was migrated and might not reflect the current state.

    Show more details

    GitHub fields:

    assignee = None
    closed_at = <Date 2021-07-19.10:14:43.448>
    created_at = <Date 2021-07-17.05:19:43.450>
    labels = ['interpreter-core', '3.11', 'performance']
    title = 'Update property_descr_set to use vectorcall if possible.'
    updated_at = <Date 2021-08-04.15:40:50.400>
    user = 'https://github.com/corona10'

    bugs.python.org fields:

    activity = <Date 2021-08-04.15:40:50.400>
    actor = 'vstinner'
    assignee = 'none'
    closed = True
    closed_date = <Date 2021-07-19.10:14:43.448>
    closer = 'corona10'
    components = ['Interpreter Core']
    creation = <Date 2021-07-17.05:19:43.450>
    creator = 'corona10'
    dependencies = []
    files = ['50155']
    hgrepos = []
    issue_num = 44661
    keywords = ['patch']
    message_count = 6.0
    messages = ['397701', '397702', '397703', '397783', '397784', '398907']
    nosy_count = 5.0
    nosy_names = ['vstinner', 'corona10', 'pablogsal', 'erlendaasland', 'kj']
    pr_nums = ['27206']
    priority = 'normal'
    resolution = 'fixed'
    stage = 'resolved'
    status = 'closed'
    superseder = None
    type = 'performance'
    url = 'https://bugs.python.org/issue44661'
    versions = ['Python 3.11']

    Activity

    1. corona10 commented on Jul 17, 2021

      @corona10
      MemberAuthor

      It shows a consistent 1-2% performance improvement.

      Mean +- std dev: [property_base] 40.6 ns +- 0.6 ns -> [property_vectorcall] 40.0 ns +- 0.7 ns: 1.01x faster

    2. added
      3.11only security fixes
      interpreter-core(Objects, Python, Grammar, and Parser dirs)
      performancePerformance or resource usage
      on Jul 17, 2021
    3. corona10 commented on Jul 17, 2021

      @corona10
      MemberAuthor

      Oops sorry, it was the wrong benchmark, it will be faster.. ;)

      Mean +- std dev: [property_base] 140 ns +- 5 ns -> [property_vectorcall] 125 ns +- 2 ns: 1.12x faster

    4. corona10 commented on Jul 17, 2021

      @corona10
      MemberAuthor

      I updated the benchmark, and it shows 1.12x faster

    5. corona10 commented on Jul 19, 2021

      @corona10
      MemberAuthor

      New changeset 635bfe8 by Dong-hee Na in branch 'main':
      bpo-44661: Update property_descr_set to use vectorcall if possible. (GH-27206)
      635bfe8

    6. corona10 commented on Jul 19, 2021

      @corona10
      MemberAuthor
      class Person:
          def __init__(self):
              self.__age = 0
      
          @property
          def age(self):
              return self.__age
      
          @age.setter
          def age(self, value):
              self.__age = value
      
      p = Person()
      p.age = 10 # Now become faster
    7. vstinner commented on Aug 4, 2021

      @vstinner
      Member

      Mean +- std dev: [property_base] 140 ns +- 5 ns -> [property_vectorcall] 125 ns +- 2 ns: 1.12x faster

      Ah! That's better. If it was only 1.01x faster, I would say that it's not worth it. But 1.12x is worth it. Thanks for this optimization.

    8. transferred this issue fromon Apr 10, 2022
    Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

    Metadata

    Metadata

    Assignees

    No one assigned

      Labels

      3.11only security fixesinterpreter-core(Objects, Python, Grammar, and Parser dirs)performancePerformance or resource usage

      Projects

      No projects

        Milestone

        No milestone

        Relationships

        None yet

        Development

        No branches or pull requests

        Issue actions