diff options
author | Geir Storli <geirst@yahooinc.com> | 2022-06-30 11:13:02 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-06-30 11:13:02 +0200 |
commit | dc1b5d78ca36f10d959cc19469e96c3f719030cf (patch) | |
tree | 1f1c2c46a8c3836e07d92a9a5b453ab6644237c0 | |
parent | 69547aedbcee99bdfb819c683b6441ee09df15cb (diff) | |
parent | 91f191afaf6279f7aed385741eef11333ac19509 (diff) |
Merge pull request #23282 from vespa-engine/balder/improve-inlining
Avoid @plt indirection and improve inlining of frequently called method
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 { |