summaryrefslogtreecommitdiff
path: root/libs/androidfw/tests/CursorWindow_bench.cpp
diff options
context:
space:
mode:
authorScott Lobdell <slobdell@google.com>2020-11-05 18:29:12 -0800
committerScott Lobdell <slobdell@google.com>2020-11-13 11:48:49 -0800
commit3933f277a025be704e68ea593536e492831a7e05 (patch)
tree084aa5e0858c449a63dd18cc57fb21ab054d363a /libs/androidfw/tests/CursorWindow_bench.cpp
parent248a6ce2e2ee65f367b01c43edeecef5a6d57581 (diff)
parent9c74513b2d828d5169e9942b58b2f93bb3e04aff (diff)
Merge SP1A.201105.002
Change-Id: Iec83a0c1f6f286a1e51abfc4356633ca9d8aea5f
Diffstat (limited to 'libs/androidfw/tests/CursorWindow_bench.cpp')
-rw-r--r--libs/androidfw/tests/CursorWindow_bench.cpp86
1 files changed, 86 insertions, 0 deletions
diff --git a/libs/androidfw/tests/CursorWindow_bench.cpp b/libs/androidfw/tests/CursorWindow_bench.cpp
new file mode 100644
index 000000000000..f1191c3d7213
--- /dev/null
+++ b/libs/androidfw/tests/CursorWindow_bench.cpp
@@ -0,0 +1,86 @@
+/*
+ * Copyright (C) 2020 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 "androidfw/CursorWindow.h"
+
+namespace android {
+
+static void BM_CursorWindowWrite(benchmark::State& state, size_t rows, size_t cols) {
+ CursorWindow* w;
+ CursorWindow::create(String8("test"), 1 << 21, &w);
+
+ while (state.KeepRunning()) {
+ w->clear();
+ w->setNumColumns(cols);
+ for (int row = 0; row < rows; row++) {
+ w->allocRow();
+ for (int col = 0; col < cols; col++) {
+ w->putLong(row, col, 0xcafe);
+ }
+ }
+ }
+}
+
+static void BM_CursorWindowWrite4x4(benchmark::State& state) {
+ BM_CursorWindowWrite(state, 4, 4);
+}
+BENCHMARK(BM_CursorWindowWrite4x4);
+
+static void BM_CursorWindowWrite1Kx4(benchmark::State& state) {
+ BM_CursorWindowWrite(state, 1024, 4);
+}
+BENCHMARK(BM_CursorWindowWrite1Kx4);
+
+static void BM_CursorWindowWrite16Kx4(benchmark::State& state) {
+ BM_CursorWindowWrite(state, 16384, 4);
+}
+BENCHMARK(BM_CursorWindowWrite16Kx4);
+
+static void BM_CursorWindowRead(benchmark::State& state, size_t rows, size_t cols) {
+ CursorWindow* w;
+ CursorWindow::create(String8("test"), 1 << 21, &w);
+ w->setNumColumns(cols);
+ for (int row = 0; row < rows; row++) {
+ w->allocRow();
+ }
+
+ while (state.KeepRunning()) {
+ for (int row = 0; row < rows; row++) {
+ for (int col = 0; col < cols; col++) {
+ w->getFieldSlot(row, col);
+ }
+ }
+ }
+}
+
+static void BM_CursorWindowRead4x4(benchmark::State& state) {
+ BM_CursorWindowRead(state, 4, 4);
+}
+BENCHMARK(BM_CursorWindowRead4x4);
+
+static void BM_CursorWindowRead1Kx4(benchmark::State& state) {
+ BM_CursorWindowRead(state, 1024, 4);
+}
+BENCHMARK(BM_CursorWindowRead1Kx4);
+
+static void BM_CursorWindowRead16Kx4(benchmark::State& state) {
+ BM_CursorWindowRead(state, 16384, 4);
+}
+BENCHMARK(BM_CursorWindowRead16Kx4);
+
+} // namespace android