Skip to content

Commit

Permalink
Add is_palindrome benchmarking
Browse files Browse the repository at this point in the history
  • Loading branch information
oboukli committed Jun 24, 2023
1 parent d97a567 commit 2061da6
Show file tree
Hide file tree
Showing 3 changed files with 70 additions and 1 deletion.
7 changes: 7 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -73,3 +73,10 @@ add_executable(
test/fizzbuzz_test.cpp
)
target_link_libraries(tests PRIVATE Catch2::Catch2WithMain)

find_package(nanobench REQUIRED)
add_executable(
palindrome_benchmark
"benchmark/palindrome_benchmark.cpp"
)
target_link_libraries(palindrome_benchmark PRIVATE nanobench::nanobench)
61 changes: 61 additions & 0 deletions benchmark/palindrome_benchmark.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
// Copyright (c) Omar Boukli-Hacene. All rights reserved.
// Distributed under an MIT-style license that can be
// found in the LICENSE file.

// SPDX-License-Identifier: MIT

#include "forfun/palindrome.hpp"

#define ANKERL_NANOBENCH_IMPLEMENT
#include <nanobench.h>

#include <string_view>

int main() {
std::string_view sv{"oooooooooooooooooooooooooooooooooooooooooooooooooo"
"oooooooooooooooooooooooooooooooooooooooooooooooooo"};

ankerl::nanobench::Bench().run(
"forfun::palindrome::raw::is_palindrome", [&sv]() {
ankerl::nanobench::doNotOptimizeAway(
forfun::palindrome::raw::is_palindrome(sv));
});

ankerl::nanobench::Bench().run(
"forfun::palindrome::fast::is_palindrome", [&sv]() {
ankerl::nanobench::doNotOptimizeAway(
forfun::palindrome::fast::is_palindrome(sv));
});

ankerl::nanobench::Bench().run(
"forfun::palindrome::stl_bloated::is_palindrome", [&sv]() {
ankerl::nanobench::doNotOptimizeAway(
forfun::palindrome::stl_bloated::is_palindrome(sv));
});

ankerl::nanobench::Bench().run(
"forfun::palindrome::stl_fast::is_palindrome", [&sv]() {
ankerl::nanobench::doNotOptimizeAway(
forfun::palindrome::stl_fast::is_palindrome(sv));
});

ankerl::nanobench::Bench().run(
"forfun::palindrome::raw::is_palindrome_ci", [&sv]() {
ankerl::nanobench::doNotOptimizeAway(
forfun::palindrome::raw::is_palindrome_ci(sv));
});

ankerl::nanobench::Bench().run(
"forfun::palindrome::fast::is_palindrome_ci", [&sv]() {
ankerl::nanobench::doNotOptimizeAway(
forfun::palindrome::fast::is_palindrome_ci(sv));
});

ankerl::nanobench::Bench().run(
"forfun::palindrome::stl_bloated::is_palindrome_ci", [&sv]() {
ankerl::nanobench::doNotOptimizeAway(
forfun::palindrome::stl_bloated::is_palindrome_ci(sv));
});

return 0;
}
3 changes: 2 additions & 1 deletion vcpkg.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
{
"dependencies": [
"catch2"
"catch2",
"nanobench"
]
}

0 comments on commit 2061da6

Please sign in to comment.