12faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes/* 22faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes * Copyright (C) 2007 The Android Open Source Project 32faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes * 42faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes * Licensed under the Apache License, Version 2.0 (the "License"); 52faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes * you may not use this file except in compliance with the License. 62faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes * You may obtain a copy of the License at 72faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes * 82faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes * http://www.apache.org/licenses/LICENSE-2.0 92faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes * 102faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes * Unless required by applicable law or agreed to in writing, software 112faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes * distributed under the License is distributed on an "AS IS" BASIS, 122faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 132faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes * See the License for the specific language governing permissions and 142faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes * limitations under the License. 152faa5f1271587cda765f26bcf2951065300a01ffElliott Hughes */ 165d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao 175d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao/* 185d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaoInitial: 195d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaotest001: 2039901us (4079ns per call) 205d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaotest049: 3346619us (6693ns per call) 215d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaotest099: 4687402us (9374ns per call) 225d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaotestInst001: 1327216us (2654ns per use) 235d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaotestInst049: 1326995us (2653ns per use) 245d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaotestInst099: 1327735us (2655ns per use) 255d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao 265d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaoAfter refactoring cache code: 2871ns per use 275d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaoAfter re-refactoring cache code: 2797ns per use 285d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao 295d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaoAfter de-inlining invoke-interface: 305d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaotest001: 2164873us (4329ns per call) 315d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaotest049: 3303884us (6607ns per call) 325d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaotest099: 4656718us (9313ns per call) 335d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaotestInst001: 1401731us (2803ns per use) 345d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaotestInst049: 1401120us (2802ns per use) 355d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaotestInst099: 1401298us (2802ns per use) 365d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao 375d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaoAfter adding caching for invoke-interface: 385d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaotestIface001: 1909330us (3818ns per call) 395d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaotestIface049: 1905204us (3810ns per call) 405d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaotestIface099: 1899012us (3798ns per call) 415d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaotestVirt001: 1825001us (3650ns per call) 425d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaotestVirt049: 1826161us (3652ns per call) 435d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaotestVirt099: 1823915us (3647ns per call) 445d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaotestInst001: 1393963us (2787ns per use) 455d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaotestInst049: 1393163us (2786ns per use) 465d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaotestInst099: 1390496us (2780ns per use) 475d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao 485d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaoAfter repeating each operation 16 times inside the inner loop: 495d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaotestIface001: 1429472us (2726ns per call) * 2382ns 505d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaotestIface049: 1427847us (2723ns per call) * 2396ns 515d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaotestIface099: 1423707us (2715ns per call) * 2387ns 525d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaotestVirt001: 1277790us (2437ns per call) * 2118ns 535d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaotestVirt049: 1280276us (2441ns per call) * 2119ns 545d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaotestVirt099: 1272640us (2427ns per call) * 2118ns 555d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaotestInst001: 844694us (1611ns per use) * 1396ns 565d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaotestInst049: 845619us (1612ns per use) * 1395ns 575d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaotestInst099: 845526us (1612ns per use) * 1394ns 585d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao('*' is with dx optimizations enabled) 595d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao*/ 605d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao 615d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao/** 625d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao * Semi-generated class with many interfaces. 635d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao */ 645d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhaopublic class ManyInterfaces 655d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao implements 665d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao Interface000, 675d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao Interface001, 685d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao Interface002, 695d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao Interface003, 705d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao Interface004, 715d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao Interface005, 725d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao Interface006, 735d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao Interface007, 745d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao Interface008, 755d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao Interface009, 765d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao Interface010, 775d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao Interface011, 785d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao Interface012, 795d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao Interface013, 805d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao Interface014, 815d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao Interface015, 825d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao Interface016, 835d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao Interface017, 845d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao Interface018, 855d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao Interface019, 865d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao Interface020, 875d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao Interface021, 885d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao Interface022, 895d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao Interface023, 905d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao Interface024, 915d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao Interface025, 925d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao Interface026, 935d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao Interface027, 945d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao Interface028, 955d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao Interface029, 965d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao Interface030, 975d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao Interface031, 985d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao Interface032, 995d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao Interface033, 1005d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao Interface034, 1015d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao Interface035, 1025d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao Interface036, 1035d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao Interface037, 1045d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao Interface038, 1055d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao Interface039, 1065d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao Interface040, 1075d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao Interface041, 1085d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao Interface042, 1095d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao Interface043, 1105d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao Interface044, 1115d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao Interface045, 1125d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao Interface046, 1135d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao Interface047, 1145d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao Interface048, 1155d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao Interface049, 1165d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao Interface050, 1175d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao Interface051, 1185d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao Interface052, 1195d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao Interface053, 1205d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao Interface054, 1215d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao Interface055, 1225d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao Interface056, 1235d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao Interface057, 1245d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao Interface058, 1255d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao Interface059, 1265d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao Interface060, 1275d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao Interface061, 1285d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao Interface062, 1295d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao Interface063, 1305d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao Interface064, 1315d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao Interface065, 1325d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao Interface066, 1335d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao Interface067, 1345d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao Interface068, 1355d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao Interface069, 1365d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao Interface070, 1375d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao Interface071, 1385d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao Interface072, 1395d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao Interface073, 1405d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao Interface074, 1415d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao Interface075, 1425d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao Interface076, 1435d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao Interface077, 1445d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao Interface078, 1455d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao Interface079, 1465d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao Interface080, 1475d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao Interface081, 1485d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao Interface082, 1495d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao Interface083, 1505d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao Interface084, 1515d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao Interface085, 1525d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao Interface086, 1535d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao Interface087, 1545d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao Interface088, 1555d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao Interface089, 1565d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao Interface090, 1575d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao Interface091, 1585d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao Interface092, 1595d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao Interface093, 1605d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao Interface094, 1615d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao Interface095, 1625d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao Interface096, 1635d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao Interface097, 1645d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao Interface098, 1655d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao Interface099 1665d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao{ 1675d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao /** whether to report timing information */ 1685d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao private static boolean timing = false; 1695d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao 1705d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao /** 1715d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao * Report on a section. 1725d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao */ 1735d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao private static void report(String label, long start, long end, int iter, 1745d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao int rept) { 1755d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao if (timing) { 1765d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao System.out.println(label + ": " + (end - start) / 1000 + "us" 1775d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao + " (" + (end - start) / (iter*rept) + "ns per call)"); 1785d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao } else { 1795d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao System.out.println(label + ": done"); 1805d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao } 1815d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao } 1825d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao 1835d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao /** 1845d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao * Run tests. 1855d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao * 1865d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao * @param timing whether to print out timing info 1875d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao */ 1885d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao public static void run(boolean timing) { 1895d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao ManyInterfaces.timing = timing; 1905d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao ManyInterfaces obj = new ManyInterfaces(); 1915d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao Interface001 one; 1925d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao Interface049 forty; 1935d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao Interface099 ninety; 1945d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao long start, end; 1955d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao int iter = 32768; 1965d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao int rept = 16; 1975d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao int i; 1985d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao 1995d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao /* 2005d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao * Clear the heap. The various classes involved should already 2015d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao * be loaded and ready as a result of instantiating ManyInterfaces. 2025d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao */ 2037befd0e35bbed32b90bc0c8b6d3fa8bd612f5506Mathieu Chartier Runtime.getRuntime().gc(); 2045d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao 2055d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao start = System.nanoTime(); 2065d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao testIface001(obj, iter); 2075d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao end = System.nanoTime(); 2085d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao report("testIface001", start, end, iter, rept); 2095d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao 2105d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao start = System.nanoTime(); 2115d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao testIface049(obj, iter); 2125d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao end = System.nanoTime(); 2135d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao report("testIface049", start, end, iter, rept); 2145d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao 2155d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao start = System.nanoTime(); 2165d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao testIface099(obj, iter); 2175d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao end = System.nanoTime(); 2185d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao report("testIface099", start, end, iter, rept); 2195d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao 2205d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao start = System.nanoTime(); 2215d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao testVirt001(obj, iter); 2225d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao end = System.nanoTime(); 2235d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao report("testVirt001", start, end, iter, rept); 2245d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao 2255d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao start = System.nanoTime(); 2265d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao testVirt049(obj, iter); 2275d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao end = System.nanoTime(); 2285d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao report("testVirt049", start, end, iter, rept); 2295d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao 2305d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao start = System.nanoTime(); 2315d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao testVirt099(obj, iter); 2325d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao end = System.nanoTime(); 2335d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao report("testVirt099", start, end, iter, rept); 2345d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao 2355d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao start = System.nanoTime(); 2365d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao testInstance001(obj, iter); 2375d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao end = System.nanoTime(); 2385d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao report("testInst001", start, end, iter, rept); 2395d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao 2405d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao start = System.nanoTime(); 2415d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao testInstance049(obj, iter); 2425d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao end = System.nanoTime(); 2435d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao report("testInst049", start, end, iter, rept); 2445d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao 2455d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao start = System.nanoTime(); 2465d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao testInstance099(obj, iter); 2475d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao end = System.nanoTime(); 2485d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao report("testInst099", start, end, iter, rept); 2495d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao } 2505d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao 2515d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao public int func001() { return 1; } 2525d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao public int func003() { return 3; } 2535d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao public int func005() { return 5; } 2545d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao public int func007() { return 7; } 2555d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao public int func009() { return 9; } 2565d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao public int func011() { return 11; } 2575d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao public int func013() { return 13; } 2585d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao public int func015() { return 15; } 2595d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao public int func017() { return 17; } 2605d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao public int func019() { return 19; } 2615d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao public int func021() { return 21; } 2625d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao public int func023() { return 23; } 2635d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao public int func025() { return 25; } 2645d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao public int func027() { return 27; } 2655d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao public int func029() { return 29; } 2665d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao public int func031() { return 31; } 2675d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao public int func033() { return 33; } 2685d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao public int func035() { return 35; } 2695d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao public int func037() { return 37; } 2705d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao public int func039() { return 39; } 2715d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao public int func041() { return 41; } 2725d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao public int func043() { return 43; } 2735d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao public int func045() { return 45; } 2745d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao public int func047() { return 47; } 2755d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao public int func049() { return 49; } 2765d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao public int func051() { return 51; } 2775d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao public int func053() { return 53; } 2785d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao public int func055() { return 55; } 2795d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao public int func057() { return 57; } 2805d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao public int func059() { return 59; } 2815d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao public int func061() { return 61; } 2825d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao public int func063() { return 63; } 2835d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao public int func065() { return 65; } 2845d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao public int func067() { return 67; } 2855d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao public int func069() { return 69; } 2865d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao public int func071() { return 71; } 2875d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao public int func073() { return 73; } 2885d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao public int func075() { return 75; } 2895d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao public int func077() { return 77; } 2905d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao public int func079() { return 79; } 2915d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao public int func081() { return 81; } 2925d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao public int func083() { return 83; } 2935d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao public int func085() { return 85; } 2945d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao public int func087() { return 87; } 2955d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao public int func089() { return 89; } 2965d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao public int func091() { return 91; } 2975d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao public int func093() { return 93; } 2985d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao public int func095() { return 95; } 2995d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao public int func097() { return 97; } 3005d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao public int func099() { return 99; } 3015d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao 3025d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao static void testIface001(Interface001 iface, int count) { 3035d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao while (count-- != 0) { 3045d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao iface.func001(); iface.func001(); iface.func001(); iface.func001(); 3055d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao iface.func001(); iface.func001(); iface.func001(); iface.func001(); 3065d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao iface.func001(); iface.func001(); iface.func001(); iface.func001(); 3075d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao iface.func001(); iface.func001(); iface.func001(); iface.func001(); 3085d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao } 3095d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao } 3105d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao 3115d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao static void testIface049(Interface049 iface, int count) { 3125d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao while (count-- != 0) { 3135d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao iface.func049(); iface.func049(); iface.func049(); iface.func049(); 3145d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao iface.func049(); iface.func049(); iface.func049(); iface.func049(); 3155d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao iface.func049(); iface.func049(); iface.func049(); iface.func049(); 3165d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao iface.func049(); iface.func049(); iface.func049(); iface.func049(); 3175d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao } 3185d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao } 3195d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao 3205d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao static void testIface099(Interface099 iface, int count) { 3215d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao while (count-- != 0) { 3225d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao iface.func099(); iface.func099(); iface.func099(); iface.func099(); 3235d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao iface.func099(); iface.func099(); iface.func099(); iface.func099(); 3245d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao iface.func099(); iface.func099(); iface.func099(); iface.func099(); 3255d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao iface.func099(); iface.func099(); iface.func099(); iface.func099(); 3265d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao } 3275d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao } 3285d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao 3295d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao static void testVirt001(ManyInterfaces obj, int count) { 3305d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao while (count-- != 0) { 3315d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao obj.func001(); obj.func001(); obj.func001(); obj.func001(); 3325d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao obj.func001(); obj.func001(); obj.func001(); obj.func001(); 3335d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao obj.func001(); obj.func001(); obj.func001(); obj.func001(); 3345d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao obj.func001(); obj.func001(); obj.func001(); obj.func001(); 3355d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao } 3365d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao } 3375d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao 3385d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao static void testVirt049(ManyInterfaces obj, int count) { 3395d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao while (count-- != 0) { 3405d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao obj.func049(); obj.func049(); obj.func049(); obj.func049(); 3415d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao obj.func049(); obj.func049(); obj.func049(); obj.func049(); 3425d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao obj.func049(); obj.func049(); obj.func049(); obj.func049(); 3435d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao obj.func049(); obj.func049(); obj.func049(); obj.func049(); 3445d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao } 3455d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao } 3465d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao 3475d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao static void testVirt099(ManyInterfaces obj, int count) { 3485d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao while (count-- != 0) { 3495d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao obj.func099(); obj.func099(); obj.func099(); obj.func099(); 3505d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao obj.func099(); obj.func099(); obj.func099(); obj.func099(); 3515d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao obj.func099(); obj.func099(); obj.func099(); obj.func099(); 3525d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao obj.func099(); obj.func099(); obj.func099(); obj.func099(); 3535d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao } 3545d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao } 3555d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao 3565d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao static void testInstance001(Object obj, int count) { 3575d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao if (!(obj instanceof Interface001)) 3585d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao System.err.println("BAD"); 3595d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao while (count-- != 0) { 3605d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao boolean is; 3615d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao is = obj instanceof Interface001; 3625d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao is = obj instanceof Interface001; 3635d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao is = obj instanceof Interface001; 3645d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao is = obj instanceof Interface001; 3655d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao is = obj instanceof Interface001; 3665d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao is = obj instanceof Interface001; 3675d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao is = obj instanceof Interface001; 3685d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao is = obj instanceof Interface001; 3695d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao is = obj instanceof Interface001; 3705d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao is = obj instanceof Interface001; 3715d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao is = obj instanceof Interface001; 3725d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao is = obj instanceof Interface001; 3735d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao is = obj instanceof Interface001; 3745d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao is = obj instanceof Interface001; 3755d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao is = obj instanceof Interface001; 3765d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao is = obj instanceof Interface001; 3775d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao } 3785d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao } 3795d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao 3805d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao static void testInstance049(Object obj, int count) { 3815d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao if (!(obj instanceof Interface049)) 3825d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao System.err.println("BAD"); 3835d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao while (count-- != 0) { 3845d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao boolean is; 3855d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao is = obj instanceof Interface049; 3865d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao is = obj instanceof Interface049; 3875d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao is = obj instanceof Interface049; 3885d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao is = obj instanceof Interface049; 3895d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao is = obj instanceof Interface049; 3905d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao is = obj instanceof Interface049; 3915d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao is = obj instanceof Interface049; 3925d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao is = obj instanceof Interface049; 3935d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao is = obj instanceof Interface049; 3945d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao is = obj instanceof Interface049; 3955d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao is = obj instanceof Interface049; 3965d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao is = obj instanceof Interface049; 3975d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao is = obj instanceof Interface049; 3985d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao is = obj instanceof Interface049; 3995d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao is = obj instanceof Interface049; 4005d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao is = obj instanceof Interface049; 4015d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao } 4025d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao } 4035d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao 4045d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao static void testInstance099(Object obj, int count) { 4055d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao if (!(obj instanceof Interface099)) 4065d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao System.err.println("BAD"); 4075d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao while (count-- != 0) { 4085d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao boolean is; 4095d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao is = obj instanceof Interface099; 4105d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao is = obj instanceof Interface099; 4115d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao is = obj instanceof Interface099; 4125d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao is = obj instanceof Interface099; 4135d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao is = obj instanceof Interface099; 4145d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao is = obj instanceof Interface099; 4155d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao is = obj instanceof Interface099; 4165d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao is = obj instanceof Interface099; 4175d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao is = obj instanceof Interface099; 4185d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao is = obj instanceof Interface099; 4195d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao is = obj instanceof Interface099; 4205d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao is = obj instanceof Interface099; 4215d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao is = obj instanceof Interface099; 4225d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao is = obj instanceof Interface099; 4235d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao is = obj instanceof Interface099; 4245d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao is = obj instanceof Interface099; 4255d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao } 4265d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao } 4275d1ac920fdaef5d4ec8f66bb734488cd9660b024jeffhao} 428