Skip to content

⚡ Bolt: optimize random sampling performance#85

Open
babelman97 wants to merge 1 commit into
mainfrom
bolt-random-optimization-12955838764815272628
Open

⚡ Bolt: optimize random sampling performance#85
babelman97 wants to merge 1 commit into
mainfrom
bolt-random-optimization-12955838764815272628

Conversation

@babelman97

Copy link
Copy Markdown
Owner

💡 What: Replaced the rejection-based random sampling in random.html with a hybrid approach using Sparse Fisher-Yates for high-density requests.

🎯 Why: The original Set based rejection sampling suffered from exponential performance degradation as the requested count approached the range size (Coupon Collector's Problem), leading to browser hangs.

📊 Impact: High-density sampling (e.g., 999k numbers from 1M range) improved from ~3.7s to ~2.7s (approx 27% speedup), primarily limited by string joining and DOM rendering. Algorithmic efficiency improved from O(N²) average-case at high density to guaranteed O(N).

🔬 Measurement: Verified using benchmark_random_extreme.py and test_random_logic.py. UI verified via Playwright screenshot.


PR created automatically by Jules for task 12955838764815272628 started by @babelman97

Implement hybrid sampling in random.html:
- Use rejection sampling (Set) for low density (< 50%)
- Use Sparse Fisher-Yates (Map) for high density (>= 50%)
- Fix range validation bug and add 10M range safety limit
- Improve UI responsiveness for large result sets with CSS scroll and textContent

Co-authored-by: babelman97 <[email protected]>
@google-labs-jules

Copy link
Copy Markdown

👋 Jules, reporting for duty! I'm here to lend a hand with this pull request.

When you start a review, I'll add a 👀 emoji to each comment to let you know I've read it. I'll focus on feedback directed at me and will do my best to stay out of conversations between you and other bots or reviewers to keep the noise down.

I'll push a commit with your requested changes shortly after. Please note there might be a delay between these steps, but rest assured I'm on the job!

For more direct control, you can switch me to Reactive Mode. When this mode is on, I will only act on comments where you specifically mention me with @jules. You can find this option in the Pull Request section of your global Jules UI settings. You can always switch back!

New to Jules? Learn more at jules.google/docs.


For security, I will only act on instructions from the user who triggered this task.

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.

1 participant