Sha256: 29705f870ba7bcf05d520e0a94307580e10530fbca59acadf0b21d2871f7523f
Contents?: true
Size: 890 Bytes
Versions: 1
Compression:
Stored size: 890 Bytes
Contents
# frozen_string_literal: true module Prawn # Throughout the Prawn codebase, repeated calculations which can benefit from # caching are made. n some cases, caching and reusing results can not only # save CPU cycles but also greatly reduce memory requirements But at the same # time, we don't want to throw away thread safety. # @private class SynchronizedCache # As an optimization, this could access the hash directly on VMs with # a global interpreter lock (like MRI). def initialize @cache = {} @mutex = Mutex.new end # Get cache entry. # # @param key [any] # @return [any] def [](key) @mutex.synchronize { @cache[key] } end # Set cache entry. # # @param key [any] # @param value [any] # @return [void] def []=(key, value) @mutex.synchronize { @cache[key] = value } end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
prawn-2.5.0 | lib/prawn/utilities.rb |