Skip to content

Conversation

@gpshead
Copy link
Member

@gpsheadgpshead 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

@gpsheadgpshead assigned gpshead and unassigned gpshead and pablogsalJan 30, 2022
@gpsheadgpshead 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]>
@gpsheadgpshead 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-botbedevere-bot removed the 🔨 test-with-buildbots Test PR w/ buildbots; report in status section label Jan 31, 2022
@pablogsalpablogsal 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-botbedevere-bot removed the 🔨 test-with-buildbots Test PR w/ buildbots; report in status section label Feb 1, 2022
@gpshead
Copy link
MemberAuthor

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

@gpsheadgpshead 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-botbedevere-bot removed the 🔨 test-with-buildbots Test PR w/ buildbots; report in status section label Feb 1, 2022
@gpsheadgpshead merged commit 164a017 into python:mainFeb 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

@gpsheadgpshead 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

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]>
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
MemberAuthor

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 freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

testsTests in the Lib/test dir

Projects

None yet

Development

Successfully merging this pull request may close these issues.

9 participants

@gpshead@sweeneyde@kumaraditya303@bedevere-bot@miss-islington@vstinner@tiran@pablogsal@the-knights-who-say-ni