181a1d2a15927b06b84359f839ab03ac8a20970bdChris Craik/* 281a1d2a15927b06b84359f839ab03ac8a20970bdChris Craik * Copyright (C) 2015 The Android Open Source Project 381a1d2a15927b06b84359f839ab03ac8a20970bdChris Craik * 481a1d2a15927b06b84359f839ab03ac8a20970bdChris Craik * Licensed under the Apache License, Version 2.0 (the "License"); 581a1d2a15927b06b84359f839ab03ac8a20970bdChris Craik * you may not use this file except in compliance with the License. 681a1d2a15927b06b84359f839ab03ac8a20970bdChris Craik * You may obtain a copy of the License at 781a1d2a15927b06b84359f839ab03ac8a20970bdChris Craik * 881a1d2a15927b06b84359f839ab03ac8a20970bdChris Craik * http://www.apache.org/licenses/LICENSE-2.0 981a1d2a15927b06b84359f839ab03ac8a20970bdChris Craik * 1081a1d2a15927b06b84359f839ab03ac8a20970bdChris Craik * Unless required by applicable law or agreed to in writing, software 1181a1d2a15927b06b84359f839ab03ac8a20970bdChris Craik * distributed under the License is distributed on an "AS IS" BASIS, 1281a1d2a15927b06b84359f839ab03ac8a20970bdChris Craik * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1381a1d2a15927b06b84359f839ab03ac8a20970bdChris Craik * See the License for the specific language governing permissions and 1481a1d2a15927b06b84359f839ab03ac8a20970bdChris Craik * limitations under the License. 1581a1d2a15927b06b84359f839ab03ac8a20970bdChris Craik */ 1681a1d2a15927b06b84359f839ab03ac8a20970bdChris Craik 170418afa362630e69bd853121770b115750ee46a4John Reck#include <benchmark/benchmark.h> 1881a1d2a15927b06b84359f839ab03ac8a20970bdChris Craik 1981a1d2a15927b06b84359f839ab03ac8a20970bdChris Craik#include "utils/LinearAllocator.h" 2081a1d2a15927b06b84359f839ab03ac8a20970bdChris Craik 2181a1d2a15927b06b84359f839ab03ac8a20970bdChris Craik#include <vector> 2281a1d2a15927b06b84359f839ab03ac8a20970bdChris Craik 2381a1d2a15927b06b84359f839ab03ac8a20970bdChris Craikusing namespace android; 2481a1d2a15927b06b84359f839ab03ac8a20970bdChris Craikusing namespace android::uirenderer; 2581a1d2a15927b06b84359f839ab03ac8a20970bdChris Craik 260418afa362630e69bd853121770b115750ee46a4John Reckstatic void BM_LinearStdAllocator_vectorBaseline(benchmark::State& state) { 270418afa362630e69bd853121770b115750ee46a4John Reck while (state.KeepRunning()) { 2881a1d2a15927b06b84359f839ab03ac8a20970bdChris Craik std::vector<char> v; 2981a1d2a15927b06b84359f839ab03ac8a20970bdChris Craik for (int j = 0; j < 200; j++) { 3081a1d2a15927b06b84359f839ab03ac8a20970bdChris Craik v.push_back(j); 3181a1d2a15927b06b84359f839ab03ac8a20970bdChris Craik } 320418afa362630e69bd853121770b115750ee46a4John Reck benchmark::DoNotOptimize(&v); 3381a1d2a15927b06b84359f839ab03ac8a20970bdChris Craik } 3481a1d2a15927b06b84359f839ab03ac8a20970bdChris Craik} 350418afa362630e69bd853121770b115750ee46a4John ReckBENCHMARK(BM_LinearStdAllocator_vectorBaseline); 3681a1d2a15927b06b84359f839ab03ac8a20970bdChris Craik 370418afa362630e69bd853121770b115750ee46a4John Reckstatic void BM_LinearStdAllocator_vector(benchmark::State& state) { 380418afa362630e69bd853121770b115750ee46a4John Reck while (state.KeepRunning()) { 3981a1d2a15927b06b84359f839ab03ac8a20970bdChris Craik LinearAllocator la; 4081a1d2a15927b06b84359f839ab03ac8a20970bdChris Craik LinearStdAllocator<void*> stdAllocator(la); 4181a1d2a15927b06b84359f839ab03ac8a20970bdChris Craik std::vector<char, LinearStdAllocator<char> > v(stdAllocator); 4281a1d2a15927b06b84359f839ab03ac8a20970bdChris Craik for (int j = 0; j < 200; j++) { 4381a1d2a15927b06b84359f839ab03ac8a20970bdChris Craik v.push_back(j); 4481a1d2a15927b06b84359f839ab03ac8a20970bdChris Craik } 450418afa362630e69bd853121770b115750ee46a4John Reck benchmark::DoNotOptimize(&v); 4681a1d2a15927b06b84359f839ab03ac8a20970bdChris Craik } 4781a1d2a15927b06b84359f839ab03ac8a20970bdChris Craik} 480418afa362630e69bd853121770b115750ee46a4John ReckBENCHMARK(BM_LinearStdAllocator_vector); 49