Почему время выполнения сокращается, когда мы используем функции вместо двух вложенных циклов for - PullRequest
0 голосов
/ 19 апреля 2019

Я заметил, что время выполнения программы, которая имеет два вложенных цикла, больше, чем время выполнения того же кода, который использует функцию вместо внутреннего цикла. Почему это происходит, когда мы выполняем ту же логику в обоих случаях.

Вот пример кода для печати простых чисел в диапазоне, используя функцию:

public class Main
{
    public static void main(String[] args) {

        int n;
        boolean flag;
        Scanner input = new Scanner(System.in);
        n=input.nextInt();
        long st=System.nanoTime();
        for(int i=2;i<n;i++)
        {

            if(isPrime(i))
            {
                System.out.printf("%d ",i);
            }
        }
        long et = System.nanoTime();
        System.out.println();
        System.out.printf("%.4f",(et-st)/1000000000.0);
    }
    public static boolean isPrime(int n)
    {
        for(int i=2;i<=Math.sqrt(n);i++)
        {
            if(n%i==0)
            {
                return false;
            }
        }
        return true;
    }
}

Время, необходимое для запуска этой программы, составляет 0,017 с для ввода 1000. Теперь, если я использую вложенный цикл for в том же коде вместо функции, время выполнения становится почти 1,26 с. Поэтому мой вопрос заключается в том, почему вложение циклов увеличивает время, когда мы выполняем одинаковое количество операций в обоих случаях.

...