JMH Micro Benchmarking с JMH для статического метода Java возвращает исключение OutOfBounds - PullRequest
0 голосов
/ 28 мая 2018

Я настроил этот тест производительности

static Random rand = new Random();
static int  n = rand.nextInt(999) + 1;

@Setup
public static final void setup(){
int x = 1000;
  for (int i = 0; i < x; i++){
    id.add(rand.nextInt(500) + 1);
    property_address.add(rand.nextInt(1000) + 1);
    email.add(rand.nextInt(1000) + 1);
    owner_address.add(rand.nextInt(1000) + 1);
    price.add(rand.nextInt(1000) + 1);
    date_sold.add(rand.nextInt(1000) + 1);
  }
  System.out.println("Setup Complete");

} 

   @Benchmark
   public static void getPropertybyId(){
    System.out.println(id.get(n) +", "+ property_address.get(n) +", "+ 
    first_name.get(n) +", "+ last_name.get(n) +", "+
    email.get(n) +", "+
    owner_address.get(n) +", "+
    price.get(n)+", "+
    date_sold.get(n));

} 

Поскольку я хочу увидеть, как быстро работает getPropertyById, я хочу заполнить список / свойство / адрес электронной почты 1000 случайными целочисленными элементами, а затем получить случайный элементиз каждого массива по одному и тому же индексу (n).

Это фактический метод, но я вынул сканер, чтобы использовать случайные данные, чтобы при тестировании не приходилось ждать ввода пользователя

public static void getPropertybyId(){
   Scanner reader = new Scanner(System.in);  // Reading from System.in
   System.out.println("Enter an id number to search properties: ");
   int n = reader.nextInt(); // Scans the next token of the input as an int.
  reader.close();
  System.out.println(id.get(n) +", "+ property_address.get(n) +", "+ first_name.get(n) +", "+ last_name.get(n) +", "+
  email.get(n) +", "+
  owner_address.get(n) +", "+
  price.get(n)+", "+
  date_sold.get(n));
}

Я получаю следующую ошибку

 java.lang.IndexOutOfBoundsException: Index: 902, Size: 0
       at java.util.ArrayList.rangeCheck(Unknown Source)
       at java.util.ArrayList.get(Unknown Source)
       at org.sample.MyBenchmark.getPropertybyId(MyBenchmark.java:80)
...