Skip to content

Instantly share code, notes, and snippets.

@mrgenixus
Last active March 3, 2016 00:07
Show Gist options
  • Select an option

  • Save mrgenixus/77511508ce26ad51df62 to your computer and use it in GitHub Desktop.

Select an option

Save mrgenixus/77511508ce26ad51df62 to your computer and use it in GitHub Desktop.
Peak Memory Profiler
class MyProfiler
def self.profile
p = Profiler.new
p.event "Begin"
yield p
p.event "End"
p
end
def initialize
@events = []
@max = 0
end
def event name=nil
unless name.nil?
@events.push([name, get_memory_usage])
end
@max = [@max, get_memory_usage].max
end
def get_memory_usage
`ps -o rss= -p #{Process.pid}`.to_i
end
def print
@events.each do |event|
name, memory_usage = event
puts "#{name}: #{memory_usage}"
end
puts "Max Usage: #{@eventmax}"
end
end
=begin
USAGE:
profiler = MyProfiler.profile do |profiler|
10000.times do
profiler.event
my_expensive_operations
end
end
profiler.print
=end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment