summaryrefslogtreecommitdiff
path: root/core/tests/benchmarks
diff options
context:
space:
mode:
authorJohn Reck <jreck@google.com>2016-09-28 13:28:09 -0700
committerJohn Reck <jreck@google.com>2016-09-30 11:19:10 -0700
commit71207b5a11c1aaede2ccc2380a9c55b6ff0162d3 (patch)
treed207c58b503fff2760750de35edb1656bd9968b5 /core/tests/benchmarks
parent463d85cd929e5306ca5c6b44d3d0dc8b3b20068e (diff)
Switch Parcel to FastNative
Also fixes ParcelBenchmark to have bounded memory usage to avoid OOM'ing during runs Test: refactor, no behavior change ParcelBenchmark results from bullhead Before: timeReadByte 74.43ns timeReadInt 74.49ns timeReadLong 74.13ns timeWriteByte 81.81ns timeWriteInt 82.09ns timeWriteLong 81.84ns After: timeReadByte 47.08ns timeReadInt 48.38ns timeReadLong 48.16ns timeWriteByte 55.90ns timeWriteInt 55.85ns timeWriteLong 56.58ns Change-Id: I61b823d1d2beb86e00c196abd4dce65efa8fa7f0
Diffstat (limited to 'core/tests/benchmarks')
-rw-r--r--core/tests/benchmarks/src/android/os/ParcelBenchmark.java48
1 files changed, 33 insertions, 15 deletions
diff --git a/core/tests/benchmarks/src/android/os/ParcelBenchmark.java b/core/tests/benchmarks/src/android/os/ParcelBenchmark.java
index 4bd2d009dcf3..6c45ae858aca 100644
--- a/core/tests/benchmarks/src/android/os/ParcelBenchmark.java
+++ b/core/tests/benchmarks/src/android/os/ParcelBenchmark.java
@@ -20,12 +20,15 @@ import com.google.caliper.AfterExperiment;
import com.google.caliper.BeforeExperiment;
public class ParcelBenchmark {
+ private static final int INNER_REPS = 1000;
private Parcel mParcel;
@BeforeExperiment
protected void setUp() {
mParcel = Parcel.obtain();
+ mParcel.setDataPosition(0);
+ mParcel.setDataCapacity(INNER_REPS * 8);
}
@AfterExperiment
@@ -36,43 +39,58 @@ public class ParcelBenchmark {
public void timeWriteByte(int reps) {
final byte val = 0xF;
- for (int i = 0; i < reps; i++) {
- mParcel.writeByte(val);
+ for (int i = 0; i < (reps / INNER_REPS); i++) {
+ mParcel.setDataPosition(0);
+ for (int j = 0; j < INNER_REPS; j++) {
+ mParcel.writeByte(val);
+ }
}
}
public void timeReadByte(int reps) {
- mParcel.setDataCapacity(reps);
- for (int i = 0; i < reps; i++) {
- mParcel.readByte();
+ for (int i = 0; i < (reps / INNER_REPS); i++) {
+ mParcel.setDataPosition(0);
+ for (int j = 0; j < INNER_REPS; j++) {
+ mParcel.readByte();
+ }
}
}
public void timeWriteInt(int reps) {
final int val = 0xF;
- for (int i = 0; i < reps; i++) {
- mParcel.writeInt(val);
+ for (int i = 0; i < (reps / INNER_REPS); i++) {
+ mParcel.setDataPosition(0);
+ for (int j = 0; j < INNER_REPS; j++) {
+ mParcel.writeInt(val);
+ }
}
}
public void timeReadInt(int reps) {
- mParcel.setDataCapacity(reps << 2);
- for (int i = 0; i < reps; i++) {
- mParcel.readInt();
+ for (int i = 0; i < (reps / INNER_REPS); i++) {
+ mParcel.setDataPosition(0);
+ for (int j = 0; j < INNER_REPS; j++) {
+ mParcel.readInt();
+ }
}
}
public void timeWriteLong(int reps) {
final long val = 0xF;
- for (int i = 0; i < reps; i++) {
- mParcel.writeLong(val);
+ for (int i = 0; i < (reps / INNER_REPS); i++) {
+ mParcel.setDataPosition(0);
+ for (int j = 0; j < INNER_REPS; j++) {
+ mParcel.writeLong(val);
+ }
}
}
public void timeReadLong(int reps) {
- mParcel.setDataCapacity(reps << 3);
- for (int i = 0; i < reps; i++) {
- mParcel.readLong();
+ for (int i = 0; i < (reps / INNER_REPS); i++) {
+ mParcel.setDataPosition(0);
+ for (int j = 0; j < INNER_REPS; j++) {
+ mParcel.readLong();
+ }
}
}
}