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