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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Yamko
11 / 11 / 2
Регистрация: 10.03.2013
Сообщений: 104
#1

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

06.09.2014, 12:47. Просмотров 975. Ответов 17
Метки нет (Все метки)

Нужно подсчитать время выполнения кода. данный отрывок сортирует массив. если размер массива маленький, то выводит 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
:)
Эксперт С++
4384 / 3227 / 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
4253 / 2785 / 219
Регистрация: 12.12.2009
Сообщений: 7,109
Записей в блоге: 1
Завершенные тесты: 1
06.09.2014, 13:08     Измерение времени работы кода #3
Цитата Сообщение от Yamko Посмотреть сообщение
если размер массива маленький, то выводит 0
Можно для маленьких массивов запускать сортировку N раз, полученное время делить на N.
AlexVRud
440 / 150 / 38
Регистрация: 04.07.2014
Сообщений: 424
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
5411 / 4807 / 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
5411 / 4807 / 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
1709 / 1142 / 270
Регистрация: 05.06.2014
Сообщений: 3,307
06.09.2014, 19:28     Измерение времени работы кода #9
Нужно подсчитать время выполнения кода. данный отрывок сортирует массив.
rdtsc - меряет с точностью до такта. Правда, надо уточнить как до него достучаться в конкретном компиляторе.
AlexVRud
440 / 150 / 38
Регистрация: 04.07.2014
Сообщений: 424
06.09.2014, 20:42     Измерение времени работы кода #10
Цитата Сообщение от alsav22 Посмотреть сообщение
у вас этот код что выводит?
от 200 до 800
alsav22
5411 / 4807 / 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
5411 / 4807 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
08.09.2014, 06:34     Измерение времени работы кода #15
Цитата Сообщение от Mak20 Посмотреть сообщение
я в 10-той, ctrl + f5 не помогает
Я и в 10-й. Чтобы работало, в свойствах проекта - Компоновщик - Система - Подсистема, нужно выбрать: Консоль.
AlexVRud
440 / 150 / 38
Регистрация: 04.07.2014
Сообщений: 424
08.09.2014, 09:26     Измерение времени работы кода #16
Цитата Сообщение от alsav22 Посмотреть сообщение
Странно... У меня - 0.
только сейчас добрался на работе до виндовой машины. И точно, тут пока нет столь быстрых таймеров.
Так что ждемс, когда появится. С другой стороны, скорость такого код бессмысленно замерять, так как время его исполнения может отличаться в разы при нескольких подряд запусках.
alsav22
5411 / 4807 / 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++ Замер времени выполнения программного кода
C++ Определение времени выполнения кода
Измерение времени выполнения C++

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

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

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