aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorGravatar Allan MacKinnon <allanmac@google.com>2018-07-17 13:10:25 -0700
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2018-07-17 21:04:11 +0000
commitbb1ccdbc33d704afb7cbd19beb22dc6972e58b5f (patch)
treec5acaf992b25541f9704e350a201a2635a2c97b4 /src
parentbe66831e6a805272516cc0eb59cdf441e38877ea (diff)
Use std::chrono for measuring timing
Bug: skia: Change-Id: Ida239fa3b47056289d698a19a624703fe6ff3f35 Reviewed-on: https://skia-review.googlesource.com/141951 Reviewed-by: Allan MacKinnon <allanmac@google.com> Commit-Queue: Allan MacKinnon <allanmac@google.com>
Diffstat (limited to 'src')
-rw-r--r--src/compute/hs/cl/bench/main.c41
-rw-r--r--src/compute/hs/cl/bench/sort.cpp38
2 files changed, 39 insertions, 40 deletions
diff --git a/src/compute/hs/cl/bench/main.c b/src/compute/hs/cl/bench/main.c
index bfa7c1da38..8be6058981 100644
--- a/src/compute/hs/cl/bench/main.c
+++ b/src/compute/hs/cl/bench/main.c
@@ -10,21 +10,12 @@
//
//
+#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <time.h>
//
-// CPU bench
-//
-
-#ifdef _MSC_VER
-#include <windows.h>
-#else
-#include <sys/time.h>
-#endif
-
-//
// squelch OpenCL 1.2 deprecation warning
//
@@ -82,8 +73,8 @@ hs_fill_rand(uint32_t * vin_h, uint32_t const count, uint32_t const words)
//
//
-char const * hs_cpu_sort_u32(uint32_t * a, uint32_t const count);
-char const * hs_cpu_sort_u64(uint64_t * a, uint32_t const count);
+char const * hs_cpu_sort_u32(uint32_t * a, uint32_t const count, double * const cpu_ns);
+char const * hs_cpu_sort_u64(uint64_t * a, uint32_t const count, double * const cpu_ns);
//
//
@@ -91,29 +82,15 @@ char const * hs_cpu_sort_u64(uint64_t * a, uint32_t const count);
static
char const *
-hs_cpu_sort(uint32_t const hs_words,
- void * sorted_h,
- uint32_t const count,
- double * const cpu_ns)
+hs_cpu_sort(uint32_t const hs_words,
+ void * sorted_h,
+ uint32_t const count,
+ double * const cpu_ns)
{
- char const * algo;
-
- LARGE_INTEGER t0,t1,freq;
-
- QueryPerformanceCounter(&t0);
-
if (hs_words == 1)
- algo = hs_cpu_sort_u32(sorted_h,count);
+ return hs_cpu_sort_u32(sorted_h,count,cpu_ns);
else
- algo = hs_cpu_sort_u64(sorted_h,count);
-
- QueryPerformanceCounter(&t1);
- QueryPerformanceFrequency(&freq);
-
- // nanoseconds
- *cpu_ns = (double)((t1.QuadPart - t0.QuadPart) * 1000 * 1000 * 1000) / (double)freq.QuadPart;
-
- return algo;
+ return hs_cpu_sort_u64(sorted_h,count,cpu_ns);
}
static
diff --git a/src/compute/hs/cl/bench/sort.cpp b/src/compute/hs/cl/bench/sort.cpp
index 13e0af556e..4daa2c70ce 100644
--- a/src/compute/hs/cl/bench/sort.cpp
+++ b/src/compute/hs/cl/bench/sort.cpp
@@ -69,34 +69,56 @@ hs_qsort_compare_u64(void const * a, void const * b)
extern "C"
char const *
-hs_cpu_sort_u32(uint32_t * a, uint32_t const count)
+hs_cpu_sort_u32(uint32_t * a, uint32_t const count, double * const cpu_ns)
{
+ using to_ns = std::chrono::duration<double,std::chrono::nanoseconds::period>;
+
+ auto start = std::chrono::high_resolution_clock::now();
+
#if defined ( HS_USE_PARALLEL_SORT )
std::sort(std::execution::par_unseq,a,a+count);
- return "std::sort(std::execution::par_unseq)()";
+ char const * const algo = "std::sort(std::execution::par_unseq)()";
#elif defined ( HS_USE_STD_SORT )
std::sort(a,a+count);
- return "std:sort()";
+ char const * const algo = "std:sort()";
#elif defined ( HS_USE_QSORT )
qsort(a,count,sizeof(*a),hs_qsort_compare_u32);
- return "qsort()";
+ char const * const algo = "qsort()";
#endif
+
+ auto stop = std::chrono::high_resolution_clock::now();
+ auto duration_ns = to_ns(stop - start);
+
+ *cpu_ns = duration_ns.count();
+
+ return algo;
}
extern "C"
char const *
-hs_cpu_sort_u64(uint64_t * a, uint32_t const count)
+hs_cpu_sort_u64(uint64_t * a, uint32_t const count, double * const cpu_ns)
{
+ using to_ns = std::chrono::duration<double,std::chrono::nanoseconds::period>;
+
+ auto start = std::chrono::high_resolution_clock::now();
+
#if defined ( HS_USE_PARALLEL_SORT )
std::sort(std::execution::par_unseq,a,a+count);
- return "std::sort(std::execution::par_unseq)()";
+ char const * const algo = "std::sort(std::execution::par_unseq)()";
#elif defined ( HS_USE_STD_SORT )
std::sort(a,a+count);
- return "std::sort()";
+ char const * const algo = "std::sort()";
#elif defined ( HS_USE_QSORT )
qsort(a,count,sizeof(*a),hs_qsort_compare_u64);
- return "qsort()";
+ char const * const algo = "qsort()";
#endif
+
+ auto stop = std::chrono::high_resolution_clock::now();
+ auto duration_ns = to_ns(stop - start);
+
+ *cpu_ns = duration_ns.count();
+
+ return algo;
}
//