Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e4436e32 authored by Chris Craik's avatar Chris Craik Committed by Android (Google) Code Review
Browse files

Merge "Add LinearStdAllocator"

parents c4c7aa14 81a1d2a1
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -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)
+1 −2
Original line number Diff line number Diff line
@@ -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
+1 −1
Original line number Diff line number Diff line
@@ -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
+6 −7
Original line number Diff line number Diff line
@@ -15,7 +15,6 @@
 */

#include <benchmark/Benchmark.h>
#include <utils/Singleton.h>

#include "DisplayList.h"
#if HWUI_NEW_OPS
@@ -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();
}
@@ -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) {
@@ -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();
}
@@ -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();
}
+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