Я видел в Интернете, что я должен использовать 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(). Уф.