Рассчитать время выполнения функции в C ++ (Visual Studio 2010)

0

Я кодирую в c++ и работаю над Visual Studio 2010. Я пытаюсь вычислить время выполнения функции для выполнения, вот мой код

        double sum=0;   
        clock_t start_s=clock();
        for(int j=1;j<size;j++)
        {
            int key=data[j];
            int i=j-1;
            while(i>=0 && data[i]>key)
            {
                data[i+1]=data[i];
                i=i-1;
            }
            data[i+1]=key;
        }
        clock_t stop_s=clock();
        sum=((double)(stop_s - start_s)/CLOCKS_PER_SEC);

но проблема в том, что время вычисляется до 0. Как я могу измерить время в еще меньшей единице

  • 0
    Заяц ты ответь я думаю stackoverflow.com/questions/1861294/…
  • 0
    visual studio выдает ошибку "int64" и "uint64"
Показать ещё 1 комментарий
Теги:
visual-studio
visual-studio-2010

3 ответа

1

Одним из возможных решений является запуск этого сегмента кода, например, 100 000 раз, а затем вычисление среднего времени

 double sum=0;   
    clock_t start_s=clock();

 int x = 0;

 while (x < 100000)
 {
    for(int j=1;j<size;j++)
    {
        int key=data[j];
        int i=j-1;
        while(i>=0 && data[i]>key)
        {
            data[i+1]=data[i];
            i=i-1;
        }
        data[i+1]=key;
    }      
    x++;
  }
    clock_t stop_s=clock();
    sum=((double)(stop_s - start_s)/CLOCKS_PER_SEC)/100000; //average time
1

clock() даст вам разрешение 1 мс. Если вы хотите более высокое разрешение, используйте QueryPerformanceCounter функцию, и QueryPerformanceFrequency

  • 0
    Или хакерский способ: запустить свой код миллион раз: D
0

Похоже, clock() возвращает миллисекундные тики в Windows.

Чтобы получить лучшую детализацию, вы должны использовать счетчик производительности с высоким разрешением Windows. Вызовите QueryPerformanceFrequency и QueryPerformanceCounter.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню