Skip to content

bpo-46576: bpo-46524: Disable compiler optimization within test_peg_generator. #31015

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

Merged
merged 5 commits into from
Feb 2, 2022

Conversation

gpshead
Copy link
Member

@gpshead gpshead commented Jan 29, 2022

This speed up test_peg_generator by always disabling compiler
optimizations by using -O0 by default when the test is building its
own C extensions.

A build not using --with-pydebug in order to speed up test execution
winds up with this test taking a very long time as it would do
repeated compilation of parser C code using the same optimization
flags as CPython was built with.

This speeds the test up 6-8x on gps-raspbian.

Includes the win32 changes from #31017 by Kumar Aditya

https://bugs.python.org/issue46576

This speed up test_peg_generator by always disabling compiler
optimizations by using -O0 by default when the test is building its
own C extensions.

A build not using --with-pydebug in order to speed up test execution
winds up with this test taking a very long time as it would do
repeated compilation of parser C code using the same optimization
flags as CPython was built with.

This speeds the test up 6-8x on gps-raspbian.
@sweeneyde
Copy link
Member

Windows tests show:

cl : Command line warning D9025 : overriding '/DNDEBUG' with '/UNDEBUG'
cl : Command line warning D9002 : ignoring unknown option '-O0'

Is there a corresponding option for msvc?

@kumaraditya303
Copy link
Contributor

MSVC has /Od to speed up compilation, See https://docs.microsoft.com/en-us/cpp/build/reference/od-disable-debug?view=msvc-170

@gpshead gpshead assigned gpshead and unassigned gpshead and pablogsal Jan 30, 2022
@gpshead gpshead changed the title bpo-46576: Disable compiler optimization within test_peg_generator. bpo-46576: bpo-46524: Disable compiler optimization within test_peg_generator. Jan 30, 2022
Co-authored-by: Christian Heimes <[email protected]>
@gpshead gpshead added the 🔨 test-with-buildbots Test PR w/ buildbots; report in status section label Jan 31, 2022
@bedevere-bot
Copy link

🤖 New build scheduled with the buildbot fleet by @gpshead for commit c4457db 🤖

If you want to schedule another build, you need to add the ":hammer: test-with-buildbots" label again.

@bedevere-bot bedevere-bot removed the 🔨 test-with-buildbots Test PR w/ buildbots; report in status section label Jan 31, 2022
@pablogsal pablogsal added the 🔨 test-with-buildbots Test PR w/ buildbots; report in status section label Feb 1, 2022
@bedevere-bot
Copy link

🤖 New build scheduled with the buildbot fleet by @pablogsal for commit c4457db 🤖

If you want to schedule another build, you need to add the ":hammer: test-with-buildbots" label again.

@bedevere-bot bedevere-bot removed the 🔨 test-with-buildbots Test PR w/ buildbots; report in status section label Feb 1, 2022
@gpshead
Copy link
Member Author

gpshead commented Feb 1, 2022

I believe I need to rebase my PR branch before buildbottest is useful.

@gpshead gpshead added the 🔨 test-with-buildbots Test PR w/ buildbots; report in status section label Feb 1, 2022
@bedevere-bot
Copy link

🤖 New build scheduled with the buildbot fleet by @gpshead for commit 5b99059 🤖

If you want to schedule another build, you need to add the ":hammer: test-with-buildbots" label again.

@bedevere-bot bedevere-bot removed the 🔨 test-with-buildbots Test PR w/ buildbots; report in status section label Feb 1, 2022
@gpshead gpshead merged commit 164a017 into python:main Feb 2, 2022
@miss-islington
Copy link
Contributor

Thanks @gpshead for the PR 🌮🎉.. I'm working now to backport this PR to: 3.9, 3.10.
🐍🍒⛏🤖

@bedevere-bot
Copy link

@gpshead: Please replace # with GH- in the commit message next time. Thanks!

@miss-islington
Copy link
Contributor

Sorry, @gpshead, I could not cleanly backport this to 3.10 due to a conflict.
Please backport using cherry_picker on command line.
cherry_picker 164a017e13ee96bd1ea1ae79f5ac9e25fe83994e 3.10

@miss-islington
Copy link
Contributor

Sorry @gpshead, I had trouble checking out the 3.9 backport branch.
Please backport using cherry_picker on command line.
cherry_picker 164a017e13ee96bd1ea1ae79f5ac9e25fe83994e 3.9

@gpshead gpshead deleted the faster_test_pegen branch February 2, 2022 20:15
gpshead added a commit to gpshead/cpython that referenced this pull request Feb 2, 2022
…t_peg_generator. (pythonGH-31015)

Disable compiler optimization within test_peg_generator.

This speed up test_peg_generator by always disabling compiler
optimizations by using -O0 or equivalent when the test is building its
own C extensions.

