Module: Memory

Defined in:
lib/memory/cache.rb,
lib/memory.rb,
lib/memory/deque.rb,
lib/memory/report.rb,
lib/memory/sampler.rb,
lib/memory/version.rb,
lib/memory/aggregate.rb,
lib/memory/rspec/profiler.rb

Overview

Released under the MIT License. Copyright, 2020-2022, by Samuel Williams.

Defined Under Namespace

Modules: RSpec Classes: Aggregate, Allocation, Cache, Deque, Report, Sampler, ValueAggregate, Wrapper

Constant Summary collapse

VERSION =
"0.3.0"
UNITS =
{
  0 => 'B',
  3 => 'KiB',
  6 => 'MiB',
  9 => 'GiB',
  12 => 'TiB',
  15 => 'PiB',
  18 => 'EiB',
  21 => 'ZiB',
  24 => 'YiB'
}.freeze

Class Method Summary collapse

Class Method Details

.formatted_bytes(bytes) ⇒ Object



19
20
21
22
23
24
25
# File 'lib/memory/aggregate.rb', line 19

def self.formatted_bytes(bytes)
  return "0 B" if bytes.zero?
  
  scale = Math.log2(bytes).div(10) * 3
  scale = 24 if scale > 24
  "%.2f #{UNITS[scale]}" % (bytes / 10.0**scale)
end

.report(&block) ⇒ Object



16
17
18
19
20
21
# File 'lib/memory.rb', line 16

def self.report(&block)
  sampler = Sampler.new
  sampler.run(&block)
  
  return sampler.report
end