BenchmarkHelpers.cpp revision c8f71aa67ea599cb80205496cb67e9e7a121299c
1c8f71aa67ea599cb80205496cb67e9e7a121299cAdam Lesinski/* 2c8f71aa67ea599cb80205496cb67e9e7a121299cAdam Lesinski * Copyright (C) 2017 The Android Open Source Project 3c8f71aa67ea599cb80205496cb67e9e7a121299cAdam Lesinski * 4c8f71aa67ea599cb80205496cb67e9e7a121299cAdam Lesinski * Licensed under the Apache License, Version 2.0 (the "License"); 5c8f71aa67ea599cb80205496cb67e9e7a121299cAdam Lesinski * you may not use this file except in compliance with the License. 6c8f71aa67ea599cb80205496cb67e9e7a121299cAdam Lesinski * You may obtain a copy of the License at 7c8f71aa67ea599cb80205496cb67e9e7a121299cAdam Lesinski * 8c8f71aa67ea599cb80205496cb67e9e7a121299cAdam Lesinski * http://www.apache.org/licenses/LICENSE-2.0 9c8f71aa67ea599cb80205496cb67e9e7a121299cAdam Lesinski * 10c8f71aa67ea599cb80205496cb67e9e7a121299cAdam Lesinski * Unless required by applicable law or agreed to in writing, software 11c8f71aa67ea599cb80205496cb67e9e7a121299cAdam Lesinski * distributed under the License is distributed on an "AS IS" BASIS, 12c8f71aa67ea599cb80205496cb67e9e7a121299cAdam Lesinski * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13c8f71aa67ea599cb80205496cb67e9e7a121299cAdam Lesinski * See the License for the specific language governing permissions and 14c8f71aa67ea599cb80205496cb67e9e7a121299cAdam Lesinski * limitations under the License. 15c8f71aa67ea599cb80205496cb67e9e7a121299cAdam Lesinski */ 16c8f71aa67ea599cb80205496cb67e9e7a121299cAdam Lesinski 17c8f71aa67ea599cb80205496cb67e9e7a121299cAdam Lesinski#include "BenchmarkHelpers.h" 18c8f71aa67ea599cb80205496cb67e9e7a121299cAdam Lesinski 19c8f71aa67ea599cb80205496cb67e9e7a121299cAdam Lesinski#include "android-base/stringprintf.h" 20c8f71aa67ea599cb80205496cb67e9e7a121299cAdam Lesinski#include "androidfw/AssetManager.h" 21c8f71aa67ea599cb80205496cb67e9e7a121299cAdam Lesinski 22c8f71aa67ea599cb80205496cb67e9e7a121299cAdam Lesinskinamespace android { 23c8f71aa67ea599cb80205496cb67e9e7a121299cAdam Lesinski 24c8f71aa67ea599cb80205496cb67e9e7a121299cAdam Lesinskivoid GetResourceBenchmarkOld(const std::vector<std::string>& paths, const ResTable_config* config, 25c8f71aa67ea599cb80205496cb67e9e7a121299cAdam Lesinski uint32_t resid, benchmark::State& state) { 26c8f71aa67ea599cb80205496cb67e9e7a121299cAdam Lesinski AssetManager assetmanager; 27c8f71aa67ea599cb80205496cb67e9e7a121299cAdam Lesinski for (const std::string& path : paths) { 28c8f71aa67ea599cb80205496cb67e9e7a121299cAdam Lesinski if (!assetmanager.addAssetPath(String8(path.c_str()), nullptr /* cookie */, 29c8f71aa67ea599cb80205496cb67e9e7a121299cAdam Lesinski false /* appAsLib */, false /* isSystemAssets */)) { 30c8f71aa67ea599cb80205496cb67e9e7a121299cAdam Lesinski state.SkipWithError(base::StringPrintf("Failed to load assets %s", path.c_str()).c_str()); 31c8f71aa67ea599cb80205496cb67e9e7a121299cAdam Lesinski return; 32c8f71aa67ea599cb80205496cb67e9e7a121299cAdam Lesinski } 33c8f71aa67ea599cb80205496cb67e9e7a121299cAdam Lesinski } 34c8f71aa67ea599cb80205496cb67e9e7a121299cAdam Lesinski 35c8f71aa67ea599cb80205496cb67e9e7a121299cAdam Lesinski if (config != nullptr) { 36c8f71aa67ea599cb80205496cb67e9e7a121299cAdam Lesinski assetmanager.setConfiguration(*config); 37c8f71aa67ea599cb80205496cb67e9e7a121299cAdam Lesinski } 38c8f71aa67ea599cb80205496cb67e9e7a121299cAdam Lesinski 39c8f71aa67ea599cb80205496cb67e9e7a121299cAdam Lesinski const ResTable& table = assetmanager.getResources(true); 40c8f71aa67ea599cb80205496cb67e9e7a121299cAdam Lesinski 41c8f71aa67ea599cb80205496cb67e9e7a121299cAdam Lesinski Res_value value; 42c8f71aa67ea599cb80205496cb67e9e7a121299cAdam Lesinski ResTable_config selected_config; 43c8f71aa67ea599cb80205496cb67e9e7a121299cAdam Lesinski uint32_t flags; 44c8f71aa67ea599cb80205496cb67e9e7a121299cAdam Lesinski 45c8f71aa67ea599cb80205496cb67e9e7a121299cAdam Lesinski while (state.KeepRunning()) { 46c8f71aa67ea599cb80205496cb67e9e7a121299cAdam Lesinski table.getResource(resid, &value, false /*may_be_bag*/, 0u /*density*/, &flags, 47c8f71aa67ea599cb80205496cb67e9e7a121299cAdam Lesinski &selected_config); 48c8f71aa67ea599cb80205496cb67e9e7a121299cAdam Lesinski } 49c8f71aa67ea599cb80205496cb67e9e7a121299cAdam Lesinski} 50c8f71aa67ea599cb80205496cb67e9e7a121299cAdam Lesinski 51c8f71aa67ea599cb80205496cb67e9e7a121299cAdam Lesinski} // namespace android 52