Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.91/34: Рейтинг темы: голосов - 34, средняя оценка - 4.91
1 / 1 / 0
Регистрация: 22.12.2012
Сообщений: 160
1

Замер времени выполнения программного кода

13.06.2014, 17:29. Показов 6345. Ответов 37
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Как замерить время выполнения этого программного кода (в секундах) и вывести его на экран?
Как провести оптимизацию, чтобы время сократилось (хоть на какую-нибудь долю)?
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
//Вычисление скалярного произведения векторов
#include <cstdlib>
#include <iostream>
 
using namespace std;
 
int main(int argc, char *argv[])
{
    int i;
    double a[3];
    double b[3];
    double res=0;
 
    cout<<"a = ";
    for(i=0;i<3;i++) 
    cin>>a[i];
 
    cout<<"b = ";
    for(i=0;i<3;i++) 
    cin>>b[i];
 
    for(i=0;i<3;i++) 
    res+=a[i]*b[i];
 
    cout<<"a.b = "<<res<<endl;
 
    system("PAUSE");
    return EXIT_SUCCESS;
    return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.06.2014, 17:29
Ответы с готовыми решениями:

Замер времени выполнения функции на ядре
Здравствуйте! Не могу понять почему не считает время выполнения алгоритма на ядре какие бы я...

Замер времени(тактов процессора) выполнения процедуры
Почему то замер дает отрицательный результат (при просмотре в режиме дебаг) и на выходе 0 в итоге....

Замер выполнения отрезка кода в микросекундах
Подскажите, в с++ 11 #include &lt;chrono&gt; есть возможность ставить на паузу код в различной мере, в...

Уменьшение времени выполнения кода
//Помогите ускорить код #include &lt;iostream&gt; #include &lt;vector&gt; #include &lt;algorithm&gt; using...

37
7791 / 6558 / 2984
Регистрация: 14.04.2014
Сообщений: 28,667
14.06.2014, 23:07 21
Author24 — интернет-сервис помощи студентам
Почему? Программа не для Windows?
0
223 / 213 / 80
Регистрация: 26.04.2013
Сообщений: 972
14.06.2014, 23:08 22
Лучший ответ Сообщение было отмечено Аника как решение

Решение

еще можно через следующую конструкцию:
C++
1
2
3
4
5
6
7
8
9
#include <time.h>
...
void main() {
   ...
   double beg = clock()/(float)CLOCKS_PER_SEC;
   // твой код
   double end = clock()/(float)CLOCKS_PER_SEC;
   cout << end - beg << " sec";
}
вот и будет с указанием миллисекунд
1
1 / 1 / 0
Регистрация: 22.12.2012
Сообщений: 160
14.06.2014, 23:12  [ТС] 23
Цитата Сообщение от nmcf Посмотреть сообщение
Программа не для Windows?
Console Application.
0
7791 / 6558 / 2984
Регистрация: 14.04.2014
Сообщений: 28,667
14.06.2014, 23:15 24
Это не мешает использовать функции WinAPI.
Ну вариант с clock() вполне нормальный, в рамках C++.
2
710 / 283 / 16
Регистрация: 31.03.2013
Сообщений: 1,340
14.06.2014, 23:17 25
Я лоллирую, мерять время выполнения нескольких инструкций процессора это конечно сильно ( сделаю предположение, что топикстартер неправильно понимает в чем суть заданной задачи ). Ну, если очень хочется, то пару тактов возможно получится выиграть если развернуть руками цикл ( но это конечно не факт, многие компиляторы и так это умеют ).

C++
1
2
3
res+=a[0]*b[0];
res+=a[1]*b[1];
res+=a[2]*b[2];
1
347 / 292 / 37
Регистрация: 23.03.2012
Сообщений: 838
14.06.2014, 23:24 26
Цитата Сообщение от Voivoid Посмотреть сообщение
Я лоллирую, мерять время выполнения нескольких инструкций процессора это конечно сильно ( сделаю предположение, что топикстартер неправильно понимает в чем суть заданной задачи ). Ну, если очень хочется, то пару тактов возможно получится выиграть если развернуть руками цикл ( но это конечно не факт, многие компиляторы и так это умеют ).

C++
1
2
3
res+=a[0]*b[0];
res+=a[1]*b[1];
res+=a[2]*b[2];
Еще можно сканфы и принтфы использовать
1
1 / 1 / 0
Регистрация: 22.12.2012
Сообщений: 160
14.06.2014, 23:24  [ТС] 27
Цитата Сообщение от Voivoid Посмотреть сообщение
мерять время выполнения нескольких инструкций процессора это конечно сильно
Да нужно только грамотно создать видимость оптимизации. И так понятно что в моей проге нечего оптимизировать. Не я придумала эту чушь, а руководитель курсового.
0
347 / 292 / 37
Регистрация: 23.03.2012
Сообщений: 838
14.06.2014, 23:27 28
Цитата Сообщение от Аника Посмотреть сообщение
Да нужно только грамотно создать видимость оптимизации. И так понятно что в моей проге нечего оптимизировать. Не я придумала эту чушь, а руководитель курсового.
Так напиши нормальный код, который можно будет оптимизировать. Разные алгоритмы сортировки. Был O(n^3), стал O(n log n), например. На больших данных будет заметно.
0
1 / 1 / 0
Регистрация: 22.12.2012
Сообщений: 160
14.06.2014, 23:30  [ТС] 29
Цитата Сообщение от Nekto Посмотреть сообщение
Так напиши нормальный код, который можно будет оптимизировать. Разные алгоритмы сортировки. Был O(n^3), стал O(n log n), например. На больших данных будет заметно.
Что я могу придумать, если нам уже такой код дали. Что мне его усложнять специально что ли?
0
710 / 283 / 16
Регистрация: 31.03.2013
Сообщений: 1,340
14.06.2014, 23:31 30
Цитата Сообщение от Аника Посмотреть сообщение
Не я придумала эту чушь, а руководитель курсового.
Ну конечно же, пояснить преподу по хардкору за всю *****? Нет, лучше будем с умным видом делать фигню. Вся суть современного образования
0
7791 / 6558 / 2984
Регистрация: 14.04.2014
Сообщений: 28,667
14.06.2014, 23:31 31
Это такая курсовая с одним умножением и замером времени?
0
223 / 213 / 80
Регистрация: 26.04.2013
Сообщений: 972
14.06.2014, 23:32 32

Не по теме:

Цитата Сообщение от Nekto Посмотреть сообщение
Разные алгоритмы сортировки
в приведенном коде они отсутствуют



Добавлено через 50 секунд

Не по теме:

Цитата Сообщение от nmcf Посмотреть сообщение
Это такая курсовая с одним умножением и замером времени?
я ее бы год делал...

0
1 / 1 / 0
Регистрация: 22.12.2012
Сообщений: 160
14.06.2014, 23:34  [ТС] 33
Цитата Сообщение от nmcf Посмотреть сообщение
Это такая курсовая с одним умножением и замером времени?
Сама удивляюсь.
0
7791 / 6558 / 2984
Регистрация: 14.04.2014
Сообщений: 28,667
14.06.2014, 23:35 34
Ну а что? Я привык, что курсовая - сложная программа.
0
1 / 1 / 0
Регистрация: 22.12.2012
Сообщений: 160
14.06.2014, 23:36  [ТС] 35
Цитата Сообщение от nmcf Посмотреть сообщение
Я привык, что курсовая - сложная программа.
Я тоже, но с учителем спорить не стану.
0
221 / 166 / 47
Регистрация: 17.07.2012
Сообщений: 587
14.06.2014, 23:47 36
после ввода пишешь
C++
1
double start = clock();
после вывода пишешь
C++
1
2
double res = (clock() - start) / CLOCKS_PER_SEC;
printf("%.5lf\n", double(res));
а если не секрет, то как называется курсовая?)
0
377 / 228 / 79
Регистрация: 24.11.2009
Сообщений: 695
15.06.2014, 00:45 37
есть подозрение, что если компилировать с -g опцией, то компилятор не будет выполнять оптимизации разыменовывания и префиксного декремента. Есть еще подозрение, что возможно, играть можно за счет использования/освобождения процессорного кеша и регистров. Но это точно не с++ уровень.
зы: а еще есть std::chrono
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
using namespace std::chrono;
    auto t1 = steady_clock::now();
    some_operations();
    auto t2 = steady_clock::now();
    duration<double> time_span = duration_cast<duration<double>>(t2 - t1);
std::cout<<time_span.count()   <<" секунд "<<std::endl;
0
1 / 1 / 0
Регистрация: 22.12.2012
Сообщений: 160
16.06.2014, 00:09  [ТС] 38
SlavaSSU, "Вычисление скалярного произведения двух векторов".
0
16.06.2014, 00:09
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.06.2014, 00:09
Помогаю со студенческими работами здесь

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

Сравнение времени выполнения кода на C, C++ и C#: как доказать какой язык производительнее?
Всем привет. Возникла проблема. Надо произвести сравнение производительности данных языков в...

Замер времени
Работает через раз. #include &lt;conio.h&gt; #include &lt;iostream&gt; #include &lt;time.h&gt; #include...

Осуществить замер времени for и while
Здравствуйте! Условие задачи: Написать программу выводящее на экран любое текстовое сообщение...


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

Или воспользуйтесь поиском по форуму:
38
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru