Loading libs/hwui/Android.mk +2 −1 Original line number Diff line number Diff line Loading @@ -254,6 +254,7 @@ LOCAL_WHOLE_STATIC_LIBRARIES := libhwui_static LOCAL_STATIC_LIBRARIES := libbenchmark libbase LOCAL_SRC_FILES += \ microbench/DisplayListCanvasBench.cpp microbench/DisplayListCanvasBench.cpp \ microbench/LinearAllocatorBench.cpp include $(BUILD_EXECUTABLE) libs/hwui/DisplayListCanvas.h +1 −2 Original line number Diff line number Diff line Loading @@ -66,8 +66,7 @@ public: virtual ~DisplayListCanvas(); void reset(int width, int height); DisplayListData* finishRecording(); __attribute__((warn_unused_result)) DisplayListData* finishRecording(); // ---------------------------------------------------------------------------- // HWUI Canvas state operations Loading libs/hwui/RecordingCanvas.h +1 −1 Original line number Diff line number Diff line Loading @@ -41,7 +41,7 @@ public: virtual ~RecordingCanvas(); void reset(int width, int height); DisplayListData* finishRecording(); __attribute__((warn_unused_result)) DisplayListData* finishRecording(); // ---------------------------------------------------------------------------- // MISC HWUI OPERATIONS - TODO: CATEGORIZE Loading libs/hwui/microbench/DisplayListCanvasBench.cpp +6 −7 Original line number Diff line number Diff line Loading @@ -15,7 +15,6 @@ */ #include <benchmark/Benchmark.h> #include <utils/Singleton.h> #include "DisplayList.h" #if HWUI_NEW_OPS Loading Loading @@ -59,13 +58,13 @@ void BM_DisplayListData_alloc_theoretical::Run(int iters) { BENCHMARK_NO_ARG(BM_DisplayListCanvas_record_empty); void BM_DisplayListCanvas_record_empty::Run(int iters) { TestCanvas canvas(100, 100); canvas.finishRecording(); delete canvas.finishRecording(); StartBenchmarkTiming(); for (int i = 0; i < iters; ++i) { canvas.reset(100, 100); MicroBench::DoNotOptimize(&canvas); canvas.finishRecording(); delete canvas.finishRecording(); } StopBenchmarkTiming(); } Loading @@ -73,7 +72,7 @@ void BM_DisplayListCanvas_record_empty::Run(int iters) { BENCHMARK_NO_ARG(BM_DisplayListCanvas_record_saverestore); void BM_DisplayListCanvas_record_saverestore::Run(int iters) { TestCanvas canvas(100, 100); canvas.finishRecording(); delete canvas.finishRecording(); StartBenchmarkTiming(); for (int i = 0; i < iters; ++i) { Loading @@ -83,7 +82,7 @@ void BM_DisplayListCanvas_record_saverestore::Run(int iters) { MicroBench::DoNotOptimize(&canvas); canvas.restore(); canvas.restore(); canvas.finishRecording(); delete canvas.finishRecording(); } StopBenchmarkTiming(); } Loading @@ -91,14 +90,14 @@ void BM_DisplayListCanvas_record_saverestore::Run(int iters) { BENCHMARK_NO_ARG(BM_DisplayListCanvas_record_translate); void BM_DisplayListCanvas_record_translate::Run(int iters) { TestCanvas canvas(100, 100); canvas.finishRecording(); delete canvas.finishRecording(); StartBenchmarkTiming(); for (int i = 0; i < iters; ++i) { canvas.reset(100, 100); canvas.scale(10, 10); MicroBench::DoNotOptimize(&canvas); canvas.finishRecording(); delete canvas.finishRecording(); } StopBenchmarkTiming(); } Loading libs/hwui/microbench/LinearAllocatorBench.cpp 0 → 100644 +53 −0 Original line number Diff line number Diff line /* * Copyright (C) 2015 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include <benchmark/Benchmark.h> #include "utils/LinearAllocator.h" #include "microbench/MicroBench.h" #include <vector> using namespace android; using namespace android::uirenderer; BENCHMARK_NO_ARG(BM_LinearStdAllocator_vectorBaseline); void BM_LinearStdAllocator_vectorBaseline::Run(int iters) { StartBenchmarkTiming(); for (int i = 0; i < iters; i++) { std::vector<char> v; for (int j = 0; j < 200; j++) { v.push_back(j); } MicroBench::DoNotOptimize(&v); } StopBenchmarkTiming(); } BENCHMARK_NO_ARG(BM_LinearStdAllocator_vector); void BM_LinearStdAllocator_vector::Run(int iters) { StartBenchmarkTiming(); for (int i = 0; i < iters; i++) { LinearAllocator la; LinearStdAllocator<void*> stdAllocator(la); std::vector<char, LinearStdAllocator<char> > v(stdAllocator); for (int j = 0; j < 200; j++) { v.push_back(j); } MicroBench::DoNotOptimize(&v); } StopBenchmarkTiming(); } Loading
libs/hwui/Android.mk +2 −1 Original line number Diff line number Diff line Loading @@ -254,6 +254,7 @@ LOCAL_WHOLE_STATIC_LIBRARIES := libhwui_static LOCAL_STATIC_LIBRARIES := libbenchmark libbase LOCAL_SRC_FILES += \ microbench/DisplayListCanvasBench.cpp microbench/DisplayListCanvasBench.cpp \ microbench/LinearAllocatorBench.cpp include $(BUILD_EXECUTABLE)
libs/hwui/DisplayListCanvas.h +1 −2 Original line number Diff line number Diff line Loading @@ -66,8 +66,7 @@ public: virtual ~DisplayListCanvas(); void reset(int width, int height); DisplayListData* finishRecording(); __attribute__((warn_unused_result)) DisplayListData* finishRecording(); // ---------------------------------------------------------------------------- // HWUI Canvas state operations Loading
libs/hwui/RecordingCanvas.h +1 −1 Original line number Diff line number Diff line Loading @@ -41,7 +41,7 @@ public: virtual ~RecordingCanvas(); void reset(int width, int height); DisplayListData* finishRecording(); __attribute__((warn_unused_result)) DisplayListData* finishRecording(); // ---------------------------------------------------------------------------- // MISC HWUI OPERATIONS - TODO: CATEGORIZE Loading
libs/hwui/microbench/DisplayListCanvasBench.cpp +6 −7 Original line number Diff line number Diff line Loading @@ -15,7 +15,6 @@ */ #include <benchmark/Benchmark.h> #include <utils/Singleton.h> #include "DisplayList.h" #if HWUI_NEW_OPS Loading Loading @@ -59,13 +58,13 @@ void BM_DisplayListData_alloc_theoretical::Run(int iters) { BENCHMARK_NO_ARG(BM_DisplayListCanvas_record_empty); void BM_DisplayListCanvas_record_empty::Run(int iters) { TestCanvas canvas(100, 100); canvas.finishRecording(); delete canvas.finishRecording(); StartBenchmarkTiming(); for (int i = 0; i < iters; ++i) { canvas.reset(100, 100); MicroBench::DoNotOptimize(&canvas); canvas.finishRecording(); delete canvas.finishRecording(); } StopBenchmarkTiming(); } Loading @@ -73,7 +72,7 @@ void BM_DisplayListCanvas_record_empty::Run(int iters) { BENCHMARK_NO_ARG(BM_DisplayListCanvas_record_saverestore); void BM_DisplayListCanvas_record_saverestore::Run(int iters) { TestCanvas canvas(100, 100); canvas.finishRecording(); delete canvas.finishRecording(); StartBenchmarkTiming(); for (int i = 0; i < iters; ++i) { Loading @@ -83,7 +82,7 @@ void BM_DisplayListCanvas_record_saverestore::Run(int iters) { MicroBench::DoNotOptimize(&canvas); canvas.restore(); canvas.restore(); canvas.finishRecording(); delete canvas.finishRecording(); } StopBenchmarkTiming(); } Loading @@ -91,14 +90,14 @@ void BM_DisplayListCanvas_record_saverestore::Run(int iters) { BENCHMARK_NO_ARG(BM_DisplayListCanvas_record_translate); void BM_DisplayListCanvas_record_translate::Run(int iters) { TestCanvas canvas(100, 100); canvas.finishRecording(); delete canvas.finishRecording(); StartBenchmarkTiming(); for (int i = 0; i < iters; ++i) { canvas.reset(100, 100); canvas.scale(10, 10); MicroBench::DoNotOptimize(&canvas); canvas.finishRecording(); delete canvas.finishRecording(); } StopBenchmarkTiming(); } Loading
libs/hwui/microbench/LinearAllocatorBench.cpp 0 → 100644 +53 −0 Original line number Diff line number Diff line /* * Copyright (C) 2015 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include <benchmark/Benchmark.h> #include "utils/LinearAllocator.h" #include "microbench/MicroBench.h" #include <vector> using namespace android; using namespace android::uirenderer; BENCHMARK_NO_ARG(BM_LinearStdAllocator_vectorBaseline); void BM_LinearStdAllocator_vectorBaseline::Run(int iters) { StartBenchmarkTiming(); for (int i = 0; i < iters; i++) { std::vector<char> v; for (int j = 0; j < 200; j++) { v.push_back(j); } MicroBench::DoNotOptimize(&v); } StopBenchmarkTiming(); } BENCHMARK_NO_ARG(BM_LinearStdAllocator_vector); void BM_LinearStdAllocator_vector::Run(int iters) { StartBenchmarkTiming(); for (int i = 0; i < iters; i++) { LinearAllocator la; LinearStdAllocator<void*> stdAllocator(la); std::vector<char, LinearStdAllocator<char> > v(stdAllocator); for (int j = 0; j < 200; j++) { v.push_back(j); } MicroBench::DoNotOptimize(&v); } StopBenchmarkTiming(); }