summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGeir Storli <geirst@yahooinc.com>2022-06-30 11:13:02 +0200
committerGitHub <noreply@github.com>2022-06-30 11:13:02 +0200
commitdc1b5d78ca36f10d959cc19469e96c3f719030cf (patch)
tree1f1c2c46a8c3836e07d92a9a5b453ab6644237c0
parent69547aedbcee99bdfb819c683b6441ee09df15cb (diff)
parent91f191afaf6279f7aed385741eef11333ac19509 (diff)
Merge pull request #23282 from vespa-engine/balder/improve-inlining
Avoid @plt indirection and improve inlining of frequently called method
-rw-r--r--searchlib/src/vespa/searchlib/tensor/distance_calculator.cpp8
-rw-r--r--searchlib/src/vespa/searchlib/tensor/distance_calculator.h11
-rw-r--r--searchlib/src/vespa/searchlib/tensor/distance_function.h2
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 {