diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2022-06-30 07:38:25 +0000 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2022-06-30 07:38:25 +0000 |
commit | 91f191afaf6279f7aed385741eef11333ac19509 (patch) | |
tree | 826271bdca98d59d650df0531d9413b0c8a65f14 /searchlib | |
parent | db0ed7d78ea20da412b0628d418e2f16d66a4f49 (diff) |
Avoid @plt indirection and improve inlining of frequently called method
Diffstat (limited to 'searchlib')
3 files changed, 6 insertions, 15 deletions
diff --git a/searchlib/src/vespa/searchlib/tensor/distance_calculator.cpp b/searchlib/src/vespa/searchlib/tensor/distance_calculator.cpp index 6bb3d9ed49b..c53d50bc9ff 100644 --- a/searchlib/src/vespa/searchlib/tensor/distance_calculator.cpp +++ b/searchlib/src/vespa/searchlib/tensor/distance_calculator.cpp @@ -2,7 +2,6 @@ #include "distance_calculator.h" #include "distance_function_factory.h" -#include "i_tensor_attribute.h" #include "nearest_neighbor_index.h" #include <vespa/eval/eval/fast_value.h> @@ -87,12 +86,5 @@ DistanceCalculator::DistanceCalculator(const tensor::ITensorAttribute& attr_tens DistanceCalculator::~DistanceCalculator() = default; -double -DistanceCalculator::calc_with_limit(uint32_t docid, double limit) const -{ - auto rhs = _attr_tensor.extract_cells_ref(docid); - return _dist_fun->calc_with_limit(_query_tensor_cells, rhs, limit); -} - } diff --git a/searchlib/src/vespa/searchlib/tensor/distance_calculator.h b/searchlib/src/vespa/searchlib/tensor/distance_calculator.h index df9344a24d1..eeb66887598 100644 --- a/searchlib/src/vespa/searchlib/tensor/distance_calculator.h +++ b/searchlib/src/vespa/searchlib/tensor/distance_calculator.h @@ -1,16 +1,13 @@ // Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. #pragma once -#include <vespa/eval/eval/typed_cells.h> -#include <memory> +#include "distance_function.h" +#include "i_tensor_attribute.h" namespace vespalib::eval { struct Value; } namespace search::tensor { -class DistanceFunction; -class ITensorAttribute; - /** * Class used to calculate the distance between two n-dimensional vectors, * where one is stored in a TensorAttribute and the other comes from the query. @@ -43,7 +40,9 @@ public: const vespalib::eval::Value& query_tensor() const { return *_query_tensor; } const DistanceFunction& function() const { return *_dist_fun; } - double calc_with_limit(uint32_t docid, double limit) const; + double calc_with_limit(uint32_t docid, double limit) const { + return _dist_fun->calc_with_limit(_query_tensor_cells, _attr_tensor.extract_cells_ref(docid), limit); + } }; } diff --git a/searchlib/src/vespa/searchlib/tensor/distance_function.h b/searchlib/src/vespa/searchlib/tensor/distance_function.h index 77873cb7ced..d5ebf656189 100644 --- a/searchlib/src/vespa/searchlib/tensor/distance_function.h +++ b/searchlib/src/vespa/searchlib/tensor/distance_function.h @@ -23,7 +23,7 @@ public: DistanceFunction(vespalib::eval::CellType expected) : _expect_cell_type(expected) {} - virtual ~DistanceFunction() {} + virtual ~DistanceFunction() = default; // input (query) vectors must be converted to this cell type: vespalib::eval::CellType expected_cell_type() const { |