All Downloads are FREE. Search and download functionalities are using the official Maven repository.

ca.odell.glazedlists.SortedListBenchmark Maven / Gradle / Ivy

/**
 *
 */
package ca.odell.glazedlists;

import org.openjdk.jmh.annotations.Benchmark;
import org.openjdk.jmh.annotations.Fork;
import org.openjdk.jmh.annotations.Measurement;
import org.openjdk.jmh.annotations.Param;
import org.openjdk.jmh.annotations.Scope;
import org.openjdk.jmh.annotations.Setup;
import org.openjdk.jmh.annotations.State;
import org.openjdk.jmh.annotations.Warmup;

import java.util.Random;

/**
 * @author hbrands
 *
 */
@State(Scope.Benchmark)
//@BenchmarkMode(Mode.AverageTime)
//@OutputTimeUnit(TimeUnit.MICROSECONDS)
public class SortedListBenchmark {

   @Param({ "0", "100000" })
   private int baseSize;

   private int changeSize;

   private EventList base;

   private Random dice = new Random(0);

   @Setup
   public void setUp() {
       if (baseSize == 0) {
           changeSize = 10000;
       }
       if (baseSize == 100000) {
           changeSize = 0;
       }

       base = new BasicEventList<>();
       for(int i = 0; i < baseSize; i++) {
           base.add(new Integer(dice.nextInt(Integer.MAX_VALUE)));
       }
   }

   @Benchmark
   @Warmup(iterations = 5)
   @Measurement(iterations = 10)
   @Fork(1)
   public EventList testBarcode() {
       EventList baseCopy = GlazedLists.eventList(base);
       EventList sortedBase = new SortedList<>(baseCopy);
       doTest(baseCopy, sortedBase);
       return sortedBase;
   }

   private void doTest(EventList baseCopy, EventList sortedBase) {
       for(int i = 0; i < changeSize; i++) {
           baseCopy.add(new Integer(Integer.MAX_VALUE));
       }
       // get all values
       for(int i = 0; i < sortedBase.size(); i++) {
           sortedBase.get(i);
       }
       // remove N
       for(int i = 0; i < changeSize; i++) {
           baseCopy.remove(baseCopy.size() - 1);
       }
   }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy