Repository navigation
⚡ Bolt: reuse Intl.Collator in InstalledPage mod sorting - #305
google-labs-jules[bot] wants to merge 1 commit into
Conversation
Replace inline String.prototype.localeCompare(..., { sensitivity: "base" })
calls with module-level Intl.Collator instances in InstalledPage to prevent
redundant Collator construction and options parsing on every comparison.
|
👋 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 New to Jules? Learn more at jules.google/docs. For security, I will only act on instructions from the user who triggered this task. |
💡 What
Replaced inline
String.prototype.localeCompare(..., { sensitivity: "base" })and fallbacklocaleComparecalls insrc/pages/InstalledPage.tsxwith module-levelIntl.Collatorinstances (collatorBaseandcollatorExact).🎯 Why
In JavaScript runtimes, calling$O(N \log N)$ times). For mod lists with many items, this introduces thousands of redundant collator allocations, option parsing cycles, and garbage collection pressure every time the installed mod list re-sorts (on page mount, install, toggle, or settings reload).
String.prototype.localeComparewith options ({ sensitivity: "base" }) inside an array comparator causes the runtime to instantiate and configure an internalIntl.Collatorinstance on every single comparison (📊 Impact
🔬 Measurement
Verified with
pnpm build(tsc && vite build) and microbenchmarked in Node.js comparinglocaleCompare(..., { sensitivity: "base" })vsIntl.Collator.prototype.compare.PR created automatically by Jules for task 2064788305169922654 started by @TheDragonSoft