首页 > 解决方案 > C 执行时间

问题描述

当我想用 C 中的 time.h 检查我的执行时间时,我遇到了问题。即;我添加了一个计时器,用于计算开始搜索时的执行时间。但是,当我选择多个变量时,计时器正在启动。

#include <stdlib.h>
#include <stdio.h>
#include <time.h>

int main()
{
    int selection = 0;
    printf(" 1. Calculate Execution Time Depends on Variables. \n 2. Calculate Variable Numbers Depends on Time Execution.\n  What You want to do ? \n Selection :  ");
    scanf_s("%d", &selection);

    if (selection==1)
    {   
        int numberselection = 0;
        int number_Elements = 0;

        printf(" Please Select the Number of Elements. \n 1. 500.000    2. 1.000.000    3. 2.000.000    4. 3.000.000    5. 100.000.000 \n Selection : ");
        scanf_s("%d", &numberselection);

        if (numberselection==1)
        {
            number_Elements = 500000;
        }
        if (numberselection == 2)
        {
            number_Elements = 1000000;

        }
        if (numberselection == 3)
        {
            number_Elements = 2000000;

        }
        if (numberselection == 4)
        {
            number_Elements = 3000000;

        }
        if (numberselection == 5)
        {
            number_Elements = 100000000;

        }

        int i = 0;

        int *NumberList = malloc(number_Elements * sizeof(int));

        NumberList[number_Elements];

        srand((unsigned)time(NULL));
        for (i = 0; i < number_Elements; i++)
        {
            double random = rand() % 99999 + 99999999;


            NumberList[i] = random;
        }

        double number_Search;

        printf("\n Please Enter Number To Search : ");
        scanf_s("%d", &number_Search);



        Algorithm(number_Elements, NumberList, number_Search);





    }





    return 0;


}

 int Algorithm(int G_Number_Elements , int G_NumberList[] , int G_Number_Search)
{
    int k = 0;

    double time_taken = 0;


    clock_t t = 0;
    for ( k = 0; k < G_Number_Elements; k++) // NUMBER TO TIME
    {
        if (G_NumberList[k] == G_Number_Search)
        {
            break;
        }
        else
        {
            printf("\n Not Found...");
            break;
        }


    }

    t = clock() - t;
    time_taken = ((double)t) / CLOCKS_PER_SEC;

    printf("\n Exacution Time Depends %d Variables = %f  ms.\n", G_Number_Elements, time_taken);

    return 0;
}

当我得到计时器值时,我等待控制台的时间被添加。我有两种情况;

情景图片

我的问题是,如何消除计时器的等待时间?

标签: ctimetimerexecution

解决方案


我在@Korrat 的帮助下解决了问题!

代码的最后状态:

#include <stdlib.h>
#include <stdio.h>
#include <time.h>

int main()
{

    int selection = 0;
    printf(" 1. Calculate Execution Time Depends on Variables. \n 2. Calculate Variable Numbers Depends on Time Execution.\n \n What You Want to Do ? \n Selection :  ");
    scanf_s("%d", &selection);

    if (selection == 1)
    {
        int numberselection = 0;
        int number_Elements = 0;

        printf(" Please Select the Number of Elements. \n 1. 500.000    2. 1.000.000    3. 2.000.000    4. 3.000.000    5. 100.000.000 \n Selection : ");
        scanf_s("%d", &numberselection);

        if (numberselection == 1)
        {
            number_Elements = 500000;
        }
        if (numberselection == 2)
        {
            number_Elements = 1000000;

        }
        if (numberselection == 3)
        {
            number_Elements = 2000000;

        }
        if (numberselection == 4)
        {
            number_Elements = 3000000;

        }
        if (numberselection == 5)
        {
            number_Elements = 100000000;

        }


        int i = 0;

        int *NumberList = malloc(number_Elements * sizeof(int));

        NumberList[number_Elements];

        srand((unsigned)time(NULL));
        for (i = 0; i < number_Elements; i++)
        {
            double random = rand() % 99999 + 99999999;


            NumberList[i] = random;
        }

        double number_Search;

        printf("\n Please Enter Number To Search : ");
        scanf_s("%d", &number_Search);

        int k = 0;

        clock_t begin = clock();

        for (k = 0; k <= number_Elements; k++) // NUMBER TO TIME
        {
            if (NumberList[k] == number_Search)
            {
                break;
            }
            if (k == number_Elements)
            {
                printf("Your Number Not Found in List ! \n");

            }



        }

        clock_t end = clock();
        float time_spent = (double)(end - begin) / CLOCKS_PER_SEC;

        printf("\n Exacution Time Depends %d Variables = %f  Second !. \n", number_Elements, time_spent);


    }





    return 0;
}

推荐阅读