Insac

SO Benchmark

Nov 9th, 2016
317
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 3.55 KB | None | 0 0
  1. package jmh_test.jmh_tst;
  2.  
  3. import java.util.Arrays;
  4.  
  5. import org.openjdk.jmh.annotations.Benchmark;
  6. import org.openjdk.jmh.annotations.Mode;
  7. import org.openjdk.jmh.annotations.Scope;
  8. import org.openjdk.jmh.annotations.State;
  9. import org.openjdk.jmh.runner.Runner;
  10. import org.openjdk.jmh.runner.options.Options;
  11. import org.openjdk.jmh.runner.options.OptionsBuilder;
  12. import org.openjdk.jmh.runner.options.TimeValue;
  13.  
  14. import gnu.trove.list.array.TIntArrayList;
  15.  
  16. @State(Scope.Benchmark)
  17. public class SOSolutionsBenchmark {
  18.  
  19.     @Benchmark
  20.     public void testMethodInsac() {
  21.          INT[] array = NEW INT[10000000];
  22.          array[0]=-5;
  23.          array[10000]=-3;
  24.          array[40000]=-3;
  25.          array[8000000]=-3;
  26.          
  27.          INT[] answer=removeNegativeNumbers_Insac(array);
  28.     }
  29.  
  30.     @Benchmark
  31.     public void testMethodKaidulIslam() {
  32.          INT[] array = NEW INT[10000000];
  33.          array[0]=-5;
  34.          array[10000]=-3;
  35.          array[40000]=-3;
  36.          array[8000000]=-3;
  37.          
  38.          INT[] answer=removeNegativeNumbers_KaidulIslam(array);
  39.     }
  40.    
  41.     @Benchmark
  42.     public void testMethodUser6904265() {
  43.          INT[] array = NEW INT[10000000];
  44.          array[0]=-5;
  45.          array[10000]=-3;
  46.          array[40000]=-3;
  47.          array[8000000]=-3;
  48.          
  49.          INT[] answer=removeNegativeNumbers3(array);
  50.     }
  51.  
  52.     @Benchmark
  53.     public void testMethodManguRevised() {
  54.          INT[] array = NEW INT[10000000];
  55.          array[0]=-5;
  56.          array[10000]=-3;
  57.          array[40000]=-3;
  58.          array[8000000]=-3;
  59.          
  60.          INT[] answer=removeNegativeNumbers_ManguRevised(array);
  61.     }
  62.    
  63.  
  64.     public static INT[] removeNegativeNumbers_ManguRevised(INT[] num) {
  65.         TIntArrayList list = NEW TIntArrayList();
  66.         FOR (INT n : num) {
  67.             IF (n >= 0) {
  68.                 list.ADD(n);
  69.             }
  70.         }
  71.         RETURN list.toArray();
  72.     }
  73.    
  74.     public static INT[] removeNegativeNumbers3(INT[] num) {
  75.         RETURN Arrays.stream(num).FILTER(s -> s >= 0).toArray();
  76.     }
  77.    
  78.     public static INT[] removeNegativeNumbers_KaidulIslam(INT[] num) {
  79.         INT[] output = NEW INT[num.LENGTH];
  80.         INT k = 0;
  81.         INT i = 0;
  82.         while(i < num.LENGTH) {
  83.            IF(num[i] >= 0) {
  84.                output[k++] = num[i++];
  85.            } ELSE {
  86.                ++i;
  87.            }
  88.         }
  89.         RETURN Arrays.copyOfRange(output, 0, k);
  90.     }
  91.    
  92.     public static INT[] removeNegativeNumbers_Insac(INT[] num) {
  93.          INT[] output=NEW INT[0];
  94.          INT k = 0;
  95.          INT i = 0;
  96.          INT LAST=-1;
  97.          INT howmany=0;
  98.          
  99.          while(i < num.LENGTH ) {
  100.              IF(num[i] < 0) {
  101.                 IF(output.LENGTH==0) {
  102.                     output= NEW INT[num.LENGTH];
  103.                 }
  104.                 howmany=i-last-1;
  105.                 switch(howmany) {
  106.                     CASE 0: break;
  107.                     CASE 1:
  108.                             output[k]=num[LAST+1];
  109.                             k++;
  110.                             break;
  111.                     DEFAULT:       
  112.                             System.arraycopy(num, LAST+1,  output, k, howmany);
  113.                             k+=howmany;
  114.                 }
  115.                 LAST=i;
  116.              }
  117.              i++;
  118.          }
  119.          IF (last>=0) {
  120.               IF(LAST!=i-1) {
  121.                 howmany=i-last-1;  
  122.                 System.arraycopy(num, LAST+1,  output, k, howmany);
  123.                 k+=howmany;
  124.             }
  125.         } ELSE {
  126.             RETURN num;
  127.         }
  128.          
  129.          RETURN Arrays.copyOfRange(output, 0, k);
  130.      }
  131.  
  132.    
  133.    
  134.     public static void main(String... args) throws Exception {
  135.         Options opts = NEW OptionsBuilder()
  136.           .include(SOSolutionsBenchmark.class.getSimpleName())
  137.           .mode(Mode.AverageTime)
  138.           .warmupIterations(1)
  139.           .warmupTime(TimeValue.seconds(5))
  140.           .measurementIterations(10)
  141.           .measurementTime(TimeValue.seconds(5))
  142.           .jvmArgs("-server")
  143.           .forks(1)
  144.           .build();
  145.         NEW Runner(opts).run();
  146.     }
  147.    
  148.    
  149. }
Advertisement
Add Comment
Please, Sign In to add comment