1a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey/*
2a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey * Copyright (C) 2012 The Android Open Source Project
3a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey *
4a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey * Licensed under the Apache License, Version 2.0 (the "License");
5a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey * you may not use this file except in compliance with the License.
6a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey * You may obtain a copy of the License at
7a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey *
8a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey *      http://www.apache.org/licenses/LICENSE-2.0
9a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey *
10a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey * Unless required by applicable law or agreed to in writing, software
11a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey * distributed under the License is distributed on an "AS IS" BASIS,
12a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey * See the License for the specific language governing permissions and
14a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey * limitations under the License.
15a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey */
16a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey
17a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkeypackage android.os;
18a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey
19a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkeyimport com.google.caliper.Param;
20a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkeyimport com.google.caliper.SimpleBenchmark;
21a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey
22a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkeypublic class ParcelArrayBenchmark extends SimpleBenchmark {
23a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey
24a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey    @Param({ "1", "10", "100", "1000" })
25a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey    private int mSize;
26a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey
27a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey    private Parcel mWriteParcel;
28a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey
29a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey    private byte[] mByteArray;
30a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey    private int[] mIntArray;
31a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey    private long[] mLongArray;
32a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey
33a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey    private Parcel mByteParcel;
34a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey    private Parcel mIntParcel;
35a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey    private Parcel mLongParcel;
36a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey
37a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey    @Override
38a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey    protected void setUp() {
39a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey        mWriteParcel = Parcel.obtain();
40a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey
41a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey        mByteArray = new byte[mSize];
42a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey        mIntArray = new int[mSize];
43a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey        mLongArray = new long[mSize];
44a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey
45a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey        mByteParcel = Parcel.obtain();
46a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey        mByteParcel.writeByteArray(mByteArray);
47a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey        mIntParcel = Parcel.obtain();
48a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey        mIntParcel.writeIntArray(mIntArray);
49a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey        mLongParcel = Parcel.obtain();
50a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey        mLongParcel.writeLongArray(mLongArray);
51a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey    }
52a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey
53a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey    @Override
54a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey    protected void tearDown() {
55a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey        mWriteParcel.recycle();
56a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey        mWriteParcel = null;
57a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey    }
58a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey
59a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey    public void timeWriteByteArray(int reps) {
60a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey        for (int i = 0; i < reps; i++) {
61a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey            mWriteParcel.setDataPosition(0);
62a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey            mWriteParcel.writeByteArray(mByteArray);
63a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey        }
64a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey    }
65a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey
66a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey    public void timeCreateByteArray(int reps) {
67a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey        for (int i = 0; i < reps; i++) {
68a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey            mByteParcel.setDataPosition(0);
69a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey            mByteParcel.createByteArray();
70a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey        }
71a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey    }
72a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey
73a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey    public void timeReadByteArray(int reps) {
74a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey        for (int i = 0; i < reps; i++) {
75a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey            mByteParcel.setDataPosition(0);
76a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey            mByteParcel.readByteArray(mByteArray);
77a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey        }
78a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey    }
79a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey
80a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey    public void timeWriteIntArray(int reps) {
81a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey        for (int i = 0; i < reps; i++) {
82a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey            mWriteParcel.setDataPosition(0);
83a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey            mWriteParcel.writeIntArray(mIntArray);
84a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey        }
85a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey    }
86a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey
87a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey    public void timeCreateIntArray(int reps) {
88a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey        for (int i = 0; i < reps; i++) {
89a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey            mIntParcel.setDataPosition(0);
90a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey            mIntParcel.createIntArray();
91a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey        }
92a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey    }
93a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey
94a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey    public void timeReadIntArray(int reps) {
95a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey        for (int i = 0; i < reps; i++) {
96a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey            mIntParcel.setDataPosition(0);
97a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey            mIntParcel.readIntArray(mIntArray);
98a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey        }
99a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey    }
100a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey
101a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey    public void timeWriteLongArray(int reps) {
102a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey        for (int i = 0; i < reps; i++) {
103a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey            mWriteParcel.setDataPosition(0);
104a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey            mWriteParcel.writeLongArray(mLongArray);
105a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey        }
106a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey    }
107a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey
108a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey    public void timeCreateLongArray(int reps) {
109a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey        for (int i = 0; i < reps; i++) {
110a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey            mLongParcel.setDataPosition(0);
111a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey            mLongParcel.createLongArray();
112a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey        }
113a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey    }
114a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey
115a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey    public void timeReadLongArray(int reps) {
116a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey        for (int i = 0; i < reps; i++) {
117a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey            mLongParcel.setDataPosition(0);
118a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey            mLongParcel.readLongArray(mLongArray);
119a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey        }
120a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey    }
121a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey
122a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey}
123