diff --git a/core/jni/android_util_AssetManager.cpp b/core/jni/android_util_AssetManager.cpp index c94bc649014e0..55b7e7ec8325a 100644 --- a/core/jni/android_util_AssetManager.cpp +++ b/core/jni/android_util_AssetManager.cpp @@ -2156,9 +2156,9 @@ static const JNINativeMethod gAssetManagerMethods[] = { (void*) android_content_AssetManager_readAsset }, { "seekAsset", "(JJI)J", (void*) android_content_AssetManager_seekAsset }, - { "getAssetLength", "(J)J", + { "getAssetLength", "!(J)J", (void*) android_content_AssetManager_getAssetLength }, - { "getAssetRemainingLength", "(J)J", + { "getAssetRemainingLength", "!(J)J", (void*) android_content_AssetManager_getAssetRemainingLength }, { "addAssetPathNative", "(Ljava/lang/String;Z)I", (void*) android_content_AssetManager_addAssetPath }, @@ -2174,25 +2174,25 @@ static const JNINativeMethod gAssetManagerMethods[] = { (void*) android_content_AssetManager_getLocales }, { "getSizeConfigurations", "()[Landroid/content/res/Configuration;", (void*) android_content_AssetManager_getSizeConfigurations }, - { "setConfiguration", "(IILjava/lang/String;IIIIIIIIIIIIII)V", + { "setConfiguration", "!(IILjava/lang/String;IIIIIIIIIIIIII)V", (void*) android_content_AssetManager_setConfiguration }, - { "getResourceIdentifier","(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)I", + { "getResourceIdentifier","!(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)I", (void*) android_content_AssetManager_getResourceIdentifier }, - { "getResourceName","(I)Ljava/lang/String;", + { "getResourceName","!(I)Ljava/lang/String;", (void*) android_content_AssetManager_getResourceName }, - { "getResourcePackageName","(I)Ljava/lang/String;", + { "getResourcePackageName","!(I)Ljava/lang/String;", (void*) android_content_AssetManager_getResourcePackageName }, - { "getResourceTypeName","(I)Ljava/lang/String;", + { "getResourceTypeName","!(I)Ljava/lang/String;", (void*) android_content_AssetManager_getResourceTypeName }, - { "getResourceEntryName","(I)Ljava/lang/String;", + { "getResourceEntryName","!(I)Ljava/lang/String;", (void*) android_content_AssetManager_getResourceEntryName }, - { "loadResourceValue","(ISLandroid/util/TypedValue;Z)I", + { "loadResourceValue","!(ISLandroid/util/TypedValue;Z)I", (void*) android_content_AssetManager_loadResourceValue }, - { "loadResourceBagValue","(IILandroid/util/TypedValue;Z)I", + { "loadResourceBagValue","!(IILandroid/util/TypedValue;Z)I", (void*) android_content_AssetManager_loadResourceBagValue }, - { "getStringBlockCount","()I", + { "getStringBlockCount","!()I", (void*) android_content_AssetManager_getStringBlockCount }, - { "getNativeStringBlock","(I)J", + { "getNativeStringBlock","!(I)J", (void*) android_content_AssetManager_getNativeStringBlock }, { "getCookieName","(I)Ljava/lang/String;", (void*) android_content_AssetManager_getCookieName }, @@ -2210,21 +2210,21 @@ static const JNINativeMethod gAssetManagerMethods[] = { (void*) android_content_AssetManager_copyTheme }, { "clearTheme", "(J)V", (void*) android_content_AssetManager_clearTheme }, - { "loadThemeAttributeValue", "(JILandroid/util/TypedValue;Z)I", + { "loadThemeAttributeValue", "!(JILandroid/util/TypedValue;Z)I", (void*) android_content_AssetManager_loadThemeAttributeValue }, - { "getThemeChangingConfigurations", "(J)I", + { "getThemeChangingConfigurations", "!(J)I", (void*) android_content_AssetManager_getThemeChangingConfigurations }, { "dumpTheme", "(JILjava/lang/String;Ljava/lang/String;)V", (void*) android_content_AssetManager_dumpTheme }, - { "applyStyle","(JIIJ[I[I[I)Z", + { "applyStyle","!(JIIJ[I[I[I)Z", (void*) android_content_AssetManager_applyStyle }, - { "resolveAttrs","(JII[I[I[I[I)Z", + { "resolveAttrs","!(JII[I[I[I[I)Z", (void*) android_content_AssetManager_resolveAttrs }, - { "retrieveAttributes","(J[I[I[I)Z", + { "retrieveAttributes","!(J[I[I[I)Z", (void*) android_content_AssetManager_retrieveAttributes }, - { "getArraySize","(I)I", + { "getArraySize","!(I)I", (void*) android_content_AssetManager_getArraySize }, - { "retrieveArray","(I[I)I", + { "retrieveArray","!(I[I)I", (void*) android_content_AssetManager_retrieveArray }, // XML files. @@ -2234,11 +2234,11 @@ static const JNINativeMethod gAssetManagerMethods[] = { // Arrays. { "getArrayStringResource","(I)[Ljava/lang/String;", (void*) android_content_AssetManager_getArrayStringResource }, - { "getArrayStringInfo","(I)[I", + { "getArrayStringInfo","!(I)[I", (void*) android_content_AssetManager_getArrayStringInfo }, - { "getArrayIntResource","(I)[I", + { "getArrayIntResource","!(I)[I", (void*) android_content_AssetManager_getArrayIntResource }, - { "getStyleAttributes","(I)[I", + { "getStyleAttributes","!(I)[I", (void*) android_content_AssetManager_getStyleAttributes }, // Bookkeeping. diff --git a/core/jni/android_util_XmlBlock.cpp b/core/jni/android_util_XmlBlock.cpp index 7ae51c89fab7e..a15c23cd879ae 100644 --- a/core/jni/android_util_XmlBlock.cpp +++ b/core/jni/android_util_XmlBlock.cpp @@ -372,37 +372,37 @@ static const JNINativeMethod gXmlBlockMethods[] = { (void*) android_content_XmlBlock_nativeGetStringBlock }, { "nativeCreateParseState", "(J)J", (void*) android_content_XmlBlock_nativeCreateParseState }, - { "nativeNext", "(J)I", + { "nativeNext", "!(J)I", (void*) android_content_XmlBlock_nativeNext }, - { "nativeGetNamespace", "(J)I", + { "nativeGetNamespace", "!(J)I", (void*) android_content_XmlBlock_nativeGetNamespace }, - { "nativeGetName", "(J)I", + { "nativeGetName", "!(J)I", (void*) android_content_XmlBlock_nativeGetName }, - { "nativeGetText", "(J)I", + { "nativeGetText", "!(J)I", (void*) android_content_XmlBlock_nativeGetText }, - { "nativeGetLineNumber", "(J)I", + { "nativeGetLineNumber", "!(J)I", (void*) android_content_XmlBlock_nativeGetLineNumber }, - { "nativeGetAttributeCount", "(J)I", + { "nativeGetAttributeCount", "!(J)I", (void*) android_content_XmlBlock_nativeGetAttributeCount }, - { "nativeGetAttributeNamespace","(JI)I", + { "nativeGetAttributeNamespace","!(JI)I", (void*) android_content_XmlBlock_nativeGetAttributeNamespace }, - { "nativeGetAttributeName", "(JI)I", + { "nativeGetAttributeName", "!(JI)I", (void*) android_content_XmlBlock_nativeGetAttributeName }, - { "nativeGetAttributeResource", "(JI)I", + { "nativeGetAttributeResource", "!(JI)I", (void*) android_content_XmlBlock_nativeGetAttributeResource }, - { "nativeGetAttributeDataType", "(JI)I", + { "nativeGetAttributeDataType", "!(JI)I", (void*) android_content_XmlBlock_nativeGetAttributeDataType }, - { "nativeGetAttributeData", "(JI)I", + { "nativeGetAttributeData", "!(JI)I", (void*) android_content_XmlBlock_nativeGetAttributeData }, - { "nativeGetAttributeStringValue", "(JI)I", + { "nativeGetAttributeStringValue", "!(JI)I", (void*) android_content_XmlBlock_nativeGetAttributeStringValue }, - { "nativeGetAttributeIndex", "(JLjava/lang/String;Ljava/lang/String;)I", + { "nativeGetAttributeIndex", "!(JLjava/lang/String;Ljava/lang/String;)I", (void*) android_content_XmlBlock_nativeGetAttributeIndex }, - { "nativeGetIdAttribute", "(J)I", + { "nativeGetIdAttribute", "!(J)I", (void*) android_content_XmlBlock_nativeGetIdAttribute }, - { "nativeGetClassAttribute", "(J)I", + { "nativeGetClassAttribute", "!(J)I", (void*) android_content_XmlBlock_nativeGetClassAttribute }, - { "nativeGetStyleAttribute", "(J)I", + { "nativeGetStyleAttribute", "!(J)I", (void*) android_content_XmlBlock_nativeGetStyleAttribute }, { "nativeDestroyParseState", "(J)V", (void*) android_content_XmlBlock_nativeDestroyParseState }, diff --git a/core/tests/benchmarks/src/android/content/res/ResourcesBenchmark.java b/core/tests/benchmarks/src/android/content/res/ResourcesBenchmark.java new file mode 100644 index 0000000000000..3638473aac035 --- /dev/null +++ b/core/tests/benchmarks/src/android/content/res/ResourcesBenchmark.java @@ -0,0 +1,84 @@ +/* + * Copyright (C) 2015 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. + */ + +package android.content.res; + +import android.util.AttributeSet; +import android.util.Xml; + +import com.android.internal.R; +import com.google.caliper.SimpleBenchmark; + +import org.xmlpull.v1.XmlPullParser; + +public class ResourcesBenchmark extends SimpleBenchmark { + + private AssetManager mAsset; + private Resources mRes; + + private int mTextId; + private int mColorId; + private int mIntegerId; + private int mLayoutId; + + @Override + protected void setUp() { + mAsset = new AssetManager(); + mAsset.addAssetPath("/system/framework/framework-res.apk"); + mRes = new Resources(mAsset, null, null); + + mTextId = mRes.getIdentifier("cancel", "string", "android"); + mColorId = mRes.getIdentifier("transparent", "color", "android"); + mIntegerId = mRes.getIdentifier("config_shortAnimTime", "integer", "android"); + mLayoutId = mRes.getIdentifier("two_line_list_item", "layout", "android"); + } + + @Override + protected void tearDown() { + mAsset.close(); + } + + public void timeGetString(int reps) { + for (int i = 0; i < reps; i++) { + mRes.getText(mTextId); + } + } + + public void timeGetColor(int reps) { + for (int i = 0; i < reps; i++) { + mRes.getColor(mColorId, null); + } + } + + public void timeGetInteger(int reps) { + for (int i = 0; i < reps; i++) { + mRes.getInteger(mIntegerId); + } + } + + public void timeGetLayoutAndTraverse(int reps) throws Exception { + for (int i = 0; i < reps; i++) { + final XmlResourceParser parser = mRes.getLayout(mLayoutId); + try { + while (parser.next() != XmlPullParser.END_DOCUMENT) { + // Walk the entire tree + } + } finally { + parser.close(); + } + } + } +}