github.com/coming-chat/gomobile@v0.0.0-20220601074111-56995f7d7aba/bind/java/SeqBench.java (about) 1 // Copyright 2016 The Go Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 package go; 6 7 import android.test.InstrumentationTestCase; 8 import android.util.Log; 9 10 import java.util.Map; 11 import java.util.HashMap; 12 13 import java.util.concurrent.Executors; 14 import java.util.concurrent.ExecutorService; 15 16 import benchmark.*; 17 18 public class SeqBench extends InstrumentationTestCase { 19 20 public static class AnI implements I { 21 @Override public void f() { 22 } 23 } 24 25 private static class Benchmarks implements benchmark.Benchmarks { 26 private static Map<String, Runnable> benchmarks; 27 private static ExecutorService executor = Executors.newSingleThreadExecutor(); 28 29 static { 30 benchmarks = new HashMap<String, Runnable>(); 31 benchmarks.put("Empty", new Runnable() { 32 @Override public void run() { 33 } 34 }); 35 benchmarks.put("Noargs", new Runnable() { 36 @Override public void run() { 37 Benchmark.noargs(); 38 } 39 }); 40 benchmarks.put("Onearg", new Runnable() { 41 @Override public void run() { 42 Benchmark.onearg(0); 43 } 44 }); 45 benchmarks.put("Manyargs", new Runnable() { 46 @Override public void run() { 47 Benchmark.manyargs(0, 0, 0, 0, 0, 0, 0, 0, 0, 0); 48 } 49 }); 50 benchmarks.put("Oneret", new Runnable() { 51 @Override public void run() { 52 Benchmark.oneret(); 53 } 54 }); 55 final I javaRef = new AnI(); 56 benchmarks.put("Refforeign", new Runnable() { 57 @Override public void run() { 58 Benchmark.ref(javaRef); 59 } 60 }); 61 final I goRef = Benchmark.newI(); 62 benchmarks.put("Refgo", new Runnable() { 63 @Override public void run() { 64 Benchmark.ref(goRef); 65 } 66 }); 67 benchmarks.put("StringShort", new Runnable() { 68 @Override public void run() { 69 Benchmark.string(Benchmark.ShortString); 70 } 71 }); 72 benchmarks.put("StringLong", new Runnable() { 73 @Override public void run() { 74 Benchmark.string(Benchmark.LongString); 75 } 76 }); 77 benchmarks.put("StringShortUnicode", new Runnable() { 78 @Override public void run() { 79 Benchmark.string(Benchmark.ShortStringUnicode); 80 } 81 }); 82 benchmarks.put("StringLongUnicode", new Runnable() { 83 @Override public void run() { 84 Benchmark.string(Benchmark.LongStringUnicode); 85 } 86 }); 87 benchmarks.put("StringRetShort", new Runnable() { 88 @Override public void run() { 89 Benchmark.stringRetShort(); 90 } 91 }); 92 benchmarks.put("StringRetLong", new Runnable() { 93 @Override public void run() { 94 Benchmark.stringRetLong(); 95 } 96 }); 97 final byte[] shortSlice = Benchmark.getShortSlice(); 98 benchmarks.put("SliceShort", new Runnable() { 99 @Override public void run() { 100 Benchmark.slice(shortSlice); 101 } 102 }); 103 final byte[] longSlice = Benchmark.getLongSlice(); 104 benchmarks.put("SliceLong", new Runnable() { 105 @Override public void run() { 106 Benchmark.slice(longSlice); 107 } 108 }); 109 } 110 111 public void runDirect(String name, final long n) { 112 final Runnable r = benchmarks.get(name); 113 try { 114 executor.submit(new Runnable() { 115 @Override public void run() { 116 for (int i = 0; i < n; i++) { 117 r.run(); 118 } 119 } 120 }).get(); 121 } catch (Exception e) { 122 throw new RuntimeException(e); 123 } 124 } 125 126 public void run(String name, long n) { 127 final Runnable r = benchmarks.get(name); 128 for (int i = 0; i < n; i++) { 129 r.run(); 130 } 131 } 132 133 @Override public I newI() { 134 return new AnI(); 135 } 136 @Override public void ref(I i) { 137 } 138 @Override public void noargs() { 139 } 140 @Override public void onearg(long i) { 141 } 142 @Override public long oneret() { 143 return 0; 144 } 145 @Override public void manyargs(long p0, long p1, long p2, long p3, long p4, long p5, long p6, long p7, long gp8, long p9) { 146 } 147 @Override public void string(String s) { 148 } 149 @Override public void slice(byte[] s) { 150 } 151 @Override public String stringRetShort() { 152 return Benchmark.ShortString; 153 } 154 @Override public String stringRetLong() { 155 return Benchmark.LongString; 156 } 157 } 158 159 public void testBenchmark() { 160 Benchmark.runBenchmarks(new Benchmarks()); 161 } 162 }