33 lines
785 B
C++
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();
|
|
}
|