summaryrefslogtreecommitdiff
path: root/benchmark
diff options
context:
space:
mode:
authorJohn Firebaugh <john.firebaugh@gmail.com>2016-06-15 14:55:45 -0700
committerGitHub <noreply@github.com>2016-06-15 14:55:45 -0700
commita0b298211908036da269e7dcc2c78025476e2bf2 (patch)
tree3ef9df845e52290f8d6df918728c8eae92abd340 /benchmark
parent199ea2a82a74cf2f7b63078e2dd4b8274c061851 (diff)
downloadqtlocation-mapboxgl-a0b298211908036da269e7dcc2c78025476e2bf2.tar.gz
[core] Prepare Filter and FilterEvaluator for extraction (#5366)
Diffstat (limited to 'benchmark')
-rw-r--r--benchmark/parse/filter.cpp34
1 files changed, 6 insertions, 28 deletions
diff --git a/benchmark/parse/filter.cpp b/benchmark/parse/filter.cpp
index 7450fc7804..8beff3b308 100644
--- a/benchmark/parse/filter.cpp
+++ b/benchmark/parse/filter.cpp
@@ -13,32 +13,6 @@ using namespace mbgl;
typedef std::multimap<std::string, Value> Properties;
-class StubFeature : public GeometryTileFeature {
-public:
- inline StubFeature(const Properties& properties_, FeatureType type_)
- : properties(properties_), type(type_) {
- }
-
- optional<Value> getValue(const std::string& key) const override {
- auto it = properties.find(key);
- if (it == properties.end())
- return optional<Value>();
- return it->second;
- }
-
- FeatureType getType() const override {
- return type;
- }
-
- GeometryCollection getGeometries() const override {
- return GeometryCollection();
- }
-
-private:
- const Properties properties;
- FeatureType type;
-};
-
style::Filter parse(const char* expression) {
rapidjson::GenericDocument<rapidjson::UTF8<>, rapidjson::CrtAllocator> doc;
doc.Parse<0>(expression);
@@ -54,10 +28,14 @@ static void Parse_Filter(benchmark::State& state) {
static void Parse_EvaluateFilter(benchmark::State& state) {
const style::Filter filter = parse(R"FILTER(["==", "foo", "bar"])FILTER");
const Properties properties = { { "foo", std::string("bar") } };
- const StubFeature feature(properties, FeatureType::Unknown);
while (state.KeepRunning()) {
- style::Filter::visit(filter, style::FilterEvaluator{ feature });
+ filter(FeatureType::Unknown, [&] (const std::string& key) -> optional<Value> {
+ auto it = properties.find(key);
+ if (it == properties.end())
+ return {};
+ return it->second;
+ });
}
}