A build not using --with-pydebug in order to speed up test execution
winds up with this test taking a very long time as it would do
repeated compilation of parser C code using the same optimization
flags as CPython was built with.

This speeds the test up 6-8x on gps-raspbian.

Also incorporate's pythonGH-31017's win32 conditional and flags.

Co-authored-by: Kumar Aditya kumaraditya303.
(cherry picked from commit 164a017)

Co-authored-by: Gregory P. Smith <[email protected]>
@vstinner
Copy link
Member

vstinner commented Feb 2, 2022

In the Windows (x64) job, test_peg_generator only took 3 min 40 sec: it's way better than 8 minutes, yeah!

gpshead added a commit that referenced this pull request Feb 3, 2022
…t_peg_generator. (GH-31015) (GH-31089)

Disable compiler optimization within test_peg_generator.

This speed up test_peg_generator by always disabling compiler
optimizations by using -O0 or equivalent when the test is building its
own C extensions.

A build not using --with-pydebug in order to speed up test execution
winds up with this test taking a very long time as it would do
repeated compilation of parser C code using the same optimization
flags as CPython was built with.

This speeds the test up 6-8x on gps-raspbian.

Also incorporate's GH-31017's win32 conditional and flags.

Co-authored-by: Kumar Aditya kumaraditya303.
(cherry picked from commit 164a017)

Co-authored-by: Gregory P. Smith <[email protected]>
miss-islington pushed a commit to miss-islington/cpython that referenced this pull request Feb 3, 2022
…t_peg_generator. (pythonGH-31015) (pythonGH-31089)

Disable compiler optimization within test_peg_generator.

This speed up test_peg_generator by always disabling compiler
optimizations by using -O0 or equivalent when the test is building its
own C extensions.

A build not using --with-pydebug in order to speed up test execution
winds up with this test taking a very long time as it would do
repeated compilation of parser C code using the same optimization
flags as CPython was built with.

This speeds the test up 6-8x on gps-raspbian.

Also incorporate's pythonGH-31017's win32 conditional and flags.

Co-authored-by: Kumar Aditya kumaraditya303.
(cherry picked from commit 164a017)

Co-authored-by: Gregory P. Smith <[email protected]>
(cherry picked from commit f5ebec4)

Co-authored-by: Gregory P. Smith <[email protected]>
@gpshead gpshead removed needs backport to 3.9 only security fixes needs backport to 3.10 only security fixes labels Feb 3, 2022
miss-islington added a commit that referenced this pull request Feb 3, 2022
…in test_peg_generator. (GH-31015) (GH-31089) (GH-31093)

Disable compiler optimization within test_peg_generator.

This speed up test_peg_generator by always disabling compiler
optimizations by using -O0 or equivalent when the test is building its
own C extensions.

A build not using --with-pydebug in order to speed up test execution
winds up with this test taking a very long time as it would do
repeated compilation of parser C code using the same optimization
flags as CPython was built with.

This speeds the test up 6-8x on gps-raspbian.

Also incorporate's GH-31017's win32 conditional and flags.

Co-authored-by: Kumar Aditya kumaraditya303.
(cherry picked from commit 164a017)

Co-authored-by: Gregory P. Smith <[email protected]>
(cherry picked from commit f5ebec4)


Co-authored-by: Gregory P. Smith <[email protected]>

Automerge-Triggered-By: GH:gpshead
@gpshead
Copy link
Member Author

gpshead commented Feb 3, 2022

In the Windows (x64) job, test_peg_generator only took 3 min 40 sec: it's way better than 8 minutes, yeah!

yeah. though i also saw it take both 16 minutes or 5 minutes in similar CI runs on other PRs prior to this... so I can't make any judgement call. it certainly should not be worse. I hope it trends better.

hello-adam pushed a commit to hello-adam/cpython that referenced this pull request Jun 2, 2022
…in test_peg_generator. (pythonGH-31015) (pythonGH-31089) (pythonGH-31093)

Disable compiler optimization within test_peg_generator.

This speed up test_peg_generator by always disabling compiler
optimizations by using -O0 or equivalent when the test is building its
own C extensions.

A build not using --with-pydebug in order to speed up test execution
winds up with this test taking a very long time as it would do
repeated compilation of parser C code using the same optimization
flags as CPython was built with.

This speeds the test up 6-8x on gps-raspbian.

Also incorporate's pythonGH-31017's win32 conditional and flags.

Co-authored-by: Kumar Aditya kumaraditya303.
(cherry picked from commit 164a017)

Co-authored-by: Gregory P. Smith <[email protected]>
(cherry picked from commit f5ebec4)


Co-authored-by: Gregory P. Smith <[email protected]>

Automerge-Triggered-By: GH:gpshead
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
tests Tests in the Lib/test dir
Projects
None yet
Development

Successfully merging this pull request may close these issues.

9 participants