alvinalexander.com | career | drupal | java | mac | mysql | perl | scala | uml | unix  

Android example source code file (PerformanceTests.java)

This example Android source code file (PerformanceTests.java) is included in the DevDaily.com "Java Source Code Warehouse" project. The intent of this project is to help you "Learn Android by Example" TM.

Java - Android tags/keywords

alphabet, android, arraylist, emptyclass, emptyinterface, exception, hashmap, ia, iabc, iterations, performancetestbase, sizetest, string, stringequals, test, test_string, util

The PerformanceTests.java Android example source code

/*
 * Copyright (C) 2007 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.core;

import org.apache.harmony.dalvik.NativeTestTarget;

import android.test.PerformanceTestBase;
import android.test.PerformanceTestCase;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.concurrent.atomic.AtomicInteger;

import junit.framework.Assert;

public class PerformanceTests {
    public static String[] children() {
        return new String[] {
                //StringEquals2.class.getName(),
                //StringEquals10.class.getName(),
                //StringEquals20.class.getName(),
                //StringEquals200.class.getName(),
                //StringEquals200U.class.getName(),
                //StringCompareTo10.class.getName(),
                //StringCompareTo200.class.getName(),
                StringLength.class.getName(),
                StringCrawl.class.getName(),
                Ackermann.class.getName(),
                AddTest.class.getName(),
//                AddMemberVariableTest.class.getName(),
                ArrayListIterator.class.getName(),
                BoundsCheckTest.class.getName(),
//                EmptyClassBaseTest.class.getName(),
                EmptyJniStaticMethod0.class.getName(),
                EmptyJniStaticMethod6.class.getName(),
                EmptyJniStaticMethod6L.class.getName(),
                FibonacciFast.class.getName(),
                FibonacciSlow.class.getName(),
//                LoopTests.class.getName(),
//                HashMapTest.class.getName(),
//                InterfaceTests.class.getName(),
                LocalVariableAccess.class.getName(),
                MemeberVariableAccess.class.getName(),
                NestedLoop.class.getName(),
//                StringConcatenationTests.class.getName(),
//                ArrayListBase.class.getName(),
                SynchronizedGetAndSetInt.class.getName(),

                /* this will not work on JamVM -- lacks atomic ops */
                AtomicGetAndSetInt.class.getName(),
        };
    }

    public static class SizeTest {
        private int mSize;

        public SizeTest(int size) {
            mSize = size;
        }

        public int size() {
            return mSize;
        }
    }

    public static class LocalVariableAccess extends PerformanceTestBase {
        private static final int ITERATIONS = 100000;

        public int startPerformance(PerformanceTestCase.Intermediates intermediates) {
            intermediates.setInternalIterations(ITERATIONS * 20);
            return 0;
        }

        public void testRun() {
            boolean variable = false;
            boolean local = true;
            for (int i = ITERATIONS - 1; i >= 0; i--) {
                local = variable;
                local = variable;
                local = variable;
                local = variable;
                local = variable; // 5
                local = variable;
                local = variable;
                local = variable;
                local = variable;
                local = variable; // 10
                local = variable;
                local = variable;
                local = variable;
                local = variable;
                local = variable; // 15
                local = variable;
                local = variable;
                local = variable;
                local = variable;
                local = variable; // 20
            }
        }
    }

    /* This test is intentionally misspelled. Please do not rename it. Thanks! */
    public static class MemeberVariableAccess extends PerformanceTestBase {
        private static final int ITERATIONS = 100000;

        public volatile boolean mMember = false;

        public int startPerformance(PerformanceTestCase.Intermediates intermediates) {
            intermediates.setInternalIterations(ITERATIONS * 20);
            return 0;
        }

        public void testRun() {
            boolean local = true;
            for (int i = ITERATIONS - 1; i >= 0; i--) {
                local = mMember;
                local = mMember;
                local = mMember;
                local = mMember;
                local = mMember; // 5
                local = mMember;
                local = mMember;
                local = mMember;
                local = mMember;
                local = mMember; // 10
                local = mMember;
                local = mMember;
                local = mMember;
                local = mMember;
                local = mMember; // 15
                local = mMember;
                local = mMember;
                local = mMember;
                local = mMember;
                local = mMember; // 20
            }
        }
    }

    public static class ArrayListIterator extends PerformanceTestBase {
        private static final int ITERATIONS = 10000;
        private ArrayList mList;
        private String[] mKeys;
        private Iterator mIterator;

        public void setUp() throws Exception {
            super.setUp();
            mList = new ArrayList();
            mKeys = new String[ITERATIONS];

            for (int i = ITERATIONS - 1; i >= 0; i--) {
                mKeys[i] = Integer.toString(i, 16);
                mList.add(mKeys[i]);
            }
        }

        public int startPerformance(PerformanceTestCase.Intermediates intermediates) {
            intermediates.setInternalIterations(ITERATIONS);
            return 0;
        }

        public void testRun() {
            mIterator = mList.iterator();
            while (mIterator.hasNext()) {
                mIterator.next();
            }
        }
    }

    public static class Ackermann extends PerformanceTestBase {
        public static final int ITERATIONS = 100;
        public int startPerformance(PerformanceTestCase.Intermediates intermediates) {
            intermediates.setInternalIterations(ITERATIONS);
            return 0;
        }

        public void testRun() {
            for (int i = ITERATIONS - 1; i >= 0; i--) {
                ackermann(3, 13);
            }
        }

        private int ackermann(int m, int n) {
            if (m == 0)
                return n + 1;
            if (n == 0)
                return ackermann(m - 1, 1);
            return ackermann(m, n - 1);
        }
    }

    public static class FibonacciSlow extends PerformanceTestBase {
        public void setUp() throws Exception {
            super.setUp();
            Assert.assertEquals(0, fibonacci(0));
            Assert.assertEquals(1, fibonacci(1));
            Assert.assertEquals(1, fibonacci(2));
            Assert.assertEquals(2, fibonacci(3));
            Assert.assertEquals(6765, fibonacci(20));
        }

        public void tearDown() {
        }

        public int startPerformance(PerformanceTestCase.Intermediates intermediates) {
            return 0;
        }

        public void testRun() {
            fibonacci(20);
        }

        private long fibonacci(long n) {
            if (n == 0)
                return 0;
            if (n == 1)
                return 1;
            return fibonacci(n - 2) + fibonacci(n - 1);
        }
    }

    public static class FibonacciFast extends PerformanceTestBase {
        public void setUp() throws Exception {
            super.setUp();
            Assert.assertEquals(0, fibonacci(0));
            Assert.assertEquals(1, fibonacci(1));
            Assert.assertEquals(1, fibonacci(2));
            Assert.assertEquals(2, fibonacci(3));
            Assert.assertEquals(6765, fibonacci(20));
        }

        public void tearDown() {
        }

        public int startPerformance(PerformanceTestCase.Intermediates intermediates) {
            return 0;
        }

        public void testRun() {
            fibonacci(5000);
        }

        private long fibonacci(long n) {
            if (n == 0)
                return 0;
            if (n == 1)
                return 1;

            int x = 0;
            int y = 1;
            for (int i = 0; i < n - 1; i++) {
                y = y + x;
                x = y - x;
            }

            return y;
        }
    }

    public static class HashMapTest extends PerformanceTestBase {
        private static final int ITERATIONS = 10000;
        private HashMap mMap;
        private String[] mKeys;

        public void setUp() throws Exception {
            super.setUp();
            mMap = new HashMap();
            mKeys = new String[ITERATIONS];

            for (int i = ITERATIONS - 1; i >= 0; i--) {
                mKeys[i] = Integer.toString(i, 16);
                mMap.put(mKeys[i], i);
            }
        }

        public void tearDown() {
        }

        public int startPerformance(PerformanceTestCase.Intermediates intermediates) {
            intermediates.setInternalIterations(ITERATIONS);
            return 0;
        }

        public void testHashMapContainsKey() {
            for (int i = ITERATIONS - 1; i >= 0; i--) {
                mMap.containsKey(mKeys[i]);
            }
        }

        public void testHashMapIterator() {
            Iterator iterator;

            iterator = mMap.entrySet().iterator();
            while (iterator.hasNext()) {
                iterator.next();
            }
        }

        public void testHashMapPut() {
            HashMap map = new HashMap();
            String[] keys = mKeys;
            for (int i = ITERATIONS - 1; i >= 0; i--) {
                map.put(keys[i], i);
            }
        }
    }

    interface IA {
        void funcA0();
        void funcA1();
        void funcA2();
        void funcA3();
    }
    interface IAB extends IA {
        void funcAB0();
        void funcAB1();
        void funcAB2();
        void funcAB3();
    }
    interface IABC extends IAB {
        void funcABC0();
        void funcABC1();
        void funcABC2();
        void funcABC3();
    }
    interface IB {
        void funcB0();
        void funcB1();
        void funcB2();
        void funcB3();
    }
    interface IC {
        void funcC0();
        void funcC1();
        void funcC2();
        void funcC3();
    }

    static class Alphabet implements Cloneable, IB, IABC, IC, Runnable {
        public void funcA0() {
        }
        public void funcA1() {
        }
        public void funcA2() {
        }
        public void funcA3() {
        }
        public void funcAB0() {
        }
        public void funcAB1() {
        }
        public void funcAB2() {
        }
        public void funcAB3() {
        }
        public void funcABC0() {
        }
        public void funcABC1() {
        }
        public void funcABC2() {
        }
        public void funcABC3() {
        }
        public void funcB0() {
        }
        public void funcB1() {
        }
        public void funcB2() {
        }
        public void funcB3() {
        }
        public void funcC0() {
        }
        public void funcC1() {
        }
        public void funcC2() {
        }
        public void funcC3() {
        }
        public void run() {
        }
    };

    public static class InterfaceTests extends PerformanceTestBase {
        private static final int ITERATIONS = 10000;

        public int startPerformance(PerformanceTestCase.Intermediates intermediates) {
            intermediates.setInternalIterations(ITERATIONS * 10);
            return 0;
        }

        /* call method directly */
        public void testInterfaceCalls0() {
            Alphabet alpha = new Alphabet();

            for (int i = ITERATIONS - 1; i >= 0; i--) {
                alpha.funcABC1();
                alpha.funcABC1();
                alpha.funcABC1();
                alpha.funcABC1();
                alpha.funcABC1();
                alpha.funcABC1();
                alpha.funcABC1();
                alpha.funcABC1();
                alpha.funcABC1();
                alpha.funcABC1();
            }
        }

       /* call method through interface reference */
        public void testInterfaceCalls1() {
            Alphabet alpha = new Alphabet();
            IABC iabc = alpha;

            for (int i = ITERATIONS - 1; i >= 0; i--) {
                iabc.funcABC1();
                iabc.funcABC1();
                iabc.funcABC1();
                iabc.funcABC1();
                iabc.funcABC1();
                iabc.funcABC1();
                iabc.funcABC1();
                iabc.funcABC1();
                iabc.funcABC1();
                iabc.funcABC1();
            }
        }

        public void testInstanceOfTrivial() {
            Alphabet alpha = new Alphabet();
            IABC iabc = alpha;
            boolean val;

            for (int i = ITERATIONS - 1; i >= 0; i--) {
                val = iabc instanceof Alphabet;
                val = iabc instanceof Alphabet;
                val = iabc instanceof Alphabet;
                val = iabc instanceof Alphabet;
                val = iabc instanceof Alphabet;
                val = iabc instanceof Alphabet;
                val = iabc instanceof Alphabet;
                val = iabc instanceof Alphabet;
                val = iabc instanceof Alphabet;
                val = iabc instanceof Alphabet;
            }
        }

        public void testInstanceOfInterface() {
            Alphabet alpha = new Alphabet();
            IABC iabc = alpha;
            boolean val;

            for (int i = ITERATIONS - 1; i >= 0; i--) {
                val = iabc instanceof IA;
                val = iabc instanceof IA;
                val = iabc instanceof IA;
                val = iabc instanceof IA;
                val = iabc instanceof IA;
                val = iabc instanceof IA;
                val = iabc instanceof IA;
                val = iabc instanceof IA;
                val = iabc instanceof IA;
                val = iabc instanceof IA;
            }
        }

        public void testInstanceOfNot() {
            Alphabet alpha = new Alphabet();
            IABC iabc = alpha;
            boolean val;

            for (int i = ITERATIONS - 1; i >= 0; i--) {
                val = iabc instanceof EmptyInterface;
                val = iabc instanceof EmptyInterface;
                val = iabc instanceof EmptyInterface;
                val = iabc instanceof EmptyInterface;
                val = iabc instanceof EmptyInterface;
                val = iabc instanceof EmptyInterface;
                val = iabc instanceof EmptyInterface;
                val = iabc instanceof EmptyInterface;
                val = iabc instanceof EmptyInterface;
                val = iabc instanceof EmptyInterface;
            }
        }
    }

    public static class NestedLoop extends PerformanceTestBase {
        private static final int ITERATIONS = 10;
        private static final int LOOPS = 5;

        public int startPerformance(PerformanceTestCase.Intermediates intermediates) {
            intermediates.setInternalIterations(ITERATIONS * LOOPS);
            return 0;
        }

        public void testRun() {
            int x = 0;
            for (int a = 0; a < ITERATIONS; a++) {
                for (int b = 0; b < ITERATIONS; b++) {
                    for (int c = 0; c < ITERATIONS; c++) {
                        for (int d = 0; d < ITERATIONS; d++) {
                            for (int e = 0; e < ITERATIONS; e++) {
                                x++;
                            }
                        }
                    }
                }
            }
        }
    }

    public static class StringConcatenationTests extends PerformanceTestBase {
        private static final int ITERATIONS = 1000;

        public int startPerformance(PerformanceTestCase.Intermediates intermediates) {
            intermediates.setInternalIterations(ITERATIONS);
            return 0;
        }

        public void testStringConcatenation1() {
            StringBuffer buffer = new StringBuffer();
            for (int i = ITERATIONS - 1; i >= 0; i--) {
                buffer.append("Hello World!\n");
            }
            buffer = null;
        }

        public void testStringConcatenation2() {
            String string = "";
            for (int i = ITERATIONS - 1; i >= 0; i--) {
                string += "Hello World!\n";
            }
            string = null;
        }
    }

    public static class StringLength extends PerformanceTestBase {
        private static final int ITERATIONS = 10000;
        private static final String TEST_STRING = "This is the string we use for testing..."; // 40 chars

        public int startPerformance(PerformanceTestCase.Intermediates intermediates) {
            intermediates.setInternalIterations(ITERATIONS * 10);
            return 0;
        }

        public void testRun() {
            String testStr = TEST_STRING;
            int length;

            for (int i = ITERATIONS - 1; i >= 0; i--) {
                length = testStr.length();
                length = testStr.length();
                length = testStr.length();
                length = testStr.length();
                length = testStr.length();
                length = testStr.length();
                length = testStr.length();
                length = testStr.length();
                length = testStr.length();
                length = testStr.length();
            }
        }
    }

    public static class EmptyJniStaticMethod0 extends PerformanceTestBase {
        private static final int ITERATIONS = 10000;

        public int startPerformance(PerformanceTestCase.Intermediates intermediates) {
            intermediates.setInternalIterations(ITERATIONS * 10);
            return 0;
        }

        public void testRun() {
            int a, b, c, d, e, f;

            a = b = c = d = e = f = 0;

            for (int i = ITERATIONS - 1; i >= 0; i--) {
                NativeTestTarget.emptyJniStaticMethod0();
                NativeTestTarget.emptyJniStaticMethod0();
                NativeTestTarget.emptyJniStaticMethod0();
                NativeTestTarget.emptyJniStaticMethod0();
                NativeTestTarget.emptyJniStaticMethod0();
                NativeTestTarget.emptyJniStaticMethod0();
                NativeTestTarget.emptyJniStaticMethod0();
                NativeTestTarget.emptyJniStaticMethod0();
                NativeTestTarget.emptyJniStaticMethod0();
                NativeTestTarget.emptyJniStaticMethod0();
            }
        }
    }
    public static class EmptyJniStaticMethod6 extends PerformanceTestBase {
        private static final int ITERATIONS = 10000;

        public int startPerformance(PerformanceTestCase.Intermediates intermediates) {
            intermediates.setInternalIterations(ITERATIONS * 10);
            return 0;
        }

        public void testRun() {
            int a, b, c, d, e, f;

            a = b = c = d = e = f = 0;

            for (int i = ITERATIONS - 1; i >= 0; i--) {
                NativeTestTarget.emptyJniStaticMethod6(a, b, c, d, e, f);
                NativeTestTarget.emptyJniStaticMethod6(a, b, c, d, e, f);
                NativeTestTarget.emptyJniStaticMethod6(a, b, c, d, e, f);
                NativeTestTarget.emptyJniStaticMethod6(a, b, c, d, e, f);
                NativeTestTarget.emptyJniStaticMethod6(a, b, c, d, e, f);
                NativeTestTarget.emptyJniStaticMethod6(a, b, c, d, e, f);
                NativeTestTarget.emptyJniStaticMethod6(a, b, c, d, e, f);
                NativeTestTarget.emptyJniStaticMethod6(a, b, c, d, e, f);
                NativeTestTarget.emptyJniStaticMethod6(a, b, c, d, e, f);
                NativeTestTarget.emptyJniStaticMethod6(a, b, c, d, e, f);
            }
        }
    }
    public static class EmptyJniStaticMethod6L extends PerformanceTestBase {
        private static final int ITERATIONS = 10000;

        public int startPerformance(PerformanceTestCase.Intermediates intermediates) {
            intermediates.setInternalIterations(ITERATIONS * 10);
            return 0;
        }

        public void testRun() {
            String a = null;
            String[] b = null;
            int[][] c = null;
            Object d = null;
            Object[] e = null;
            Object[][][][] f = null;

            for (int i = ITERATIONS - 1; i >= 0; i--) {
                NativeTestTarget.emptyJniStaticMethod6L(a, b, c, d, e, f);
                NativeTestTarget.emptyJniStaticMethod6L(a, b, c, d, e, f);
                NativeTestTarget.emptyJniStaticMethod6L(a, b, c, d, e, f);
                NativeTestTarget.emptyJniStaticMethod6L(a, b, c, d, e, f);
                NativeTestTarget.emptyJniStaticMethod6L(a, b, c, d, e, f);
                NativeTestTarget.emptyJniStaticMethod6L(a, b, c, d, e, f);
                NativeTestTarget.emptyJniStaticMethod6L(a, b, c, d, e, f);
                NativeTestTarget.emptyJniStaticMethod6L(a, b, c, d, e, f);
                NativeTestTarget.emptyJniStaticMethod6L(a, b, c, d, e, f);
                NativeTestTarget.emptyJniStaticMethod6L(a, b, c, d, e, f);
            }
        }
    }

    public static class StringCrawl extends PerformanceTestBase {
        private static final int ITERATIONS = 10000;
        private static final String TEST_STRING = "This is the string we use for testing..."; // 40 chars

        public int startPerformance(PerformanceTestCase.Intermediates intermediates) {
            intermediates.setInternalIterations(ITERATIONS * TEST_STRING.length());
            return 0;
        }

        public void testRun() {
            String testStr = TEST_STRING;
            char ch;
            for (int i = ITERATIONS - 1; i >= 0; i--) {
                /* this is the wrong way to walk through a string */
                for (int j = 0; j < testStr.length(); j++) {
                    ch = testStr.charAt(j);
                }
            }
        }
    }

    public static class AddTest extends PerformanceTestBase {
        private static final int ITERATIONS = 10000;

        public int startPerformance(PerformanceTestCase.Intermediates intermediates) {
            intermediates.setInternalIterations(ITERATIONS * 20);
            return 0;
        }

        public void testRun() {
            int j = 0;
            for (int i = ITERATIONS - 1; i >= 0; i--) {
                j++;
                j++;
                j++;
                j++;
                j++;
                j++;
                j++;
                j++;
                j++;
                j++;
                j++;
                j++;
                j++;
                j++;
                j++;
                j++;
                j++;
                j++;
                j++;
                j++;
            }
        }
    }

    public static class AddMemberVariableTest extends PerformanceTestBase {
        private static final int ITERATIONS = 10000;
        private int j;

        public void setUp() throws Exception {
           super.setUp();
           j = 0;
        }

        public int startPerformance(PerformanceTestCase.Intermediates intermediates) {
            intermediates.setInternalIterations(ITERATIONS * 10);
            return 0;
        }

        public void testAddMemberVariableTest() {
            for (int i = ITERATIONS - 1; i >= 0; i--) {
                j++;
                j++;
                j++;
                j++;
                j++;
                j++;
                j++;
                j++;
                j++;
                j++;
            }
        }

        public void testAddMemberVariableInMethodTest() {
            for (int i = ITERATIONS - 1; i >= 0; i--) {
                add();
                add();
                add();
                add();
                add();
                add();
                add();
                add();
                add();
                add();
            }
        }

        public void add() {
            j++;
        }
    }

    private interface EmptyInterface {
        public void emptyVirtual();

    }

    private static class EmptyClass implements EmptyInterface {
        public void emptyVirtual() {
        }

        public static void emptyStatic() {
        }
    }

    public static class EmptyClassBaseTest extends PerformanceTestBase {
        protected EmptyInterface mEmptyInterface;
        protected EmptyClass mEmptyClass;

        public void setUp() throws Exception {
            super.setUp();
            mEmptyClass = new EmptyClass();
            mEmptyInterface = mEmptyClass;
        }
        private static final int ITERATIONS = 10000;

        public int startPerformance(PerformanceTestCase.Intermediates intermediates) {
            intermediates.setInternalIterations(ITERATIONS * 10);
            return 0;
        }

        public void testEmptyVirtualMethod() {
            //EmptyClass emtpyClass = mEmptyClass;
            for (int i = ITERATIONS - 1; i >= 0; i--) {
                mEmptyClass.emptyVirtual();
                mEmptyClass.emptyVirtual();
                mEmptyClass.emptyVirtual();
                mEmptyClass.emptyVirtual();
                mEmptyClass.emptyVirtual();
                mEmptyClass.emptyVirtual();
                mEmptyClass.emptyVirtual();
                mEmptyClass.emptyVirtual();
                mEmptyClass.emptyVirtual();
                mEmptyClass.emptyVirtual();
            }
        }

        public void testEmptyVirtualMethodTestInLocal() {
            EmptyClass empty = mEmptyClass;
            for (int i = ITERATIONS - 1; i >= 0; i--) {
                empty.emptyVirtual();
                empty.emptyVirtual();
                empty.emptyVirtual();
                empty.emptyVirtual();
                empty.emptyVirtual();
                empty.emptyVirtual();
                empty.emptyVirtual();
                empty.emptyVirtual();
                empty.emptyVirtual();
                empty.emptyVirtual();
            }
        }

    public void testEmptyStaticMethod () {
            for (int i = ITERATIONS - 1; i >= 0; i--) {
                EmptyClass.emptyStatic();
                EmptyClass.emptyStatic();
                EmptyClass.emptyStatic();
                EmptyClass.emptyStatic();
                EmptyClass.emptyStatic();
                EmptyClass.emptyStatic();
                EmptyClass.emptyStatic();
                EmptyClass.emptyStatic();
                EmptyClass.emptyStatic();
                EmptyClass.emptyStatic();
            }
        }

    public void testEmptyJniStaticMethod0() {

            for (int i = ITERATIONS - 1; i >= 0; i--) {
                NativeTestTarget.emptyJniStaticMethod0();
                NativeTestTarget.emptyJniStaticMethod0();
                NativeTestTarget.emptyJniStaticMethod0();
                NativeTestTarget.emptyJniStaticMethod0();
                NativeTestTarget.emptyJniStaticMethod0();
                NativeTestTarget.emptyJniStaticMethod0();
                NativeTestTarget.emptyJniStaticMethod0();
                NativeTestTarget.emptyJniStaticMethod0();
                NativeTestTarget.emptyJniStaticMethod0();
                NativeTestTarget.emptyJniStaticMethod0();
            }
        }

    public void testEmptyJniStaticMethod6() {
            int a, b, c, d, e, f;

            a = b = c = d = e = f = 0;

            for (int i = ITERATIONS - 1; i >= 0; i--) {
                NativeTestTarget.emptyJniStaticMethod6(a, b, c, d, e, f);
                NativeTestTarget.emptyJniStaticMethod6(a, b, c, d, e, f);
                NativeTestTarget.emptyJniStaticMethod6(a, b, c, d, e, f);
                NativeTestTarget.emptyJniStaticMethod6(a, b, c, d, e, f);
                NativeTestTarget.emptyJniStaticMethod6(a, b, c, d, e, f);
                NativeTestTarget.emptyJniStaticMethod6(a, b, c, d, e, f);
                NativeTestTarget.emptyJniStaticMethod6(a, b, c, d, e, f);
                NativeTestTarget.emptyJniStaticMethod6(a, b, c, d, e, f);
                NativeTestTarget.emptyJniStaticMethod6(a, b, c, d, e, f);
                NativeTestTarget.emptyJniStaticMethod6(a, b, c, d, e, f);
            }
        }

    public void testEmptyInternalStaticMethod() {
            /*
             * The method called is a VM-internal method with no extra
             * wrapping.
             */
            for (int i = ITERATIONS - 1; i >= 0; i--) {
                NativeTestTarget.emptyInternalStaticMethod();
                NativeTestTarget.emptyInternalStaticMethod();
                NativeTestTarget.emptyInternalStaticMethod();
                NativeTestTarget.emptyInternalStaticMethod();
                NativeTestTarget.emptyInternalStaticMethod();
                NativeTestTarget.emptyInternalStaticMethod();
                NativeTestTarget.emptyInternalStaticMethod();
                NativeTestTarget.emptyInternalStaticMethod();
                NativeTestTarget.emptyInternalStaticMethod();
                NativeTestTarget.emptyInternalStaticMethod();
            }
        }

    public void testEmptyInlineStaticMethod() {
            /*
             * The method called is a VM-internal method that gets
             * specially "inlined" in a bytecode transformation.
             */
            for (int i = ITERATIONS - 1; i >= 0; i--) {
                NativeTestTarget.emptyInlineMethod();
                NativeTestTarget.emptyInlineMethod();
                NativeTestTarget.emptyInlineMethod();
                NativeTestTarget.emptyInlineMethod();
                NativeTestTarget.emptyInlineMethod();
                NativeTestTarget.emptyInlineMethod();
                NativeTestTarget.emptyInlineMethod();
                NativeTestTarget.emptyInlineMethod();
                NativeTestTarget.emptyInlineMethod();
                NativeTestTarget.emptyInlineMethod();
            }
        }

    public void testEmptyInterfaceMethodTest() {
            EmptyInterface emptyInterface = mEmptyInterface;
            for (int i = ITERATIONS - 1; i >= 0; i--) {
                emptyInterface.emptyVirtual();
                emptyInterface.emptyVirtual();
                emptyInterface.emptyVirtual();
                emptyInterface.emptyVirtual();
                emptyInterface.emptyVirtual();
                emptyInterface.emptyVirtual();
                emptyInterface.emptyVirtual();
                emptyInterface.emptyVirtual();
                emptyInterface.emptyVirtual();
                emptyInterface.emptyVirtual();
            }
        }
    }

    public static class LoopTests extends PerformanceTestBase {
        private static final int ITERATIONS = 10000;
        private SizeTest mSizeTest = new SizeTest(ITERATIONS);

        public int startPerformance(PerformanceTestCase.Intermediates intermediates) {
            intermediates.setInternalIterations(ITERATIONS);
            return 0;
        }

        public void testForLoopTest() {
            int i = 0;
            for (; i < 10000; i++) {
            }
        }

        public void testWhileLoopTest() {
            int i = 0;

            while (i < 10000) {
                i++;
            }
        }

        public void testForLoopSizeCalledInside() {
            for (int i = 0; i < mSizeTest.size(); i++) {
            }
        }

        public void testForLoopSizeCalledOutside() {
            final int size = mSizeTest.size();
            for (int i = 0; i < size; i++) {
            }
        }
    }

    public static class BoundsCheckTest extends PerformanceTestBase {
        private static final int ITERATIONS = 10000;
        public int startPerformance(PerformanceTestCase.Intermediates intermediates) {
            intermediates.setInternalIterations(ITERATIONS * 10);
            return 0;
        }

        public void testRun() {
            int[] data = new int[1];

            for (int i = ITERATIONS - 1; i >= 0; i--) {
                data[0] = i;
                data[0] = i;
                data[0] = i;
                data[0] = i;
                data[0] = i;
                data[0] = i;
                data[0] = i;
                data[0] = i;
                data[0] = i;
                data[0] = i;
            }
        }
    }

    public static class ArrayListBase extends PerformanceTestBase {
        public void setUp() throws Exception {
            super.setUp();
            mList = new ArrayList();
            mList.add(0);
            mList.add(1);
            mList.add(2);
            mList.add(3);
            mList.add(4);
            mList.add(5);
            mList.add(6);
            mList.add(7);
            mList.add(8);
            mList.add(9);
        }

        public int startPerformance(PerformanceTestCase.Intermediates intermediates) {
            intermediates.setInternalIterations(100);
            return 0;
        }

        ArrayList<Integer> mList;

        public void testForArrayList() {
            int i = 0;
            int res = 0;
            for (; i < 100; i++) {
                for (int j = 0; j < mList.size(); j++) {
                    res += mList.get(j);
                }
            }
        }

        public void testForLocalArrayList() {
            int i = 0;
            int res = 0;
            for (; i < 100; i++) {
                final List<Integer> list = mList;
                final int N = list.size();
                for (int j = 0; j < N; j++) {
                    res += list.get(j);
                }
            }
        }

        public void testForEachArrayList() {
            int i = 0;
            int res = 0;
            for (; i < 100; i++) {
                for (Integer v : mList) {
                    res += v;
                }
            }
        }
    }

    public static class SynchronizedGetAndSetInt extends PerformanceTestBase {
        private static final int ITERATIONS = 100000;

        public int mMember = 0;

        public int startPerformance(PerformanceTestCase.Intermediates intermediates) {
            intermediates.setInternalIterations(ITERATIONS);
            return 0;
        }

        public void testRun() {
            int result = 0;
            for (int i = ITERATIONS - 1; i >= 0; i--) {
                synchronized (this) {
                    result = mMember;
                    mMember = i;
                }
            }
        }
    }

    public static class AtomicGetAndSetInt extends PerformanceTestBase {
        private static final int ITERATIONS = 100000;

        public AtomicInteger mMember = new AtomicInteger(0);

        public int startPerformance(PerformanceTestCase.Intermediates intermediates) {
            intermediates.setInternalIterations(ITERATIONS);
            return 0;
        }

        public void testRun() {
            int result = 0;
            for (int i = ITERATIONS - 1; i >= 0; i--) {
                result = mMember.getAndSet(i);
            }
        }
    }

    public static abstract class StringEquals extends PerformanceTestBase {
        private static final int ITERATIONS = 10000;

        protected String mString1, mString2;
        public void setUp() throws Exception {
          super.setUp();
        }

        public int startPerformance(PerformanceTestCase.Intermediates intermediates) {
            intermediates.setInternalIterations(ITERATIONS * 10);
            return 0;
        }

        public void testRun() {
            String string1 = mString1;
            String string2 = mString2;

            for (int i = ITERATIONS - 1; i >= 0; i--) {
                string1.equals(string2);
                string1.equals(string2);
                string1.equals(string2);
                string1.equals(string2);
                string1.equals(string2);
                string1.equals(string2);
                string1.equals(string2);
                string1.equals(string2);
                string1.equals(string2);
                string1.equals(string2);
            }
        }
    }

    public static class StringEquals2 extends StringEquals {
        public void setUp() throws Exception {
            mString1 = "01";
            mString2 = "0x";
        }
    }
    public static class StringEquals10 extends StringEquals {
        public void setUp() throws Exception {
            mString1 = "0123456789";
            mString2 = "012345678x";
        }
    }
    public static class StringEquals20 extends StringEquals {
        public void setUp() throws Exception {
            mString1 = "01234567890123456789";
            mString2 = "0123456789012345678x";
        }
    }

    public static class StringEquals200 extends StringEquals {
        public void setUp() throws Exception {
            mString1 = "0123456789012345678901234567890123456789"
                    + "0123456789012345678901234567890123456789"
                    + "0123456789012345678901234567890123456789"
                    + "0123456789012345678901234567890123456789"
                    + "0123456789012345678901234567890123456789";
            mString2 = "0123456789012345678901234567890123456789"
                    + "0123456789012345678901234567890123456789"
                    + "0123456789012345678901234567890123456789"
                    + "0123456789012345678901234567890123456789"
                    + "012345678901234567890123456789012345678x";
        }
    }
    public static class StringEquals200U extends StringEquals {
        /* make one of the strings non-word aligned (bad memcmp case) */
        public void setUp() throws Exception {
            String tmpStr;
            mString1 = "0123456789012345678901234567890123456789"
                    + "0123456789012345678901234567890123456789"
                    + "0123456789012345678901234567890123456789"
                    + "0123456789012345678901234567890123456789"
                    + "0123456789012345678901234567890123456789";
            tmpStr = "z0123456789012345678901234567890123456789"
                    + "0123456789012345678901234567890123456789"
                    + "0123456789012345678901234567890123456789"
                    + "0123456789012345678901234567890123456789"
                    + "012345678901234567890123456789012345678x";
            mString2 = tmpStr.substring(1);
        }
    }

    public static abstract class StringCompareTo extends PerformanceTestBase {
        private static final int ITERATIONS = 10000;

        protected String mString1, mString2;

        public int startPerformance(PerformanceTestCase.Intermediates intermediates) {
            intermediates.setInternalIterations(ITERATIONS * 10);
            return 0;
        }

        public void testRun() {
            String string1 = mString1;
            String string2 = mString2;

            for (int i = ITERATIONS - 1; i >= 0; i--) {
                string1.compareTo(string2);
                string1.compareTo(string2);
                string1.compareTo(string2);
                string1.compareTo(string2);
                string1.compareTo(string2);
                string1.compareTo(string2);
                string1.compareTo(string2);
                string1.compareTo(string2);
                string1.compareTo(string2);
                string1.compareTo(string2);
            }
        }
    }
    public static class StringCompareTo10 extends StringCompareTo {
        public void setUp() throws Exception {
            mString1 = "0123456789";
            mString2 = "012345678x";
        }
    }
    public static class StringCompareTo200 extends StringCompareTo {
        public void setUp() throws Exception {
            mString1 = "0123456789012345678901234567890123456789"
                    + "0123456789012345678901234567890123456789"
                    + "0123456789012345678901234567890123456789"
                    + "0123456789012345678901234567890123456789"
                    + "0123456789012345678901234567890123456789";
            mString2 = "0123456789012345678901234567890123456789"
                    + "0123456789012345678901234567890123456789"
                    + "0123456789012345678901234567890123456789"
                    + "0123456789012345678901234567890123456789"
                    + "012345678901234567890123456789012345678x";
        }
    }
}

Other Android examples (source code examples)

Here is a short list of links related to this Android PerformanceTests.java source code file:

... this post is sponsored by my books ...

#1 New Release!

FP Best Seller

 

new blog posts

 

Copyright 1998-2021 Alvin Alexander, alvinalexander.com
All Rights Reserved.

A percentage of advertising revenue from
pages under the /java/jwarehouse URI on this website is
paid back to open source projects.