Skip to content

Keep GC disabled during GC_test#test_stress_and_stress= - #3061

Merged
soutaro merged 1 commit into
masterfrom
claude/gc-stress-test-performance-424sfy
Aug 3, 2026
Merged

Keep GC disabled during GC_test#test_stress_and_stress=#3061
soutaro merged 1 commit into
masterfrom
claude/gc-stress-test-performance-424sfy

Conversation

@soutaro

@soutaro soutaro commented Aug 3, 2026

Copy link
Copy Markdown
Member

GC.stress = true runs a full GC on every allocation and assert_send_type allocates heavily, so now that #3059 correctly stops a disabled GC from leaking into the rest of the suite, test_stress_and_stress= takes 647s.

The assertions only check the types of the return values, so disabling GC for the duration keeps stress mode inert, and the stdlib suite goes from 827s back to 184s.

🤖 Generated with Claude Code

`GC.stress = true` runs a full GC on every allocation, and each
`assert_send_type` allocates heavily while parsing the method type and type
checking the call trace. Since #3059 stopped `test_enable` from leaking a
disabled GC into the rest of the suite, stress mode is finally live during this
test, and the five assertions between `GC.stress = 0` and `GC.stress = false`
turn the whole stdlib suite from 193s into 827s -- 647s of it inside this one
method. The cost scales with heap size, so it is far worse in the full suite
than when the file runs alone.

The assertions only check the types of the return values, so no GC needs to
actually run. Disable GC for the duration and restore both the stress mode and
the previous enabled state afterwards.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NtDw9t8cMiaqT2s8wwSsDt
@soutaro
soutaro enabled auto-merge August 3, 2026 02:35
@soutaro
soutaro added this pull request to the merge queue Aug 3, 2026
Merged via the queue into master with commit c95a7c9 Aug 3, 2026
24 checks passed
@soutaro
soutaro deleted the claude/gc-stress-test-performance-424sfy branch August 3, 2026 02:40
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants