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