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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 20, средняя оценка - 4.80
AKE
11 / 11 / 0
Регистрация: 09.05.2010
Сообщений: 384
#1

Как замерить длительность выполнения кода? - C++

04.02.2012, 00:28. Просмотров 2866. Ответов 6
Метки нет (Все метки)

Нужно замерить длительность выполнения кода. Как?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.02.2012, 00:28
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как замерить длительность выполнения кода? (C++):

Как измерить время выполнения отдельного участка кода? - C++
Собственно возник вопрос, каким образом измерить время выполнения того или инного учатска кода?(На винде)

Как замерить время работы функции? - C++
функция time не подходит, потому что нужна точность хотя бы до 1 милисекунды.

как с точностью до микросекунд замерить время - C++
Товарищи, подскажите, как с точностью до микросекунд замерить время выполнения некоторой функции?

Как сделать длительность цикла по количеству названий записанных в файл? - C++
Как сделать длительность цикла по количеству названий записанных в файл?

Посчитать длительность в секундах после того как График начинает убывать - C++
Ну вот собственно в чем проблема: По идее программа должна посчитать длительность в секундах после того как График начинает убывать...

Выполнения кода раз в 5 минут - C++
Привет, как сделать так, чтоб код выполнялся раз в 5 минут ? Знаю про Sleep(), но нужно чтоб код работал на Win,MacOS,Linux

6
Serejke_qq
150 / 108 / 9
Регистрация: 06.07.2011
Сообщений: 224
Завершенные тесты: 2
04.02.2012, 00:29 #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
int main()
{
    clock_t start, end;
 
    start = clock();
 
    /* Код, который время выполнения которого нужно измерить */
    /*  */
    
    end = clock();
 
    printf("The above code block was executed in %.4f second(s)\n", ((double) end - start) / ((double) CLOCKS_PER_SEC));
    
    return 0;
}
(копипаста..)
еденицы: секунды + милисекунды.. 0.0000
2
AKE
11 / 11 / 0
Регистрация: 09.05.2010
Сообщений: 384
04.02.2012, 00:33  [ТС] #3
Serejke_qq, а в каких единицах измеряется?
0
xxbesoxx
1000 / 516 / 64
Регистрация: 13.02.2009
Сообщений: 3,004
04.02.2012, 00:38 #4
не понял подробно пожалуйста
0
Serejke_qq
150 / 108 / 9
Регистрация: 06.07.2011
Сообщений: 224
Завершенные тесты: 2
04.02.2012, 00:59 #5
Цитата Сообщение от xxbesoxx Посмотреть сообщение
не понял подробно пожалуйста
м?) выше приведенный код замеряет время выполнения участка кода..
например этот не очень красивый код:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
void sort(int * arr, int n);
void show(int * arr, int n);
 
int main()
{
    clock_t start, end;
 
    int n;
    int * arr;
 
    scanf("%d",&n);                             // Ввод размера массива
 
    arr = (int *)malloc(n * sizeof(int));       // Выделяем память под элементы
    
    srand(time(NULL));
 
    for(int i=0; i<n; i++)                      // Рандомный ввод массива
        arr[i] = rand()%50;
 
    show(arr,n);
 
    printf("\n---------------------\n");
 
    start = clock();
    
    sort(arr,n);                                // Замеряем данный кусок (сортировка)
 
    end = clock();
 
    show(arr,n);  
 
    printf("\nThe above code block was executed in %.4f second(s)\n", ((double) end - start) / ((double) CLOCKS_PER_SEC));
 
    free(arr);    // Чистим память
 
    return 0;
}
 
// ---------------------------------- //
 
void show(int *arr, int n)
{
    for(int i=0; i<n; i++)
        printf("%d ",arr[i]);
}
 
void sort(int * arr, int n)
{
    int temp;
    for(int j=0; j<n; j++)
        for(int i=0; i<n; i++)
        {
            if(arr[i] > arr[i+1])
            {
                temp = arr[i];
                arr[i] = arr[i+1];
                arr[i+1] = temp;
            }
        }
}
Данный код измеряет время выполнения сортировки методом пузырька..
0
-=ЮрА=-
Заблокирован
Автор FAQ
04.02.2012, 17:23 #6
Цитата Сообщение от AKE Посмотреть сообщение
а в каких единицах измеряется?
- clock возвращает число тиков(процессора) чтобы перевести в секунды значение возвращённое clock нужно поделить на CLOCKS_PER_SEC
тут и примерчик есть:
http://www.cplusplus.com/reference/clibrary/ctime/clock/

Добавлено через 43 секунды
Цитата Сообщение от Serejke_qq Посмотреть сообщение
(double) end - start) / ((double) CLOCKS_PER_SEC));
- вот оно деление на CLOCKS_PER_SEC - число тиков процессора в секунду(читай его тактовая частота)
1
diagon
Higher
1930 / 1196 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
04.02.2012, 19:46 #7
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
#include <boost/chrono.hpp>
 
int main()
{
    boost::chrono::system_clock::time_point start = boost::chrono::system_clock::now();
    
    for (int i = 0; i < 1e8; ++i)
        ;
    
    boost::chrono::duration<double> duration = boost::chrono::system_clock::now() - start;
    std::cout << std::fixed << duration << std::endl;
}
2
04.02.2012, 19:46
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.02.2012, 19:46
Привет! Вот еще темы с ответами:

Время выполнения кода ffmpeg - C++
подскажите пожалуйста как будет выглядеть код на измерение времени выполнения работы команды ffmpeg. спасибо.

Время выполнения фрагмента кода - C++
Как измерить время выполнения алгоритма? В темах читал про clock() , сделал, но на выводе всегда 0

Измерить время выполнения кода - C++
В C# такая классная вещь есть - Stopwatch, которая могла время измерять. В C++ же кроме clock() из хэдера ctime (что не очень удобно) я...

Определение времени выполнения кода - C++
Нужно определить сколько выполняется тот или иной цикл, подскажите поз, как это сделать


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

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

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