Я пытаюсь создать тест с помощью Java.В настоящее время у меня есть следующий простой метод:
public static long runTest(int times){
long start = System.nanoTime();
String str = "str";
for(int i=0; i<times; i++){
str = "str"+i;
}
return System.nanoTime()-start;
}
В настоящее время у меня есть этот цикл несколько раз в другом цикле, который происходит несколько раз, и получаю минимальное / максимальное / среднее время, необходимое для запуска этого метода,Затем я начинаю некоторые действия в другом потоке и снова тестирую.По сути, я просто хочу получить последовательные результаты ... Кажется, довольно последовательным, если у меня есть цикл runTest 10 миллионов раз:
Number of times ran: 5
The max time was: 1231419504 (102.85% of the average)
The min time was: 1177508466 (98.35% of the average)
The average time was: 1197291937
The difference between the max and min is: 4.58%
Activated thread activity.
Number of times ran: 5
The max time was: 3872724739 (100.82% of the average)
The min time was: 3804827995 (99.05% of the average)
The average time was: 3841216849
The difference between the max and min is: 1.78%
Running with thread activity took 320.83% as much time as running without.
Но это кажется немного большим, и занимает некоторое время ... еслиЯ пробую меньшее число (100000) в цикле runTest ... оно начинает становиться очень непоследовательным:
Number of times ran: 5
The max time was: 34726168 (143.01% of the average)
The min time was: 20889055 (86.02% of the average)
The average time was: 24283026
The difference between the max and min is: 66.24%
Activated thread activity.
Number of times ran: 5
The max time was: 143950627 (148.83% of the average)
The min time was: 64780554 (66.98% of the average)
The average time was: 96719589
The difference between the max and min is: 122.21%
Running with thread activity took 398.3% as much time as running without.
Есть ли способ, которым я могу сделать такой тест, который будет последовательным и эффективным /быстро?
Кстати, я не тестирую код, который находится между временем начала и окончания.Я тестирую загрузку процессора некоторым способом (посмотрите, как я запускаю некоторую активность потока и повторное тестирование).Поэтому я думаю, что то, что я ищу, может заменить код, который у меня есть в «runTest», что даст более быстрые и согласованные результаты.
Спасибо