Skip to content

Commit 48063a2

Browse files
committed
Merge branch 'perf/frame-object-caching' into perf/reduce-memory-allocations
2 parents 7bc4614 + 8b735a7 commit 48063a2

1 file changed

Lines changed: 8 additions & 0 deletions

File tree

sentry-ruby/lib/sentry/interfaces/stacktrace_builder.rb

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,8 +86,16 @@ def build(backtrace:, &frame_callback)
8686
private
8787

8888
def convert_parsed_line_into_frame(line)
89+
# Cache frames by Line object identity — same Line produces same Frame
90+
cache_key = line.object_id
91+
cached_frame = @frame_cache&.[](cache_key)
92+
return cached_frame if cached_frame
93+
8994
frame = StacktraceInterface::Frame.new(project_root, line, strip_backtrace_load_path)
9095
frame.set_context(linecache, context_lines) if context_lines
96+
97+
@frame_cache ||= {}
98+
@frame_cache[cache_key] = frame if @frame_cache.size < 2048
9199
frame
92100
end
93101

0 commit comments

Comments
 (0)