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

[mypyc] Speed up for loop over native generator#19415

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 ourterms of service andprivacy statement. We’ll occasionally send you account related emails.

Already on GitHub?Sign in to your account

Merged
JukkaL merged 4 commits intomasterfrommypyc-generator-optimize
Jul 9, 2025

Conversation

@JukkaL
Copy link
Collaborator

Call the generator helper method directly instead of callingPyIter_Next when calling a native generator from a native function. This way we can avoid raising StopIteration when the generator is exhausted. The approach is similar to what I used to speed up calls using await in#19398. Refer to that PR for a more detailed explanation.

This helps mostly when a generator produces a small number of values, which is quite common.

This PR improves the performance of this microbenchmark, which is a close to the ideal use case, by about 2.6x (now 5.7x faster than interpreted):

from typing import Iteratordef foo(x: int) -> Iterator[int]:    for a in range(x):        yield adef bench(n: int) -> None:    for i in range(n):        for a in foo(1):            passfrom time import timebench(1000 * 1000)t0 = time()bench(50 * 1000 * 1000)print(time() - t0)

@JukkaLJukkaL merged commit6f23e47 intomasterJul 9, 2025
13 checks passed
@JukkaLJukkaL deleted the mypyc-generator-optimize branchJuly 9, 2025 16:04
Sign up for freeto join this conversation on GitHub. Already have an account?Sign in to comment

Reviewers

@jhancejhancejhance approved these changes

Assignees

No one assigned

Labels

None yet

Projects

None yet

Milestone

No milestone

Development

Successfully merging this pull request may close these issues.

2 participants

@JukkaL@jhance

[8]ページ先頭

©2009-2025 Movatter.jp