Форум программистов, компьютерный форум CyberForum.ru

Измерение времени работы кода - C++

Восстановить пароль Регистрация
 
Yamko
11 / 11 / 2
Регистрация: 10.03.2013
Сообщений: 104
06.09.2014, 12:47     Измерение времени работы кода #1
Нужно подсчитать время выполнения кода. данный отрывок сортирует массив. если размер массива маленький, то выводит 0. При большом размере выводит значение. Собственно не пойму как решить проблему при маленьких размерах массива.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
    clock_t begin, end;
    double time_spent;
    begin = clock();
    int tmp;
    for (int i = 1; i < aSize; i++)
    {
        tmp=arr[i];
        for (int j=i-1;j>=0;j--)
        {
            if(arr[j]>tmp)
            {
                arr[j+1]=arr[j];
                arr[j]=tmp;
            }
            else break;
        }
    }
    end = clock();
    time_spent = (double)(end - begin) / CLOCKS_PER_SEC;
 
    cout << "Work time:" << time_spent<<endl;;
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
06.09.2014, 12:52     Измерение времени работы кода #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Использовать более точные средства.
Под винду например: http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx
Из C++11 я думаю можно функции std::chrono использовать.
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4237 / 2770 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
06.09.2014, 13:08     Измерение времени работы кода #3
Цитата Сообщение от Yamko Посмотреть сообщение
если размер массива маленький, то выводит 0
Можно для маленьких массивов запускать сортировку N раз, полученное время делить на N.
AlexVRud
414 / 143 / 36
Регистрация: 04.07.2014
Сообщений: 415
06.09.2014, 13:23     Измерение времени работы кода #4
На C++11:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
#include <chrono>
 
int main() {
  auto t1 = std::chrono::high_resolution_clock::now();
  int s=0;
  for (int i=0; i<10; ++i)
    s+=i;
  auto t2 = std::chrono::high_resolution_clock::now();
  long dt = ((std::chrono::nanoseconds)(t2-t1)).count();
  std::cout << dt << std::endl;
  return 0;
}
-=ЮрА=-
Заблокирован
Автор FAQ
06.09.2014, 13:25     Измерение времени работы кода #5
http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
06.09.2014, 18:49     Измерение времени работы кода #6
AlexVRud, у вас этот код что выводит?
NeonLost
Пес войны
 Аватар для NeonLost
74 / 85 / 3
Регистрация: 23.02.2012
Сообщений: 653
06.09.2014, 19:03     Измерение времени работы кода #7
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include<iostream>
#include<windows.h>
 
using namespace std;
 
int main()
{
    int start=GetTickCount();
    for(int i=0;i<1000000;i++)
    {
        for(int j=0;j<1024;j++){}
    }
    int end=GetTickCount();
    cout<<end-start<<endl;
    getchar();
    return 0;
}
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
06.09.2014, 19:06     Измерение времени работы кода #8
NeonLost, если такой цикл замерить, то что выведет?
C++
1
2
3
  int s=0;
  for (int i=0; i<10; ++i)
    s+=i;
Renji
1535 / 983 / 240
Регистрация: 05.06.2014
Сообщений: 2,963
06.09.2014, 19:28     Измерение времени работы кода #9
Нужно подсчитать время выполнения кода. данный отрывок сортирует массив.
rdtsc - меряет с точностью до такта. Правда, надо уточнить как до него достучаться в конкретном компиляторе.
AlexVRud
414 / 143 / 36
Регистрация: 04.07.2014
Сообщений: 415
06.09.2014, 20:42     Измерение времени работы кода #10
Цитата Сообщение от alsav22 Посмотреть сообщение
у вас этот код что выводит?
от 200 до 800
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
06.09.2014, 22:43     Измерение времени работы кода #11
Цитата Сообщение от AlexVRud Посмотреть сообщение
от 200 до 800
Странно... У меня - 0.
Миниатюры
Измерение времени работы кода  
Mak20
2 / 2 / 0
Регистрация: 06.09.2014
Сообщений: 79
07.09.2014, 08:24     Измерение времени работы кода #12
alsav22,

Не по теме:

какой версией mvs пользуетесь ? у меня без

C++
1
system ("pause");
после открытия консоли тут же консоль закрывается.

alsav22
07.09.2014, 14:18
  #13

Не по теме:

Цитата Сообщение от Mak20 Посмотреть сообщение
какой версией mvs пользуетесь ?
13-й.
Цитата Сообщение от Mak20 Посмотреть сообщение
после открытия консоли тут же закрывается.
Ctrl + F5.

Mak20
2 / 2 / 0
Регистрация: 06.09.2014
Сообщений: 79
08.09.2014, 06:09     Измерение времени работы кода #14
alsav22,
Цитата Сообщение от alsav22 Посмотреть сообщение
Ctrl + F5

Не по теме:

я в 10-той, ctrl + f5 не помогает, ну и ладно)

alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
08.09.2014, 06:34     Измерение времени работы кода #15
Цитата Сообщение от Mak20 Посмотреть сообщение
я в 10-той, ctrl + f5 не помогает
Я и в 10-й. Чтобы работало, в свойствах проекта - Компоновщик - Система - Подсистема, нужно выбрать: Консоль.
AlexVRud
414 / 143 / 36
Регистрация: 04.07.2014
Сообщений: 415
08.09.2014, 09:26     Измерение времени работы кода #16
Цитата Сообщение от alsav22 Посмотреть сообщение
Странно... У меня - 0.
только сейчас добрался на работе до виндовой машины. И точно, тут пока нет столь быстрых таймеров.
Так что ждемс, когда появится. С другой стороны, скорость такого код бессмысленно замерять, так как время его исполнения может отличаться в разы при нескольких подряд запусках.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
08.09.2014, 17:04     Измерение времени работы кода #17
Цитата Сообщение от AlexVRud Посмотреть сообщение
только сейчас добрался на работе до виндовой машины.
А до этого на чём пробовали?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.09.2014, 19:37     Измерение времени работы кода
Еще ссылки по теме:

C++ Измерение времени
измерение скорости работы блока программы C++
C++ Измерение времени переключения контекста

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
AlexVRud
414 / 143 / 36
Регистрация: 04.07.2014
Сообщений: 415
08.09.2014, 19:37     Измерение времени работы кода #18
Цитата Сообщение от alsav22 Посмотреть сообщение
А до этого на чём пробовали?
Ubuntu 14.04
Yandex
Объявления
08.09.2014, 19:37     Измерение времени работы кода
Ответ Создать тему
Опции темы

Текущее время: 01:38. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru