github.com/acrespo/mobile@v0.0.0-20190107162257-dc0771356504/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  }