Я пытаюсь создать тестовый тест с помощью 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;
}
В настоящее время я использую этот цикл несколько раз в другом цикле, который происходит несколько раз и получает время min/max/avg, необходимое для запуска этого метода. Затем я начинаю работу над другим потоком и снова тестирую. В принципе, я просто хочу получить согласованные результаты... Кажется довольно последовательным, если у меня цикл 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", который даст более быстрые и последовательные результаты.
Спасибо