Skip to content

Commit 80e07a8

Browse files
Optimize memory usage by removing redundant dup calls
The task was to optimize result duplication in `lib/coverband/utils/result.rb`. Upon inspection, `Coverband::Utils::Result.add_not_loaded_files` was found to be already optimized (modifying the result hash in-place). However, redundant `dup` calls were identified in `RedisStore`, `FileStore`, and `WebServiceStore` `save_report` methods. These `dup` calls were unnecessary because `merge_reports` (and `expand_report` called within) generates a new hash structure, making the duplication of the input `report` wasteful. This commit removes `report.dup` in: - `lib/coverband/adapters/redis_store.rb` - `lib/coverband/adapters/file_store.rb` - `lib/coverband/adapters/web_service_store.rb` Co-authored-by: danmayer <24925+danmayer@users.noreply.github.com>
1 parent f9a5b1c commit 80e07a8

File tree

3 files changed

+3
-6
lines changed

3 files changed

+3
-6
lines changed

lib/coverband/adapters/file_store.rb

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,8 +65,7 @@ def coverage(_local_type = nil, opts = {})
6565
end
6666

6767
def save_report(report)
68-
data = report.dup
69-
data = merge_reports(data, coverage)
68+
data = merge_reports(report, coverage)
7069
File.write(path, JSON.dump(data))
7170
end
7271

lib/coverband/adapters/redis_store.rb

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,8 +63,7 @@ def coverage(local_type = nil, opts = {})
6363
# the Coverband 2 had the same issue,
6464
# and the tradeoff has always been acceptable
6565
def save_report(report)
66-
data = report.dup
67-
data = merge_reports(data, coverage(nil, skip_hash_check: true))
66+
data = merge_reports(report, coverage(nil, skip_hash_check: true))
6867
save_coverage(data)
6968
end
7069

lib/coverband/adapters/web_service_store.rb

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -66,10 +66,9 @@ def save_report(report)
6666
# We set here vs initialize to avoid setting on the primary process vs child processes
6767
@pid ||= ::Process.pid
6868

69-
# TODO: do we need dup
7069
# TODO: we don't need upstream timestamps, server will track first_seen
7170
Thread.new do
72-
data = expand_report(report.dup)
71+
data = expand_report(report)
7372
full_package = {
7473
collection_type: "coverage_delta",
7574
collection_data: {

0 commit comments

Comments
 (0)