forked from OSchip/llvm-project
[NFC][XRay] Account: decouple getStats() interface from underlying data structure
It doesn't really need to know where Timings are stored, it just needs to be able to sort them, so MutableArrayRef is enough. That uncovers an interesting quirk that it relied on implicit double->int conversion for calculating percentiles.
This commit is contained in:
parent
18df607dbe
commit
ed5a6b9305
|
@ -226,7 +226,7 @@ struct ResultRow {
|
|||
std::string Function;
|
||||
};
|
||||
|
||||
ResultRow getStats(std::vector<uint64_t> &Timings) {
|
||||
ResultRow getStats(MutableArrayRef<uint64_t> Timings) {
|
||||
assert(!Timings.empty());
|
||||
ResultRow R;
|
||||
R.Sum = std::accumulate(Timings.begin(), Timings.end(), 0.0);
|
||||
|
@ -240,11 +240,13 @@ ResultRow getStats(std::vector<uint64_t> &Timings) {
|
|||
R.Median = Timings[MedianOff];
|
||||
|
||||
auto Pct90Off = std::floor(Timings.size() * 0.9);
|
||||
std::nth_element(Timings.begin(), Timings.begin() + Pct90Off, Timings.end());
|
||||
std::nth_element(Timings.begin(), Timings.begin() + (uint64_t)Pct90Off,
|
||||
Timings.end());
|
||||
R.Pct90 = Timings[Pct90Off];
|
||||
|
||||
auto Pct99Off = std::floor(Timings.size() * 0.99);
|
||||
std::nth_element(Timings.begin(), Timings.begin() + Pct99Off, Timings.end());
|
||||
std::nth_element(Timings.begin(), Timings.begin() + (uint64_t)Pct99Off,
|
||||
Timings.end());
|
||||
R.Pct99 = Timings[Pct99Off];
|
||||
return R;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue