Class: NewRelic::Agent::ThreadProfile::Node
- Inherits:
-
Object
- Object
- NewRelic::Agent::ThreadProfile::Node
- Includes:
- Coerce
- Defined in:
- lib/new_relic/agent/thread_profiler.rb
Instance Attribute Summary collapse
-
#children ⇒ Object
readonly
Returns the value of attribute children.
-
#depth ⇒ Object
Returns the value of attribute depth.
-
#file ⇒ Object
readonly
Returns the value of attribute file.
-
#line_no ⇒ Object
readonly
Returns the value of attribute line_no.
-
#method ⇒ Object
readonly
Returns the value of attribute method.
-
#runnable_count ⇒ Object
Returns the value of attribute runnable_count.
-
#to_prune ⇒ Object
Returns the value of attribute to_prune.
Class Method Summary collapse
Instance Method Summary collapse
- #==(other) ⇒ Object
- #add_child(child) ⇒ Object
-
#initialize(line, parent = nil) ⇒ Node
constructor
A new instance of Node.
-
#order_for_pruning(y) ⇒ Object
Descending order on count, ascending on depth of nodes.
- #prune! ⇒ Object
- #to_array ⇒ Object
- #total_count ⇒ Object
Methods included from Coerce
#float, #int, #log_failure, #string
Constructor Details
#initialize(line, parent = nil) ⇒ Node
Returns a new instance of Node.
265 266 267 268 269 270 271 272 273 274 275 276 |
# File 'lib/new_relic/agent/thread_profiler.rb', line 265 def initialize(line, parent=nil) line =~ /(.*)\:(\d+)\:in `(.*)'/ @file = $1 @method = $3 @line_no = $2.to_i @children = [] @runnable_count = 0 @to_prune = false @depth = 0 parent.add_child(self) if parent end |
Instance Attribute Details
#children ⇒ Object (readonly)
Returns the value of attribute children.
262 263 264 |
# File 'lib/new_relic/agent/thread_profiler.rb', line 262 def children @children end |
#depth ⇒ Object
Returns the value of attribute depth.
263 264 265 |
# File 'lib/new_relic/agent/thread_profiler.rb', line 263 def depth @depth end |
#file ⇒ Object (readonly)
Returns the value of attribute file.
262 263 264 |
# File 'lib/new_relic/agent/thread_profiler.rb', line 262 def file @file end |
#line_no ⇒ Object (readonly)
Returns the value of attribute line_no.
262 263 264 |
# File 'lib/new_relic/agent/thread_profiler.rb', line 262 def line_no @line_no end |
#method ⇒ Object (readonly)
Returns the value of attribute method.
262 263 264 |
# File 'lib/new_relic/agent/thread_profiler.rb', line 262 def method @method end |
#runnable_count ⇒ Object
Returns the value of attribute runnable_count.
263 264 265 |
# File 'lib/new_relic/agent/thread_profiler.rb', line 263 def runnable_count @runnable_count end |
#to_prune ⇒ Object
Returns the value of attribute to_prune.
263 264 265 |
# File 'lib/new_relic/agent/thread_profiler.rb', line 263 def to_prune @to_prune end |
Class Method Details
.prune!(kids) ⇒ Object
315 316 317 318 |
# File 'lib/new_relic/agent/thread_profiler.rb', line 315 def self.prune!(kids) kids.delete_if { |child| child.to_prune } kids.each { |child| child.prune! } end |
Instance Method Details
#==(other) ⇒ Object
278 279 280 281 282 |
# File 'lib/new_relic/agent/thread_profiler.rb', line 278 def ==(other) @file == other.file && @method == other.method && @line_no == other.line_no end |
#add_child(child) ⇒ Object
306 307 308 309 |
# File 'lib/new_relic/agent/thread_profiler.rb', line 306 def add_child(child) child.depth = @depth + 1 @children << child unless @children.include? child end |
#order_for_pruning(y) ⇒ Object
Descending order on count, ascending on depth of nodes
289 290 291 |
# File 'lib/new_relic/agent/thread_profiler.rb', line 289 def order_for_pruning(y) [-runnable_count, depth] <=> [-y.runnable_count, y.depth] end |
#prune! ⇒ Object
311 312 313 |
# File 'lib/new_relic/agent/thread_profiler.rb', line 311 def prune! Node.prune!(@children) end |
#to_array ⇒ Object
295 296 297 298 299 300 301 302 303 304 |
# File 'lib/new_relic/agent/thread_profiler.rb', line 295 def to_array [[ string(@file), string(@method), int(@line_no) ], int(@runnable_count), 0, @children.map {|c| c.to_array}] end |
#total_count ⇒ Object
284 285 286 |
# File 'lib/new_relic/agent/thread_profiler.rb', line 284 def total_count @runnable_count end |