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.SimpleBenchmark; 20a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey 21a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkeypublic class ParcelBenchmark extends SimpleBenchmark { 22a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey 23a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey private Parcel mParcel; 24a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey 25a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey @Override 26a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey protected void setUp() { 27a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey mParcel = Parcel.obtain(); 28a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey } 29a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey 30a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey @Override 31a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey protected void tearDown() { 32a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey mParcel.recycle(); 33a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey mParcel = null; 34a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey } 35a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey 36a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey public void timeWriteByte(int reps) { 37a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey final byte val = 0xF; 38a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey for (int i = 0; i < reps; i++) { 39a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey mParcel.writeByte(val); 40a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey } 41a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey } 42a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey 43a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey public void timeReadByte(int reps) { 44a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey mParcel.setDataCapacity(reps); 45a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey for (int i = 0; i < reps; i++) { 46a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey mParcel.readByte(); 47a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey } 48a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey } 49a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey 50a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey public void timeWriteInt(int reps) { 51a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey final int val = 0xF; 52a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey for (int i = 0; i < reps; i++) { 53a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey mParcel.writeInt(val); 54a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey } 55a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey } 56a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey 57a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey public void timeReadInt(int reps) { 58a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey mParcel.setDataCapacity(reps << 2); 59a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey for (int i = 0; i < reps; i++) { 60a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey mParcel.readInt(); 61a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey } 62a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey } 63a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey 64a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey public void timeWriteLong(int reps) { 65a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey final long val = 0xF; 66a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey for (int i = 0; i < reps; i++) { 67a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey mParcel.writeLong(val); 68a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey } 69a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey } 70a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey 71a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey public void timeReadLong(int reps) { 72a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey mParcel.setDataCapacity(reps << 3); 73a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey for (int i = 0; i < reps; i++) { 74a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey mParcel.readLong(); 75a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey } 76a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey } 77a197e37f7fc056f9d6db3ef24b5e6db9222e7b56Jeff Sharkey} 78