per discussion remove instrumentation altogether

This commit is contained in:
Sam 2013-03-13 22:18:40 -07:00
parent 31ba6fbb08
commit 08a182d743
2 changed files with 1 additions and 34 deletions

View File

@ -31,14 +31,6 @@ end
u = User.new(1, "sam", 10, "about")
s = UserSerializer.new(u)
u2 = User.new(2, "sam", 20, "about")
s2 = UserSerializer.new(u2)
p s2.attributes
p s.attributes
n = 100000
Benchmark.bmbm {|x|
@ -46,7 +38,6 @@ Benchmark.bmbm {|x|
x.report("fast_hash") { n.times { u.fast_hash } }
x.report("attributes") { n.times { UserSerializer.new(u).attributes } }
x.report("serializable_hash") { n.times { UserSerializer.new(u).serializable_hash } }
x.report("serializable_hash_with_instrumentation") { n.times { UserSerializer.new(u).serializable_hash_with_instrumentation } }
}

View File

@ -284,37 +284,13 @@ module ActiveModel
# Returns a hash representation of the serializable
# object without the root.
def serializable_hash_without_instrumentation
def serializable_hash
return nil if @object.nil?
@node = attributes
include_associations! if _embed
@node
end
def serializable_hash_with_instrumentation
return nil if @object.nil?
instrument(:serialize, :serializer => self.class.name) do
@node = attributes
instrument :associations do
include_associations! if _embed
end
@node
end
end
# disable all instrumentation on serializable_hash (performance will be better)
def self.disable_instrumentation!
alias_method :serializable_hash, :serializable_hash_without_instrumentation
end
# enable instrumentation for serializable_hash (performance may be impacted)
def self.enable_instrumentation!
alias_method :serializable_hash, :serializable_hash_with_instrumentation
end
disable_instrumentation!
def include_associations!
_associations.each_key do |name|
include!(name) if include?(name)