2010-12-05 4 views

ответ

2

Простое решение:

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

long start =System.currentTimeMillis();

После того, как код, который вы отслеживаете грейфер текущее время и вычесть его из начальной точки, чтобы получить общее время:
System.out.println(System.currentTimeMillis() - start);

0

Если он работает относительно быстро и y ou're пытается получить среднее время, запустив его на кучу случайных входов, используйте:

long totalTime = 0; 
long start = System.nanoTime(); 
for(int i=0;i<n;i++){ 
    //Generate a and b 
    getGcd(a, b); 
} 
long end = System.nanoTime(); 
totalTime = end - start; 
start = System.nanoTime(); 
for (int i=0;i<n;i++){ 
    //Generate a and b 
} 
end = System.nanoTime(); 
totalTime -= end - start; 
return totalTime/n; 

Это дает Вам среднее время в наносекунд.

Поиск среднего времени работы GCD - очень интересная и сложная проблема. В худшем случае входы имеют отношение, близкое к золотому среднему (например, последовательные числа Фибоначчи), а затем время работы O (log n). Но по-прежнему возможно иметь чрезвычайно большие входы и заканчиваться по существу постоянным временем. Мне было бы интересно узнать ваши результаты.

Смежные вопросы