Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(332)

Side by Side Diff: tools/Stats.h

Issue 377283002: nanobench: add median and --cpu/--gpu (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Created 6 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « bench/nanobench.cpp ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #ifndef Stats_DEFINED 1 #ifndef Stats_DEFINED
2 #define Stats_DEFINED 2 #define Stats_DEFINED
3 3
4 #include "SkTSort.h"
5
4 struct Stats { 6 struct Stats {
5 Stats(const double samples[], int n) { 7 Stats(const double samples[], int n) {
6 min = samples[0]; 8 min = samples[0];
7 max = samples[0]; 9 max = samples[0];
8 for (int i = 0; i < n; i++) { 10 for (int i = 0; i < n; i++) {
9 if (samples[i] < min) { min = samples[i]; } 11 if (samples[i] < min) { min = samples[i]; }
10 if (samples[i] > max) { max = samples[i]; } 12 if (samples[i] > max) { max = samples[i]; }
11 } 13 }
12 14
13 double sum = 0.0; 15 double sum = 0.0;
14 for (int i = 0 ; i < n; i++) { 16 for (int i = 0 ; i < n; i++) {
15 sum += samples[i]; 17 sum += samples[i];
16 } 18 }
17 mean = sum / n; 19 mean = sum / n;
18 20
19 double err = 0.0; 21 double err = 0.0;
20 for (int i = 0 ; i < n; i++) { 22 for (int i = 0 ; i < n; i++) {
21 err += (samples[i] - mean) * (samples[i] - mean); 23 err += (samples[i] - mean) * (samples[i] - mean);
22 } 24 }
23 var = err / (n-1); 25 var = err / (n-1);
26
27 SkAutoTMalloc<double> sorted(n);
28 memcpy(sorted.get(), samples, n * sizeof(double));
29 SkTQSort(sorted.get(), sorted.get() + n - 1);
30 median = sorted[n/2];
24 } 31 }
25 32
26 double min; 33 double min;
27 double max; 34 double max;
28 double mean; // Estimate of population mean. 35 double mean; // Estimate of population mean.
29 double var; // Estimate of population variance. 36 double var; // Estimate of population variance.
37 double median;
30 }; 38 };
31 39
32 #endif//Stats_DEFINED 40 #endif//Stats_DEFINED
OLDNEW
« no previous file with comments | « bench/nanobench.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698