Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

06.09.2014, 12:47. Просмотров 1132. Ответов 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;;
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.09.2014, 12:47
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Измерение времени работы кода (C++):

Измерение времени - C++
DWORD dwStart, dwFinish, dwDif; dwStart=GetTickCount(); MatrixSum(SizeOfMatrix,Matrix,Matrix2,MatrixRes); dwFinish=GetTickCount(); ...

Измерение времени - C++
while (Message.message!=WM_QUIT) { if(PeekMessage(&amp;Message, NULL, 0, 0, PM_REMOVE)) { TranslateMessage(&amp;Message); ...

Измерение времени компиляции - C++
как узнать время компиляции исходного текста и размер памяти, которую програма использует

Измерение времени выполнения - C++
Подскажите пожалуйста как измерить время выполнения чего-то с наносекундной точностью. std::chrono::high_resolution_clock::time_point...

Измерение времени переключения контекста - C++
Кто может подсказать, какими способами это возможно реализовать в Windows? Есть ли способы, не прибегая к ассемблеру? Есть мысли на...

Измерение времени выполнения потока - C++
#include &quot;stdafx.h&quot; #include &lt;clocale&gt; #include &lt;math.h&gt; #include &lt;windows.h&gt; int l, m, n, geo, sum; DWORD WINAPI proizv...

17
Tulosba
:)
Эксперт С++
4397 / 3233 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
06.09.2014, 12:52 #2
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Использовать более точные средства.
Под винду например: http://msdn.microsoft.com/en-us/library/ms644904(v=vs.85).aspx
Из C++11 я думаю можно функции std::chrono использовать.
1
Kastaneda
Jesus loves me
Эксперт С++
4697 / 2901 / 238
Регистрация: 12.12.2009
Сообщений: 7,385
Записей в блоге: 2
Завершенные тесты: 1
06.09.2014, 13:08 #3
Цитата Сообщение от Yamko Посмотреть сообщение
если размер массива маленький, то выводит 0
Можно для маленьких массивов запускать сортировку N раз, полученное время делить на N.
0
AlexVRud
461 / 172 / 45
Регистрация: 04.07.2014
Сообщений: 479
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;
}
0
-=ЮрА=-
Заблокирован
Автор FAQ
06.09.2014, 13:25 #5
http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx
0
alsav22
5428 / 4823 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
06.09.2014, 18:49 #6
AlexVRud, у вас этот код что выводит?
0
NeonLost
Пес войны
75 / 86 / 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;
}
0
alsav22
5428 / 4823 / 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;
0
Renji
2014 / 1382 / 312
Регистрация: 05.06.2014
Сообщений: 3,946
06.09.2014, 19:28 #9
Нужно подсчитать время выполнения кода. данный отрывок сортирует массив.
rdtsc - меряет с точностью до такта. Правда, надо уточнить как до него достучаться в конкретном компиляторе.
0
AlexVRud
461 / 172 / 45
Регистрация: 04.07.2014
Сообщений: 479
06.09.2014, 20:42 #10
Цитата Сообщение от alsav22 Посмотреть сообщение
у вас этот код что выводит?
от 200 до 800
0
alsav22
5428 / 4823 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
06.09.2014, 22:43 #11
Цитата Сообщение от AlexVRud Посмотреть сообщение
от 200 до 800
Странно... У меня - 0.
0
Миниатюры
Измерение времени работы кода  
Mak20
2 / 2 / 0
Регистрация: 06.09.2014
Сообщений: 79
07.09.2014, 08:24 #12
alsav22,

Не по теме:

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

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

0
alsav22
07.09.2014, 14:18
  #13

Не по теме:

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

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

Не по теме:

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

0
alsav22
5428 / 4823 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
08.09.2014, 06:34 #15
Цитата Сообщение от Mak20 Посмотреть сообщение
я в 10-той, ctrl + f5 не помогает
Я и в 10-й. Чтобы работало, в свойствах проекта - Компоновщик - Система - Подсистема, нужно выбрать: Консоль.
0
08.09.2014, 06:34
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.09.2014, 06:34
Привет! Вот еще темы с ответами:

Измерение времени исполнения алгоритма через Clock() периодически равно 0 - C++
Здравствуйте! Я в отчаянии :( Была программа на C# и появилась необходимость перевести ее на С++. Но как переписать ...

Бинарная сорировка и измерение работы функции - C++
Запрограммировать и протестировать следующие алгоритмы: Алгоритм бинарных вставок и алгоритм Шелла; исходники нашел.только не пойму...

Измерение скорости работы блока программы - C++
Как можно протестировать на скорость работы отдельный блок программы? Пример: замер скорости class_one.function1(). int main() {...

Замер времени работы участка кода - C++
Сразу скажу что меня не интересуют стандартные замеры времени роботы участка кода, так как они показывают время роботы данного участка кода...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.