From 36bcca526bf0beb598f5fa7ad405e277a63171da Mon Sep 17 00:00:00 2001 From: Stan Hu Date: Thu, 2 May 2019 09:34:40 -0700 Subject: [PATCH] Reduce memory allocations parsing smaps files --- lib/gitlab_monitor/memstats.rb | 2 ++ lib/gitlab_monitor/memstats/mapping.rb | 17 ++++++++++++++--- lib/gitlab_monitor/process.rb | 2 ++ 3 files changed, 18 insertions(+), 3 deletions(-) diff --git a/lib/gitlab_monitor/memstats.rb b/lib/gitlab_monitor/memstats.rb index ae22129..1eb37aa 100644 --- a/lib/gitlab_monitor/memstats.rb +++ b/lib/gitlab_monitor/memstats.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + require_relative "memstats/mapping" # Ported from https://github.com/discourse/discourse/blob/master/script/memstats.rb diff --git a/lib/gitlab_monitor/memstats/mapping.rb b/lib/gitlab_monitor/memstats/mapping.rb index 40b1342..baddaa2 100644 --- a/lib/gitlab_monitor/memstats/mapping.rb +++ b/lib/gitlab_monitor/memstats/mapping.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + module GitLab module Monitor module MemStats @@ -56,7 +58,9 @@ module GitLab end def parse_first_line(line) - parts = line.strip.split + line.strip! + + parts = line.split @address_start, @address_end = parts[0].split("-") @perms = parts[1] @offset = parts[2] @@ -66,8 +70,15 @@ module GitLab end def parse_field_line(line) - parts = line.strip.split - field = parts[0].downcase.sub(":", "") + line.strip! + + parts = line.split + + return unless parts + + parts[0].downcase! + parts[0].sub!(":", "") + field = parts[0] return unless respond_to? "#{field}=" diff --git a/lib/gitlab_monitor/process.rb b/lib/gitlab_monitor/process.rb index 335b904..b11345b 100644 --- a/lib/gitlab_monitor/process.rb +++ b/lib/gitlab_monitor/process.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + require_relative "memstats" module GitLab -- GitLab