Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Generator finalization is slower in 3.11 vs 3.10 #100762

Closed
Assignees
markshannon
Labels
3.11only security fixes3.12only security fixesinterpreter-core(Objects, Python, Grammar, and Parser dirs)performancePerformance or resource usage
@Onlooker2186

Description

@Onlooker2186

I found that the Python 3.11.1 implementation of all() is 30% slower compared to Python 3.10.9.

any() also seems to be around 4% slower on my device

Environment

  • CPython versions tested on: Python 3.10.9 and Python 3.11.1
  • Operating system and architecture: Windows 10 22H2 (Build 19045) 64 bit

Code to test all():

importtimeitfromfunctoolsimportpartialimportplatformdeffind_by_keys(keys:list[str],table:list[dict[str,str|int]],match_data:dict[str,str|int],)->dict[str,str|int]|None:foritemintable:ifall(item[k]==match_data[k]forkinkeys):returnitemreturnNonedefmain():keys:list[str]= ["id","key_1","key_2"]table:list[dict[str,str|int]]= [        {"id":i,"key_1":"val_1","key_2":"val_2",        }foriinrange(1,5001)    ]match_data:dict[str,str|int]= {"id":3000,"key_1":"val_1","key_2":"val_2",    }timeit_output=timeit.repeat(partial(find_by_keys,keys,table,match_data),repeat=10000,number=1    )average_time=sum(timeit_output)/len(timeit_output)best_time=min(timeit_output)tps_output=1/average_timeprint(f"Python version ={platform.python_version()}")print(f"Average time ={average_time}")print(f"Best time ={best_time}")print(f"Average transactions per second ={tps_output}")if__name__=="__main__":main()

Results for all()

Console output using Python 3.10.9:

Python version = 3.10.9Average time = 0.0008256170657486655Best time = 0.0007106999401003122Average transactions per second = 1211.2152733824669

Console output using Python 3.11.1:

Python version = 3.11.1Average time = 0.0011819988898839802Best time = 0.001033599954098463Average transactions per second = 846.0244832363215

Code to test any():

importtimeitfromfunctoolsimportpartialimportplatformdeffind_by_keys(keys:list[str],table:list[dict[str,str|int]],match_data:dict[str,str|int],)->dict[str,str|int]|None:foritemintable:ifany(item[k]==match_data[k]forkinkeys):returnitemreturnNonedefmain():keys:list[str]= ["id","key_1","key_2"]table:list[dict[str,str|int]]= [        {"id":i,"key_1":"foo_1","key_2":"foo_2",        }foriinrange(1,5001)    ]match_data:dict[str,str|int]= {"id":3000,"key_1":"val_1","key_2":"val_2",    }timeit_output=timeit.repeat(partial(find_by_keys,keys,table,match_data),repeat=10000,number=1    )average_time=sum(timeit_output)/len(timeit_output)best_time=min(timeit_output)tps_output=1/average_timeprint(f"Python version ={platform.python_version()}")print(f"Average time ={average_time}")print(f"Best time ={best_time}")print(f"Average transactions per second ={tps_output}")if__name__=="__main__":main()

Results for any()

Console output using Python 3.10.9:

Python version = 3.10.9Average time = 0.0009300541202770546Best time = 0.00090230000205338Average transactions per second = 1075.206246817238

Console output using Python 3.11.1:

Python version = 3.11.1Average time = 0.0009645268900785595Best time = 0.000930099980905652Average transactions per second = 1036.7777303943815

Linked PRs

Metadata

Metadata

Assignees

Labels

3.11only security fixes3.12only 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


    [8]ページ先頭

    ©2009-2025 Movatter.jp