aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/compute/hs/cl/bench/sort.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/compute/hs/cl/bench/sort.cpp')
-rw-r--r--src/compute/hs/cl/bench/sort.cpp38
1 files changed, 30 insertions, 8 deletions
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;
}
//