1 /*******************************************************************************
2 * Copyright (c) 2016 Ericsson
4 * All rights reserved. This program and the accompanying materials are
5 * made available under the terms of the Eclipse Public License v1.0 which
6 * accompanies this distribution, and is available at
7 * http://www.eclipse.org/legal/epl-v10.html
8 *******************************************************************************/
10 package org
.eclipse
.tracecompass
.internal
.analysis
.timing
.core
.callgraph
;
12 import org
.eclipse
.tracecompass
.analysis
.timing
.core
.segmentstore
.statistics
.SegmentStoreStatistics
;
13 import org
.eclipse
.tracecompass
.segmentstore
.core
.BasicSegment
;
16 * Class to calculate statistics for an aggregated function.
18 * @author Sonia Farrah
20 public class AggregatedCalledFunctionStatistics
extends SegmentStoreStatistics
{
23 * The maximum self time
25 private long fMaxSelfTime
;
27 * The minimum duration
29 private long fMinSelfTime
;
31 * The average self time
33 private double fSelfTimeAverage
;
35 * The variance of the self time
37 private double fVariance
;
43 * The function's duration
45 * The function's self time
47 public AggregatedCalledFunctionStatistics(long duration
, long selfTime
) {
48 fMaxSelfTime
= selfTime
;
49 fMinSelfTime
= selfTime
;
50 fSelfTimeAverage
= selfTime
;
52 update(new BasicSegment(0, duration
));
56 * Update the statistics, this is used while merging nodes for the
60 * The function to be merged duration
62 * The function to be merged self time
64 public void update(long duration
, long selfTime
) {
65 update(new BasicSegment(0, duration
));
66 if (fMaxSelfTime
< selfTime
) {
67 fMaxSelfTime
= selfTime
;
69 if (fMinSelfTime
> selfTime
) {
70 fMinSelfTime
= selfTime
;
72 double delta
= selfTime
- fSelfTimeAverage
;
73 fSelfTimeAverage
+= delta
/ getNbSegments();
74 fVariance
+= delta
* (selfTime
- fSelfTimeAverage
);
78 * Get the maximum self time
80 * @return The maximum self time
82 public long getMaxSelfTime() {
87 * Get the minimum self time
89 * @return The minimum self time
91 public long getMinSelfTime() {
96 * Get the average self time
98 * @return The average self time
100 public double getAverageSelfTime() {
101 return fSelfTimeAverage
;
105 * Get the standard deviation of the self time
107 * @return The standard deviation of the self time
109 public double getStdDevSelfTime() {
110 long nbSegments
= getNbSegments();
111 return nbSegments
> 2 ? Math
.sqrt(fVariance
/ (nbSegments
- 1)) : Double
.NaN
;
115 * Initialize the maximum and minimum self time
120 public void initializeMaxMinSelfTime(long selfTime
) {
121 fMaxSelfTime
= selfTime
;
122 fMinSelfTime
= selfTime
;
123 fSelfTimeAverage
= selfTime
;