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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.93
gotostereo
0 / 0 / 0
Регистрация: 13.09.2013
Сообщений: 38
#1

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

23.10.2013, 11:10. Просмотров 2294. Ответов 9
Метки нет (Все метки)

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

C++
1
2
3
4
5
6
7
8
int main() 
{
Class_one class_one;
//от
class_one.function1();
//до
 
};
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.10.2013, 11:10
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Измерение скорости работы блока программы (C++):

Измерение скорости копирование данных в оперативной памяти! - C++
Там вроде надо два массива содавать я пробовал ничего не вышло((

Измерение времени работы кода - C++
Нужно подсчитать время выполнения кода. данный отрывок сортирует массив. если размер массива маленький, то выводит 0. При большом размере...

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

Проверка скорости работы своего list - C++
Можете написать какую нибудь проверку скорости работы list (без algorithm). Создал свой вариант, вроде работает и быстро, и не могли бы...

Сравнение скорости работы приложения vs 2010 и vs 2012 - C++
При умножении двух динамических матриц размера 1024х1024 чисел типа float, на CPU компилируя Visual Studio 2008 перемножение выполняется за...

Разница в скорости выполнение программы C++ или C# - C++
И так здравствуйте,хотелось бы узнать почему в данном случае(то есть использование stl) c++ медленнее c# ,запускаю из релиза ...

9
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 время в секундах )
1
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;
}
1
CheshireCat
Эксперт С++
2895 / 1244 / 78
Регистрация: 27.05.2008
Сообщений: 3,398
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 );
1
gotostereo
0 / 0 / 0
Регистрация: 13.09.2013
Сообщений: 38
23.10.2013, 11:34  [ТС] #5
ребята спасибо, но мне нужен замер в более мелких значениях чем секунда или миллисекунда, 16 или 32 знака после запятой. Что бы можно было тестировать на скорость даже самые маленькие блоки программы, подбирая оптимальные алгоритмы.
0
Rivory
146 / 112 / 2
Регистрация: 15.01.2013
Сообщений: 266
23.10.2013, 11:36 #6
Ну там, как-бы, если на CLOCKS_PER_SEC не делить, то счет идет в тиках процессора.

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

Помню, когда в институте проходили QNX, там были таймеры с точностью до десятка наносекунд, но не знаю, можно ли найти что-то подобное в обычной ОС.
1
CheshireCat
Эксперт С++
2895 / 1244 / 78
Регистрация: 27.05.2008
Сообщений: 3,398
23.10.2013, 11:40 #7
Цитата Сообщение от gotostereo Посмотреть сообщение
ребята спасибо, но мне нужен замер в более мелких значениях чем секунда или миллисекунда, 16 или 32 знака после запятой. Что бы можно было тестировать на скорость даже самые маленькие блоки программы, подбирая оптимальные алгоритмы.
Тогда твой выбор - специальная программа-профилировщик.
0
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]
0
Rivory
146 / 112 / 2
Регистрация: 15.01.2013
Сообщений: 266
23.10.2013, 11:45 #9
У меня, лично, с time_t компилируется. Попробуйте так.

Потом перевести во float можно просто так
C++
1
float value = clock()-temp;
1
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;
работает, результат в целых числах.
0
23.10.2013, 11:53
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.10.2013, 11:53
Привет! Вот еще темы с ответами:

Скрин работы программы - C++
Завтра сдавать работу, а мой visual тупит. Нужен только скрин) Зарание спасибо!)) #include &quot;stdafx.h&quot; #include&lt;math.h&gt; ...

Убыстрение работы программы - C++
Написал программу по поиску максимальной подстроки из заданных строк. Работает правильно, но нужно оптимизировать по времени выполнения(Не...

Скорость работы программы - C++
Здравствуйте, не подскажите примерами, как можно посчитать скорость работы части программы, например: Sum= a-b; Узнать за сколько...

Время работы программы - C++
Здорова! Бывает в некоторых задачах нужно сравнить производительность программ, то есть время работы той или иной программы. Как их...


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

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

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