diff options
author | Haavard <havardpe@yahoo-inc.com> | 2017-06-07 11:59:22 +0000 |
---|---|---|
committer | Haavard <havardpe@yahoo-inc.com> | 2017-06-07 13:53:05 +0000 |
commit | 7f86d55cb2ddfd481bcb9533d8e06aeb0fa3a746 (patch) | |
tree | 01322584ff27ff98f4c5e77b2344204f2086e01e /searchlib | |
parent | 78016e2530d5c4408bbe04ac492b9e73405d2b43 (diff) |
auto-detect appropriate compiled function parameter lazyness
... but still allow config override
Diffstat (limited to 'searchlib')
4 files changed, 14 insertions, 10 deletions
diff --git a/searchlib/src/tests/fef/properties/properties_test.cpp b/searchlib/src/tests/fef/properties/properties_test.cpp index c7400d5815b..bd6818cf6e4 100644 --- a/searchlib/src/tests/fef/properties/properties_test.cpp +++ b/searchlib/src/tests/fef/properties/properties_test.cpp @@ -216,11 +216,15 @@ TEST("test stuff") { { // test index properties known by the framework { // vespa.eval.lazy_expressions EXPECT_EQUAL(eval::LazyExpressions::NAME, vespalib::string("vespa.eval.lazy_expressions")); - EXPECT_EQUAL(eval::LazyExpressions::DEFAULT_VALUE, vespalib::string("false")); Properties p; - EXPECT_TRUE(!eval::LazyExpressions::check(p)); - p.add("vespa.eval.lazy_expressions", "true"); - EXPECT_TRUE(eval::LazyExpressions::check(p)); + EXPECT_TRUE(eval::LazyExpressions::check(p, true)); + EXPECT_TRUE(!eval::LazyExpressions::check(p, false)); + p = Properties().add("vespa.eval.lazy_expressions", "true"); + EXPECT_TRUE(eval::LazyExpressions::check(p, true)); + EXPECT_TRUE(eval::LazyExpressions::check(p, false)); + p = Properties().add("vespa.eval.lazy_expressions", "false"); + EXPECT_TRUE(!eval::LazyExpressions::check(p, true)); + EXPECT_TRUE(!eval::LazyExpressions::check(p, false)); } { // vespa.rank.firstphase EXPECT_EQUAL(rank::FirstPhase::NAME, vespalib::string("vespa.rank.firstphase")); diff --git a/searchlib/src/vespa/searchlib/features/rankingexpressionfeature.cpp b/searchlib/src/vespa/searchlib/features/rankingexpressionfeature.cpp index 07341ffd196..b14d44ee9b6 100644 --- a/searchlib/src/vespa/searchlib/features/rankingexpressionfeature.cpp +++ b/searchlib/src/vespa/searchlib/features/rankingexpressionfeature.cpp @@ -6,6 +6,7 @@ #include <vespa/searchlib/fef/indexproperties.h> #include <vespa/searchlib/features/rankingexpression/feature_name_extractor.h> #include <vespa/eval/tensor/default_tensor_engine.h> +#include <vespa/eval/eval/param_usage.h> #include <vespa/log/log.h> LOG_SETUP(".features.rankingexpression"); @@ -244,7 +245,8 @@ RankingExpressionBlueprint::setup(const fef::IIndexEnvironment &env, // avoid costly compilation when only verifying setup if (env.getFeatureMotivation() != env.FeatureMotivation::VERIFY_SETUP) { if (do_compile) { - if (fef::indexproperties::eval::LazyExpressions::check(env.getProperties())) { + bool suggest_lazy = CompiledFunction::should_use_lazy_params(rank_function); + if (fef::indexproperties::eval::LazyExpressions::check(env.getProperties(), suggest_lazy)) { _compile_token = CompileCache::compile(rank_function, PassParams::LAZY); } else { _compile_token = CompileCache::compile(rank_function, PassParams::ARRAY); diff --git a/searchlib/src/vespa/searchlib/fef/indexproperties.cpp b/searchlib/src/vespa/searchlib/fef/indexproperties.cpp index b75a0f33393..d887d279e95 100644 --- a/searchlib/src/vespa/searchlib/fef/indexproperties.cpp +++ b/searchlib/src/vespa/searchlib/fef/indexproperties.cpp @@ -77,12 +77,11 @@ checkIfTrue(const Properties &props, const vespalib::string &name, namespace eval { const vespalib::string LazyExpressions::NAME("vespa.eval.lazy_expressions"); -const vespalib::string LazyExpressions::DEFAULT_VALUE("false"); bool -LazyExpressions::check(const Properties &props) +LazyExpressions::check(const Properties &props, bool default_value) { - return checkIfTrue(props, NAME, DEFAULT_VALUE); + return lookupBool(props, NAME, default_value); } } // namespace eval diff --git a/searchlib/src/vespa/searchlib/fef/indexproperties.h b/searchlib/src/vespa/searchlib/fef/indexproperties.h index 4a97535879b..02942b1520a 100644 --- a/searchlib/src/vespa/searchlib/fef/indexproperties.h +++ b/searchlib/src/vespa/searchlib/fef/indexproperties.h @@ -26,8 +26,7 @@ namespace eval { // lazy evaluation of expressions. affects rank/summary/dump struct LazyExpressions { static const vespalib::string NAME; - static const vespalib::string DEFAULT_VALUE; - static bool check(const Properties &props); + static bool check(const Properties &props, bool default_value); }; } // namespace eval |