Advertisement
Guest User

Untitled

a guest
Feb 9th, 2016
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.70 KB | None | 0 0
  1. require 'benchmark'
  2.  
  3. def measure(gc: false, times: 1000, &block)
  4. GC.start
  5. GC.disable if gc
  6.  
  7. gc_key = if RUBY_VERSION > 2.2
  8. :total_allocated_objects
  9. else
  10. :total_allocated_object
  11. end
  12.  
  13. memory_before = `ps -o rss= -p #{Process.pid}`.to_i
  14. objects_before = GC.stat(gc_key)
  15.  
  16. runtime = Benchmark.realtime do
  17. times.times do
  18. yield
  19. end
  20. end
  21.  
  22. object_delta = GC.stat(gc_key) - objects_before
  23. memory_delta = (`ps -o rss= -p #{Process.pid}`.to_i) - memory_before
  24.  
  25. puts "Iterations: #{times}"
  26. puts "Runtime: #{runtime} :: #{runtime / times} per call"
  27. puts "Objects: #{object_delta} :: #{object_delta / times} per call"
  28. puts "Memory (RSS): #{memory_delta}KB"
  29.  
  30. GC.enable
  31. GC.start
  32. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement