⚡ Bolt: Replace O(n) array filtering with O(log n) binary search#61
⚡ Bolt: Replace O(n) array filtering with O(log n) binary search#61toreleon wants to merge 2 commits into
Conversation
…arket data arrays Co-authored-by: toreleon <42534763+toreleon@users.noreply.github.com>
|
👋 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. |
…arket data arrays Also includes fixes for CI high-severity vulnerabilities in ws and undici dependencies. Co-authored-by: toreleon <42534763+toreleon@users.noreply.github.com>
💡 What: Added a reusable
findLastBarIndexbinary search utility tosrc/data/sources/dnsePublic.tsand updated hot-path time-series data truncation inclipBars,vnindexAt, andpriceOverrideto use it.🎯 Why: Time-series arrays (like OHLCV bars) are chronologically sorted. Using
Array.prototype.filterto look up data up to a specific time point runs in O(n) time, creating significant performance overhead in tight loops like the backtesting engine.📊 Impact: Reduces lookahead overhead from O(n) to O(log n) per lookup. For long backtest runs processing large OHLCV arrays on every 30m turn, this substantially speeds up the data truncation step, directly speeding up loop execution.
🔬 Measurement: All tests pass normally. Lookups on larger bars datasets will show marked reduction in CPU cycle time due to the O(log n) approach versus processing every element.
PR created automatically by Jules for task 7501572209619970543 started by @toreleon