Member 14818745 Ответов: 1

Как найти точное время выполнения функций библиотеки java math в наносекундном диапазоне?


Я просто хочу узнать точное время выполнения математических функций java, таких как Math.sqrt() в наносекундном диапазоне. Я использовал System.nanoTime (), чтобы найти время, но оно дает разное время выполнения при каждом запуске.

Что я уже пробовал:

 I have used System.nanoTime() to find the time but it's giving different execution time on each run.

 code that i have used is:

import java.util.concurrent.TimeUnit;
import java.lang.Math; 

class TimeUtil
{
public static void main(String[] args) throws InterruptedException {

    long startTime = System.nanoTime();

    /* ... the code being measured starts ... */

    Math.sqrt(5.625);

    /* ... the code being measured ends ... */

    long endTime = System.nanoTime();

    // get difference of two nanoTime values
    long timeElapsed = endTime - startTime;

    System.out.println("Execution time in nanoseconds  : " + timeElapsed);

    System.out.println("Execution time in milliseconds : " + 
                            timeElapsed / 1000000);
}
}

1 Ответов

Рейтинг:
2

phil.o

Член 14818745 написал:
это дает разное время выполнения при каждом запуске
Вы не найдете детерминированной связи между данной функцией и временем ее выполнения, так как последнее сильно зависит от того, какие другие процессы выполняются в машине в момент выполнения функции. System.nanoTime это уже самая точная форма таймера, которую вы можете получить, но точная не означает постоянная, это просто означает, что она имеет лучшее разрешение по времени, которое вы можете получить для измерения любой активности. Вы можете сделать несколько измерений и вычислить их среднее значение, если вас не устраивает значение, возвращаемое одним из них.