summaryrefslogtreecommitdiff
path: root/unittests/perf.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'unittests/perf.cpp')
-rw-r--r--unittests/perf.cpp50
1 files changed, 50 insertions, 0 deletions
diff --git a/unittests/perf.cpp b/unittests/perf.cpp
new file mode 100644
index 0000000..4e7155c
--- /dev/null
+++ b/unittests/perf.cpp
@@ -0,0 +1,50 @@
+#include "mockDefs.h"
+#include <benchmark/benchmark.h>
+#include <volume.h>
+
+using namespace GitFS;
+using namespace GitFS::Test;
+
+const Service globalService;
+
+struct BenchmarkClient : public benchmark::Fixture {
+ NetFS::ReqEnv re {"root", "root"};
+ std::string root {"/"}, deep {"/unittests/fixtures/executable"};
+};
+
+BENCHMARK_F(BenchmarkClient, statfs_root)(benchmark::State & state)
+{
+ VolumeClient v;
+ for (auto _ : state) {
+ benchmark::DoNotOptimize(v.v->statfs(re, root));
+ }
+}
+
+BENCHMARK_F(BenchmarkClient, getattr_root)(benchmark::State & state)
+{
+ VolumeClient v;
+ for (auto _ : state) {
+ benchmark::DoNotOptimize(v.v->getattr(re, root));
+ }
+}
+
+BENCHMARK_F(BenchmarkClient, getattr_deep)(benchmark::State & state)
+{
+ VolumeClient v;
+ for (auto _ : state) {
+ benchmark::DoNotOptimize(v.v->getattr(re, root));
+ }
+}
+
+BENCHMARK_F(BenchmarkClient, listdir_src)(benchmark::State & state)
+{
+ VolumeClient v;
+ const std::string src {"/src"};
+ auto dir = v.v->opendir(re, src);
+ for (auto _ : state) {
+ benchmark::DoNotOptimize(dir->listdir());
+ }
+ dir->close();
+}
+
+BENCHMARK_MAIN();