| 2183 | } |
| 2184 | |
| 2185 | bool RuntimeProfile::AveragedCounter::HasSkew(double threshold, string* details) { |
| 2186 | bool has_skew = false; |
| 2187 | stringstream ss_details; |
| 2188 | if (unit_ == TUnit::DOUBLE_VALUE) { |
| 2189 | has_skew = EvaluateSkewWithCoV<double>(threshold, &ss_details); |
| 2190 | } else { |
| 2191 | has_skew = EvaluateSkewWithCoV<int64_t>(threshold, &ss_details); |
| 2192 | } |
| 2193 | if (has_skew && details) { |
| 2194 | *details = ss_details.str(); |
| 2195 | return true; |
| 2196 | } |
| 2197 | return false; |
| 2198 | } |
| 2199 | |
| 2200 | template <typename T> |
| 2201 | bool RuntimeProfile::AveragedCounter::EvaluateSkewWithCoV( |