From bbd3d2c39d2068411f8d8067655d6b139a8a4201 Mon Sep 17 00:00:00 2001 From: Dmitriy Zaporozhets Date: Mon, 13 Jul 2015 11:27:25 +0200 Subject: Avoid copy of strings in memory for parsing git grep result Signed-off-by: Dmitriy Zaporozhets --- app/models/repository.rb | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/app/models/repository.rb b/app/models/repository.rb index 6262b5c4c92..c0bc1829e82 100644 --- a/app/models/repository.rb +++ b/app/models/repository.rb @@ -442,8 +442,7 @@ class Repository filename = nil startline = 0 - lines = result.lines - lines.each_with_index do |line, index| + result.each_line.each_with_index do |line, index| if line =~ /^.*:.*:\d+:/ ref, filename, startline = line.split(':') startline = startline.to_i - index @@ -451,11 +450,11 @@ class Repository end end - data = lines.map do |line| - line.sub(ref, '').sub(filename, '').sub(/^:-\d+-/, '').sub(/^::\d+:/, '') - end + data = "" - data = data.join("") + result.each_line do |line| + data << line.sub(ref, '').sub(filename, '').sub(/^:-\d+-/, '').sub(/^::\d+:/, '') + end OpenStruct.new( filename: filename, -- cgit v1.2.1