filter_value_benchmark.cpp revision 13fb7e4eeaf7aee408821afe7ee55a5167e49e59
1f520492279ce5c0a029c36b5251031a66f1413fbYangster-mac/* 2f520492279ce5c0a029c36b5251031a66f1413fbYangster-mac * Copyright (C) 2018 The Android Open Source Project 3f520492279ce5c0a029c36b5251031a66f1413fbYangster-mac * 4f520492279ce5c0a029c36b5251031a66f1413fbYangster-mac * Licensed under the Apache License, Version 2.0 (the "License"); 5f520492279ce5c0a029c36b5251031a66f1413fbYangster-mac * you may not use this file except in compliance with the License. 6f520492279ce5c0a029c36b5251031a66f1413fbYangster-mac * You may obtain a copy of the License at 7f520492279ce5c0a029c36b5251031a66f1413fbYangster-mac * 8f520492279ce5c0a029c36b5251031a66f1413fbYangster-mac * http://www.apache.org/licenses/LICENSE-2.0 9f520492279ce5c0a029c36b5251031a66f1413fbYangster-mac * 10f520492279ce5c0a029c36b5251031a66f1413fbYangster-mac * Unless required by applicable law or agreed to in writing, software 11f520492279ce5c0a029c36b5251031a66f1413fbYangster-mac * distributed under the License is distributed on an "AS IS" BASIS, 12f520492279ce5c0a029c36b5251031a66f1413fbYangster-mac * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13f520492279ce5c0a029c36b5251031a66f1413fbYangster-mac * See the License for the specific language governing permissions and 14f520492279ce5c0a029c36b5251031a66f1413fbYangster-mac * limitations under the License. 15f520492279ce5c0a029c36b5251031a66f1413fbYangster-mac */ 16f520492279ce5c0a029c36b5251031a66f1413fbYangster-mac#include <vector> 17f520492279ce5c0a029c36b5251031a66f1413fbYangster-mac#include "benchmark/benchmark.h" 18f520492279ce5c0a029c36b5251031a66f1413fbYangster-mac#include "FieldValue.h" 19f520492279ce5c0a029c36b5251031a66f1413fbYangster-mac#include "HashableDimensionKey.h" 20f520492279ce5c0a029c36b5251031a66f1413fbYangster-mac#include "logd/LogEvent.h" 2113fb7e4eeaf7aee408821afe7ee55a5167e49e59Yangster#include "stats_log_util.h" 22f520492279ce5c0a029c36b5251031a66f1413fbYangster-mac 23f520492279ce5c0a029c36b5251031a66f1413fbYangster-macnamespace android { 24f520492279ce5c0a029c36b5251031a66f1413fbYangster-macnamespace os { 25f520492279ce5c0a029c36b5251031a66f1413fbYangster-macnamespace statsd { 26f520492279ce5c0a029c36b5251031a66f1413fbYangster-mac 27f520492279ce5c0a029c36b5251031a66f1413fbYangster-macusing std::vector; 28f520492279ce5c0a029c36b5251031a66f1413fbYangster-mac 2913fb7e4eeaf7aee408821afe7ee55a5167e49e59Yangsterstatic void createLogEventAndMatcher(LogEvent* event, FieldMatcher *field_matcher) { 3013fb7e4eeaf7aee408821afe7ee55a5167e49e59Yangster AttributionNodeInternal node; 3113fb7e4eeaf7aee408821afe7ee55a5167e49e59Yangster node.set_uid(100); 3213fb7e4eeaf7aee408821afe7ee55a5167e49e59Yangster node.set_tag("LOCATION"); 3313fb7e4eeaf7aee408821afe7ee55a5167e49e59Yangster 3413fb7e4eeaf7aee408821afe7ee55a5167e49e59Yangster std::vector<AttributionNodeInternal> nodes = {node, node}; 3513fb7e4eeaf7aee408821afe7ee55a5167e49e59Yangster event->write(nodes); 3613fb7e4eeaf7aee408821afe7ee55a5167e49e59Yangster event->write(3.2f); 3713fb7e4eeaf7aee408821afe7ee55a5167e49e59Yangster event->write("LOCATION"); 3813fb7e4eeaf7aee408821afe7ee55a5167e49e59Yangster event->write((int64_t)990); 3913fb7e4eeaf7aee408821afe7ee55a5167e49e59Yangster event->init(); 4013fb7e4eeaf7aee408821afe7ee55a5167e49e59Yangster 4113fb7e4eeaf7aee408821afe7ee55a5167e49e59Yangster field_matcher->set_field(1); 4213fb7e4eeaf7aee408821afe7ee55a5167e49e59Yangster auto child = field_matcher->add_child(); 4313fb7e4eeaf7aee408821afe7ee55a5167e49e59Yangster child->set_field(1); 4413fb7e4eeaf7aee408821afe7ee55a5167e49e59Yangster child->set_position(FIRST); 4513fb7e4eeaf7aee408821afe7ee55a5167e49e59Yangster child->add_child()->set_field(1); 4613fb7e4eeaf7aee408821afe7ee55a5167e49e59Yangster} 4713fb7e4eeaf7aee408821afe7ee55a5167e49e59Yangster 48f520492279ce5c0a029c36b5251031a66f1413fbYangster-macstatic void BM_FilterValue(benchmark::State& state) { 49f520492279ce5c0a029c36b5251031a66f1413fbYangster-mac LogEvent event(1, 100000); 50f520492279ce5c0a029c36b5251031a66f1413fbYangster-mac FieldMatcher field_matcher; 5113fb7e4eeaf7aee408821afe7ee55a5167e49e59Yangster createLogEventAndMatcher(&event, &field_matcher); 52f520492279ce5c0a029c36b5251031a66f1413fbYangster-mac 53f520492279ce5c0a029c36b5251031a66f1413fbYangster-mac std::vector<Matcher> matchers; 54f520492279ce5c0a029c36b5251031a66f1413fbYangster-mac translateFieldMatcher(field_matcher, &matchers); 55f520492279ce5c0a029c36b5251031a66f1413fbYangster-mac 56f520492279ce5c0a029c36b5251031a66f1413fbYangster-mac while (state.KeepRunning()) { 57f520492279ce5c0a029c36b5251031a66f1413fbYangster-mac vector<HashableDimensionKey> output; 58f520492279ce5c0a029c36b5251031a66f1413fbYangster-mac filterValues(matchers, event.getValues(), &output); 59f520492279ce5c0a029c36b5251031a66f1413fbYangster-mac } 60f520492279ce5c0a029c36b5251031a66f1413fbYangster-mac} 61f520492279ce5c0a029c36b5251031a66f1413fbYangster-mac 62f520492279ce5c0a029c36b5251031a66f1413fbYangster-macBENCHMARK(BM_FilterValue); 63f520492279ce5c0a029c36b5251031a66f1413fbYangster-mac 6413fb7e4eeaf7aee408821afe7ee55a5167e49e59Yangsterstatic void BM_FilterValue2(benchmark::State& state) { 6513fb7e4eeaf7aee408821afe7ee55a5167e49e59Yangster LogEvent event(1, 100000); 6613fb7e4eeaf7aee408821afe7ee55a5167e49e59Yangster FieldMatcher field_matcher; 6713fb7e4eeaf7aee408821afe7ee55a5167e49e59Yangster createLogEventAndMatcher(&event, &field_matcher); 6813fb7e4eeaf7aee408821afe7ee55a5167e49e59Yangster 6913fb7e4eeaf7aee408821afe7ee55a5167e49e59Yangster std::vector<Matcher> matchers; 7013fb7e4eeaf7aee408821afe7ee55a5167e49e59Yangster translateFieldMatcher(field_matcher, &matchers); 7113fb7e4eeaf7aee408821afe7ee55a5167e49e59Yangster 7213fb7e4eeaf7aee408821afe7ee55a5167e49e59Yangster while (state.KeepRunning()) { 7313fb7e4eeaf7aee408821afe7ee55a5167e49e59Yangster HashableDimensionKey output; 7413fb7e4eeaf7aee408821afe7ee55a5167e49e59Yangster filterValues(matchers, event.getValues(), &output); 7513fb7e4eeaf7aee408821afe7ee55a5167e49e59Yangster } 7613fb7e4eeaf7aee408821afe7ee55a5167e49e59Yangster} 7713fb7e4eeaf7aee408821afe7ee55a5167e49e59Yangster 7813fb7e4eeaf7aee408821afe7ee55a5167e49e59YangsterBENCHMARK(BM_FilterValue2); 7913fb7e4eeaf7aee408821afe7ee55a5167e49e59Yangster 80f520492279ce5c0a029c36b5251031a66f1413fbYangster-mac} // namespace statsd 81f520492279ce5c0a029c36b5251031a66f1413fbYangster-mac} // namespace os 82f520492279ce5c0a029c36b5251031a66f1413fbYangster-mac} // namespace android 83