aboutsummaryrefslogtreecommitdiffstats
path: root/eval
diff options
context:
space:
mode:
authorArne H Juul <arnej27959@users.noreply.github.com>2021-03-01 15:04:17 +0100
committerGitHub <noreply@github.com>2021-03-01 15:04:17 +0100
commit2552b0b8cd472c99b350c16736891e42b3c4b6ae (patch)
treed6058e64a7708f21d263cbb41b5e99397f711b62 /eval
parente9e3d3805817d0432c8651e9a1596fef369e99aa (diff)
parentc4bf244c055778d7a668843069a648fde03e5b0e (diff)
Merge pull request #16716 from vespa-engine/arnej/small-vector-in-rename
Arnej/small vector in rename
Diffstat (limited to 'eval')
-rw-r--r--eval/src/tests/instruction/generic_rename/generic_rename_test.cpp6
-rw-r--r--eval/src/vespa/eval/instruction/generic_rename.cpp16
-rw-r--r--eval/src/vespa/eval/instruction/generic_rename.h7
3 files changed, 15 insertions, 14 deletions
diff --git a/eval/src/tests/instruction/generic_rename/generic_rename_test.cpp b/eval/src/tests/instruction/generic_rename/generic_rename_test.cpp
index dedb22f2763..9c17dce972f 100644
--- a/eval/src/tests/instruction/generic_rename/generic_rename_test.cpp
+++ b/eval/src/tests/instruction/generic_rename/generic_rename_test.cpp
@@ -53,8 +53,8 @@ TEST(GenericRenameTest, dense_rename_plan_can_be_created_and_executed) {
std::vector<vespalib::string> to({"f", "a", "b"});
ValueType renamed = lhs.rename(from, to);
auto plan = DenseRenamePlan(lhs, renamed, from, to);
- std::vector<size_t> expect_loop = {15,2,7};
- std::vector<size_t> expect_stride = {7,105,1};
+ SmallVector<size_t> expect_loop = {15,2,7};
+ SmallVector<size_t> expect_stride = {7,105,1};
EXPECT_EQ(plan.subspace_size, 210);
EXPECT_EQ(plan.loop_cnt, expect_loop);
EXPECT_EQ(plan.stride, expect_stride);
@@ -84,7 +84,7 @@ TEST(GenericRenameTest, sparse_rename_plan_can_be_created) {
ValueType renamed = lhs.rename(from, to);
auto plan = SparseRenamePlan(lhs, renamed, from, to);
EXPECT_EQ(plan.mapped_dims, 4);
- std::vector<size_t> expect = {2,0,1,3};
+ SmallVector<size_t> expect = {2,0,1,3};
EXPECT_EQ(plan.output_dimensions, expect);
}
diff --git a/eval/src/vespa/eval/instruction/generic_rename.cpp b/eval/src/vespa/eval/instruction/generic_rename.cpp
index 4fe347375c4..8363d4db573 100644
--- a/eval/src/vespa/eval/instruction/generic_rename.cpp
+++ b/eval/src/vespa/eval/instruction/generic_rename.cpp
@@ -69,10 +69,10 @@ generic_rename(const Value &a,
const ValueType &res_type, const ValueBuilderFactory &factory)
{
auto cells = a.cells().typify<CT>();
- std::vector<string_id> output_address(sparse_plan.mapped_dims);
- std::vector<string_id*> input_address;
+ SmallVector<string_id> output_address(sparse_plan.mapped_dims);
+ SmallVector<string_id*> input_address;
for (size_t maps_to : sparse_plan.output_dimensions) {
- input_address.push_back(&output_address[maps_to]);
+ input_address.emplace_back(&output_address[maps_to]);
}
auto builder = factory.create_transient_value_builder<CT>(res_type,
sparse_plan.mapped_dims,
@@ -152,7 +152,7 @@ SparseRenamePlan::SparseRenamePlan(const ValueType &input_type,
if (index != output_dimensions.size()) {
can_forward_index = false;
}
- output_dimensions.push_back(index);
+ output_dimensions.emplace_back(index);
}
assert(output_dimensions.size() == mapped_dims);
}
@@ -172,8 +172,8 @@ DenseRenamePlan::DenseRenamePlan(const ValueType &lhs_type,
const auto out_dims = output_type.nontrivial_indexed_dimensions();
size_t num_dense_dims = lhs_dims.size();
assert(num_dense_dims == out_dims.size());
- std::vector<size_t> lhs_loopcnt(num_dense_dims);
- std::vector<size_t> lhs_stride(num_dense_dims, 1);
+ SmallVector<size_t> lhs_loopcnt(num_dense_dims);
+ SmallVector<size_t> lhs_stride(num_dense_dims, 1);
size_t lhs_size = 1;
for (size_t i = num_dense_dims; i-- > 0; ) {
lhs_stride[i] = lhs_size;
@@ -191,8 +191,8 @@ DenseRenamePlan::DenseRenamePlan(const ValueType &lhs_type,
loop_cnt.back() *= lhs_loopcnt[index];
stride.back() = lhs_stride[index];
} else {
- loop_cnt.push_back(lhs_loopcnt[index]);
- stride.push_back(lhs_stride[index]);
+ loop_cnt.emplace_back(lhs_loopcnt[index]);
+ stride.emplace_back(lhs_stride[index]);
}
prev_index = index;
}
diff --git a/eval/src/vespa/eval/instruction/generic_rename.h b/eval/src/vespa/eval/instruction/generic_rename.h
index 7834c967488..4d8ca54a248 100644
--- a/eval/src/vespa/eval/instruction/generic_rename.h
+++ b/eval/src/vespa/eval/instruction/generic_rename.h
@@ -6,6 +6,7 @@
#include <vespa/eval/eval/value_type.h>
#include <vespa/eval/eval/interpreted_function.h>
#include <vespa/vespalib/stllike/string.h>
+#include <vespa/vespalib/util/small_vector.h>
#include <vector>
namespace vespalib::eval { struct ValueBuilderFactory; }
@@ -13,8 +14,8 @@ namespace vespalib::eval { struct ValueBuilderFactory; }
namespace vespalib::eval::instruction {
struct DenseRenamePlan {
- std::vector<size_t> loop_cnt;
- std::vector<size_t> stride;
+ SmallVector<size_t> loop_cnt;
+ SmallVector<size_t> stride;
const size_t subspace_size;
DenseRenamePlan(const ValueType &lhs_type,
const ValueType &output_type,
@@ -28,7 +29,7 @@ struct DenseRenamePlan {
struct SparseRenamePlan {
size_t mapped_dims;
- std::vector<size_t> output_dimensions;
+ SmallVector<size_t> output_dimensions;
bool can_forward_index;
SparseRenamePlan(const ValueType &input_type,
const ValueType &output_type,