alsk/celero/bone/loop.cpp

33 lines
785 B
C++

#include <celero/Celero.h>
#include <alsk/alsk.h>
#include "common.h"
using namespace bench;
using namespace alsk::arg;
constexpr unsigned samples = 50, iterations = 100;
constexpr unsigned n = 100, vecSize = 100;
void hwLoop() {
for(std::size_t i = 0; i < n; ++i) taskV<vecSize>();
}
constexpr auto eLoop = seq(n * eTaskV<vecSize>);
constexpr auto eLoopStdFun = seq(n * eTaskVStdFun<vecSize>);
BASELINE(Loop, Handwritten, samples, iterations) {
hwLoop();
}
BENCHMARK(Loop, Skeleton, samples, iterations) {
auto loop = alsk::edsl::implement<alsk::exec::Sequential>(eLoop);
loop();
}
BENCHMARK(Loop, SkeletonStdFunction, samples, iterations) {
auto loop = alsk::edsl::implement<alsk::exec::Sequential>(eLoopStdFun);
loop.skeleton.task = taskV<vecSize>;
loop();
}