diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2017-06-07 16:41:12 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-06-07 16:41:12 +0200 |
commit | a433da2ffd8d96d5ef7f08d243ac1b357c59e70b (patch) | |
tree | 4e074ee87b8780eda0323681717a975c9f2a2833 /searchlib | |
parent | 4554b569a28072d0406e5e938f285580b9f30043 (diff) | |
parent | 7f86d55cb2ddfd481bcb9533d8e06aeb0fa3a746 (diff) |
Merge pull request #2655 from yahoo/havardpe/make-lazy-eval-default
auto-detect appropriate compiled function parameter lazyness
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 |