В Интернете я увидел, что должен был использовать System.nanoTime()
, но это не работает для меня - оно дает мне время с точностью до миллисекунд. Мне просто нужны микросекунды до и после выполнения моей функции, чтобы я знал, сколько времени это займет. Я использую Windows XP.
По сути, у меня есть этот код, который, например, выполняет от 1 до 10 миллионов вставок в связанный список Java. Проблема в том, что я не могу измерить правильную точность; иногда для вставки всего в меньший список требуется меньше времени.
Вот пример:
class test
{
public static void main(String args[])
{
for(int k=1000000; k<=10000000; k+=1000000)
{
System.out.println(k);
LinkedList<Integer> aux = new LinkedList<Integer>();
//need something here to see the start time
for(int i=0; i<k; i++)
aux.addFirst(10000);
//need something here to see the end time
//print here the difference between both times
}
}
}
Я делал это много раз - внешний цикл делал это 20 раз для каждого k - но результат не очень хороший. Иногда для создания 10 миллионов вставок требуется меньше времени, чем для 1 миллиона, поскольку я не получаю правильное измеренное время с тем, что я использую сейчас (System.nanoTime ())
Редактировать 2: Да, я использую Sun JVM.
Редактировать 3: Возможно, я сделал что-то не так в коде, посмотрю, будет ли изменение делать то, что я хочу.
Редактировать 4: Моя ошибка, кажется, System.nanoTime () работает. Уф.