mirror of
https://github.com/ditkrg/active_model_serializers.git
synced 2026-01-22 22:06:50 +00:00
per discussion remove instrumentation altogether
This commit is contained in:
parent
31ba6fbb08
commit
08a182d743
@ -31,14 +31,6 @@ end
|
|||||||
u = User.new(1, "sam", 10, "about")
|
u = User.new(1, "sam", 10, "about")
|
||||||
s = UserSerializer.new(u)
|
s = UserSerializer.new(u)
|
||||||
|
|
||||||
u2 = User.new(2, "sam", 20, "about")
|
|
||||||
s2 = UserSerializer.new(u2)
|
|
||||||
|
|
||||||
p s2.attributes
|
|
||||||
|
|
||||||
p s.attributes
|
|
||||||
|
|
||||||
|
|
||||||
n = 100000
|
n = 100000
|
||||||
|
|
||||||
Benchmark.bmbm {|x|
|
Benchmark.bmbm {|x|
|
||||||
@ -46,7 +38,6 @@ Benchmark.bmbm {|x|
|
|||||||
x.report("fast_hash") { n.times { u.fast_hash } }
|
x.report("fast_hash") { n.times { u.fast_hash } }
|
||||||
x.report("attributes") { n.times { UserSerializer.new(u).attributes } }
|
x.report("attributes") { n.times { UserSerializer.new(u).attributes } }
|
||||||
x.report("serializable_hash") { n.times { UserSerializer.new(u).serializable_hash } }
|
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 } }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -284,37 +284,13 @@ module ActiveModel
|
|||||||
|
|
||||||
# Returns a hash representation of the serializable
|
# Returns a hash representation of the serializable
|
||||||
# object without the root.
|
# object without the root.
|
||||||
def serializable_hash_without_instrumentation
|
def serializable_hash
|
||||||
return nil if @object.nil?
|
return nil if @object.nil?
|
||||||
@node = attributes
|
@node = attributes
|
||||||
include_associations! if _embed
|
include_associations! if _embed
|
||||||
@node
|
@node
|
||||||
end
|
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!
|
def include_associations!
|
||||||
_associations.each_key do |name|
|
_associations.each_key do |name|
|
||||||
include!(name) if include?(name)
|
include!(name) if include?(name)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user