diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2020-02-25 11:06:09 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-02-25 11:06:09 +0100 |
commit | 3b70fbe1f3a0087b0faaa8908cc1cac31b805d40 (patch) | |
tree | 17f4371120b9fe1a8c5ac5169fcfc783cd4ea781 | |
parent | 6fda3a1b3d550c454b59f3898ae23486d1b1ed4c (diff) | |
parent | 6b746cd4e6cb3887f3bd415848c2a53b6d0458e4 (diff) |
Merge pull request #12328 from vespa-engine/balder/add-executor-benchmark
Balder/add executor benchmark
6 files changed, 33 insertions, 5 deletions
diff --git a/searchlib/src/apps/tests/memoryindexstress_test.cpp b/searchlib/src/apps/tests/memoryindexstress_test.cpp index a7689cd6b9f..60f3a6b7664 100644 --- a/searchlib/src/apps/tests/memoryindexstress_test.cpp +++ b/searchlib/src/apps/tests/memoryindexstress_test.cpp @@ -16,7 +16,6 @@ #include <vespa/searchlib/index/i_field_length_inspector.h> #include <vespa/searchlib/memoryindex/memory_index.h> #include <vespa/searchlib/query/tree/simplequery.h> -#include <vespa/searchlib/queryeval/booleanmatchiteratorwrapper.h> #include <vespa/searchlib/queryeval/fake_requestcontext.h> #include <vespa/searchlib/queryeval/fake_search.h> #include <vespa/searchlib/queryeval/fake_searchable.h> @@ -24,7 +23,6 @@ #include <vespa/searchlib/test/index/mock_field_length_inspector.h> #include <vespa/searchlib/util/rand48.h> #include <vespa/vespalib/testkit/testapp.h> -#include <vespa/vespalib/util/stringfmt.h> #include <vespa/vespalib/util/threadstackexecutor.h> #include <vespa/log/log.h> diff --git a/searchlib/src/tests/common/sequencedtaskexecutor/.gitignore b/searchlib/src/tests/common/sequencedtaskexecutor/.gitignore index 35d038b0b7c..4bd94f124fb 100644 --- a/searchlib/src/tests/common/sequencedtaskexecutor/.gitignore +++ b/searchlib/src/tests/common/sequencedtaskexecutor/.gitignore @@ -1 +1,2 @@ searchlib_sequencedtaskexecutor_test_app +searchlib_sequencedtaskexecutor_benchmark_app diff --git a/searchlib/src/tests/common/sequencedtaskexecutor/CMakeLists.txt b/searchlib/src/tests/common/sequencedtaskexecutor/CMakeLists.txt index 6ba30a1647f..6c593d20683 100644 --- a/searchlib/src/tests/common/sequencedtaskexecutor/CMakeLists.txt +++ b/searchlib/src/tests/common/sequencedtaskexecutor/CMakeLists.txt @@ -1,4 +1,11 @@ # Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +vespa_add_executable(searchlib_sequencedtaskexecutor_benchmark_app TEST + SOURCES + sequencedtaskexecutor_benchmark.cpp + DEPENDS + searchlib +) + vespa_add_executable(searchlib_sequencedtaskexecutor_test_app TEST SOURCES sequencedtaskexecutor_test.cpp diff --git a/searchlib/src/tests/common/sequencedtaskexecutor/sequencedtaskexecutor_benchmark.cpp b/searchlib/src/tests/common/sequencedtaskexecutor/sequencedtaskexecutor_benchmark.cpp new file mode 100644 index 00000000000..a51becfbf13 --- /dev/null +++ b/searchlib/src/tests/common/sequencedtaskexecutor/sequencedtaskexecutor_benchmark.cpp @@ -0,0 +1,24 @@ +// Copyright 2020 Oath Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. + +#include <vespa/searchlib/common/sequencedtaskexecutor.h> +#include <vespa/vespalib/util/lambdatask.h> +#include <atomic> + +using search::SequencedTaskExecutor; +using ExecutorId = search::ISequencedTaskExecutor::ExecutorId; + +int main(int argc, char *argv[]) { + unsigned long numTasks = 1000000; + unsigned numThreads = 4; + std::atomic<long> counter(0); + if (argc > 1) + numTasks = atol(argv[1]); + if (argc > 2) + numThreads = atoi(argv[2]); + + SequencedTaskExecutor executor(numThreads); + for (unsigned long tid(0); tid < numTasks; tid++) { + executor.executeTask(ExecutorId(tid%numThreads), vespalib::makeLambdaTask([&counter] { counter++; })); + } + return 0; +} diff --git a/searchlib/src/vespa/searchlib/common/sequencedtaskexecutor.cpp b/searchlib/src/vespa/searchlib/common/sequencedtaskexecutor.cpp index bb779b659ab..617e4bf5c85 100644 --- a/searchlib/src/vespa/searchlib/common/sequencedtaskexecutor.cpp +++ b/searchlib/src/vespa/searchlib/common/sequencedtaskexecutor.cpp @@ -2,7 +2,6 @@ #include "sequencedtaskexecutor.h" #include <vespa/vespalib/util/blockingthreadstackexecutor.h> -#include <vespa/vespalib/stllike/hash_map.hpp> using vespalib::BlockingThreadStackExecutor; diff --git a/searchlib/src/vespa/searchlib/common/sequencedtaskexecutor.h b/searchlib/src/vespa/searchlib/common/sequencedtaskexecutor.h index 2b7e70d69c7..9337f393150 100644 --- a/searchlib/src/vespa/searchlib/common/sequencedtaskexecutor.h +++ b/searchlib/src/vespa/searchlib/common/sequencedtaskexecutor.h @@ -2,7 +2,6 @@ #pragma once #include "isequencedtaskexecutor.h" -#include <vespa/vespalib/stllike/hash_map.h> #include <vector> namespace vespalib { @@ -16,7 +15,7 @@ namespace search { * Class to run multiple tasks in parallel, but tasks with same * id has to be run in sequence. */ -class SequencedTaskExecutor : public ISequencedTaskExecutor +class SequencedTaskExecutor final : public ISequencedTaskExecutor { using Stats = vespalib::ExecutorStats; std::vector<std::shared_ptr<vespalib::BlockingThreadStackExecutor>> _executors; |