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

Измерение скорости работы блока программы - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.93
gotostereo
0 / 0 / 0
Регистрация: 13.09.2013
Сообщений: 38
23.10.2013, 11:10     Измерение скорости работы блока программы #1
Как можно протестировать на скорость работы отдельный блок программы? Пример: замер скорости class_one.function1().

C++
1
2
3
4
5
6
7
8
int main() 
{
Class_one class_one;
//от
class_one.function1();
//до
 
};
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Banddk
37 / 37 / 1
Регистрация: 08.12.2012
Сообщений: 157
Записей в блоге: 1
23.10.2013, 11:16     Измерение скорости работы блока программы #2
C++
1
2
3
4
5
#include "time.h"
clock_t t=clock();
class_one.function1();
t=clock-t;
t=float(t)/CLOCKS_PER_SEC;//t время в секундах )
Rivory
146 / 112 / 2
Регистрация: 15.01.2013
Сообщений: 266
23.10.2013, 11:17     Измерение скорости работы блока программы #3
gotostereo,
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <time.h>
#include <iostream>
 
int _tmain(int argc, char** argv)
{
    time_t temp = clock();
    for(int i = 0; i < 5000; i++)
    {
        std::cout << "I love cookies!" << std::endl;
    }
    std::cout << "Time spent: " << (clock()-temp)/CLOCKS_PER_SEC << " seconds." << std::endl;
    system("pause");
    return 0;
}
CheshireCat
Эксперт С++
2907 / 1235 / 78
Регистрация: 27.05.2008
Сообщений: 3,307
23.10.2013, 11:21     Измерение скорости работы блока программы #4
C++
1
2
3
4
5
6
7
8
9
10
#include <ctime>
 
//от
time_t start = clock();
    class_one.function1();
//до
time_t finish = clock();
 
double duration = (double)(finish - start) / CLOCKS_PER_SEC;
printf( "%2.1f seconds\n", duration );
gotostereo
0 / 0 / 0
Регистрация: 13.09.2013
Сообщений: 38
23.10.2013, 11:34  [ТС]     Измерение скорости работы блока программы #5
ребята спасибо, но мне нужен замер в более мелких значениях чем секунда или миллисекунда, 16 или 32 знака после запятой. Что бы можно было тестировать на скорость даже самые маленькие блоки программы, подбирая оптимальные алгоритмы.
Rivory
146 / 112 / 2
Регистрация: 15.01.2013
Сообщений: 266
23.10.2013, 11:36     Измерение скорости работы блока программы #6
Ну там, как-бы, если на CLOCKS_PER_SEC не делить, то счет идет в тиках процессора.

А более точно? Ну даже не знаю...

Помню, когда в институте проходили QNX, там были таймеры с точностью до десятка наносекунд, но не знаю, можно ли найти что-то подобное в обычной ОС.
CheshireCat
Эксперт С++
2907 / 1235 / 78
Регистрация: 27.05.2008
Сообщений: 3,307
23.10.2013, 11:40     Измерение скорости работы блока программы #7
Цитата Сообщение от gotostereo Посмотреть сообщение
ребята спасибо, но мне нужен замер в более мелких значениях чем секунда или миллисекунда, 16 или 32 знака после запятой. Что бы можно было тестировать на скорость даже самые маленькие блоки программы, подбирая оптимальные алгоритмы.
Тогда твой выбор - специальная программа-профилировщик.
gotostereo
0 / 0 / 0
Регистрация: 13.09.2013
Сообщений: 38
23.10.2013, 11:43  [ТС]     Измерение скорости работы блока программы #8
Rivory пояснил что если не делить на CLOCKS_PER_SEC, то в принципе очень даже хорошо.

#include "time.h"
clock_t t=clock();
class_one.function1();
t=clock-t;
t=float(t);//t время

выдаёт ошибку в строке t=clock-t;
error: invalid conversion from 'clock_t (__attribute__((__cdecl__)) *)() {aka long int (__attribute__((__cdecl__)) *)()}' to 'clock_t {aka long int}' [-fpermissive]
Rivory
146 / 112 / 2
Регистрация: 15.01.2013
Сообщений: 266
23.10.2013, 11:45     Измерение скорости работы блока программы #9
У меня, лично, с time_t компилируется. Попробуйте так.

Потом перевести во float можно просто так
C++
1
float value = clock()-temp;
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.10.2013, 11:53     Измерение скорости работы блока программы
Еще ссылки по теме:

Время работы программы C++
Измерение времени работы кода C++
Сравнение скорости работы приложения vs 2010 и vs 2012 C++

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

Или воспользуйтесь поиском по форуму:
gotostereo
0 / 0 / 0
Регистрация: 13.09.2013
Сообщений: 38
23.10.2013, 11:53  [ТС]     Измерение скорости работы блока программы #10
C++
1
2
3
4
time_t temp = clock();
class_one.function1();
temp = clock()-temp;
cout << temp;
работает, результат в целых числах.
Yandex
Объявления
23.10.2013, 11:53     Измерение скорости работы блока программы
Ответ Создать тему
Опции темы

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