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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.60
Tige
0 / 0 / 0
Регистрация: 30.11.2012
Сообщений: 29
#1

Время выполнения программы равно нулю - C++

01.12.2012, 00:15. Просмотров 1226. Ответов 12
Метки нет (Все метки)

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;
    float i;
 
    start = clock();
 
   for(i=1;i<60000;i++);
    
    end = clock();
 
    printf("Time %.29f \n", ((double) end - start));
    getchar();
    return 0;
}
Программа должна выводить время выполнения цикла for(i=1;i<60000;i++). Почему выводит 0? И как это исправить?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.12.2012, 00:15     Время выполнения программы равно нулю
Посмотрите здесь:

Определить, равно ли число (двумерного массива) нулю. Если равно, то вместо нуля записываем указанный символ - C++
Вот что нужно написать кодом: сравнить, равно ли число (двумерного массива) нулю. Если равно, то вместо нуля записываем, например,...

Чему будет равно a после выполнения следующего фрагмента программы в строке // 1 ? - C++
Чему будет равно a после выполнения следующего фрагмента программы в строке // 1 ? int a = 0; for (;;) { if (a) break; a--; ...

Чему будет равно значение переменной z после выполнения следующего фрагмента программы? - C++
Пожалуйста, очень прошу помогите с тестами(( 1)Чему будет равно значение переменной z после выполнения следующего фрагмента программы при...

Чему будет равно значение переменной s после выполнения следующего фрагмента программы - C++
Очень прошу помогите решить!!!! 1) Чему будет равно значение переменной s после выполнения следующего фрагмента программы при...

Определить время выполнения программы - C++
Как узнать сколько выполняется программа на С++.Т.е. что бы со всеми результатами,скажем в конце, выводилось еще и ее время выполнения,...

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

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

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
NoMasters
Псевдослучайный
1744 / 1087 / 71
Регистрация: 13.09.2011
Сообщений: 3,117
01.12.2012, 00:23     Время выполнения программы равно нулю #2
Есть два варианта: либо компилятор просто выкинул пустой цикл при оптимизации, либо цикл выполняется быстрее, чем происходит тик системного таймера.
Tige
0 / 0 / 0
Регистрация: 30.11.2012
Сообщений: 29
01.12.2012, 00:25  [ТС]     Время выполнения программы равно нулю #3
Да,цикл выполняется быстрее, например при 60000000 ответ уже не равен 0. Но мне нужно именно 60000.
__Александр__
7 / 10 / 0
Регистрация: 17.09.2012
Сообщений: 188
Записей в блоге: 2
01.12.2012, 00:32     Время выполнения программы равно нулю #4
C++
1
2
3
4
5
6
7
8
9
10
11
#include <ctime>
#include <cstdio>
 
int main() {
    int i;
  double start = clock();
  // Insert your code here
  for(i=1;i<60000000;i++);
  printf("%.4lf\n", (clock() - start) / CLOCKS_PER_SEC);
  return 0;
}
значение i в цикле "for(i=1;i<60000;i++);" слишком мало.
Tige
0 / 0 / 0
Регистрация: 30.11.2012
Сообщений: 29
01.12.2012, 00:36  [ТС]     Время выполнения программы равно нулю #5
Цитата Сообщение от __Александр__ Посмотреть сообщение
значение i в цикле "for(i=1;i<60000;i++);" слишком мало.
Я понимаю. А это никак нельзя исправить (чтобы он смог вычислить это)? Может есть другая функция?
booker
23 / 23 / 2
Регистрация: 21.11.2012
Сообщений: 106
01.12.2012, 00:40     Время выполнения программы равно нулю #6
Цитата Сообщение от Tige Посмотреть сообщение
Да,цикл выполняется быстрее, например при 60000000 ответ уже не равен 0. Но мне нужно именно 60000.
даже на 286ом ответ будет чуть менее чем ноль)))
Tige
0 / 0 / 0
Регистрация: 30.11.2012
Сообщений: 29
01.12.2012, 00:48  [ТС]     Время выполнения программы равно нулю #7
Может есть другая функция вычисления времени?
I.M.
564 / 547 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
01.12.2012, 00:55     Время выполнения программы равно нулю #8
нет. точнее, есть, но и она выдаст 0.
найдите примерное время делением
prazuber
108 / 108 / 3
Регистрация: 29.04.2010
Сообщений: 240
01.12.2012, 01:02     Время выполнения программы равно нулю #9
На Linux есть очень удобная функция gettimeofday, с помощью которой можно легко получить время выполнения в микросекундах.

В системах Windows с этим сложнее. Самое лучшее, что я смог найти, это QueryPerformanceCounter\QueryPerformanceFrequency. Пример использования привести не смогу, но про них можно почитать тут:

Micro Second resolution timestamps on windows
Game Timing and Multicore Processors
Tige
0 / 0 / 0
Регистрация: 30.11.2012
Сообщений: 29
01.12.2012, 01:08  [ТС]     Время выполнения программы равно нулю #10
Цитата Сообщение от I.M. Посмотреть сообщение
найдите примерное время делением
А можете на примере показать?
I.M.
564 / 547 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
01.12.2012, 01:12     Время выполнения программы равно нулю #11
допустим, надо найти время для 100 итераций, но у нас постоянно 0
запускаем 10000 итераций и получаем не 0. допустим 234мс
делим на 100 и получаем 2.34мс
чтобы уменьшить погрешность, надо програть несколько тестов и найти среднее арифметическое
Tige
0 / 0 / 0
Регистрация: 30.11.2012
Сообщений: 29
01.12.2012, 13:42  [ТС]     Время выполнения программы равно нулю #12
Цитата Сообщение от I.M. Посмотреть сообщение
допустим, надо найти время для 100 итераций, но у нас постоянно 0
запускаем 10000 итераций и получаем не 0. допустим 234мс
делим на 100 и получаем 2.34мс
чтобы уменьшить погрешность, надо програть несколько тестов и найти среднее арифметическое
А если у меня программа с пузырьковой сортировкой для 20 чисел?
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
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
int main()
{
    int mas[20], masv[20],i,n=20,t,z=0;
    clock_t start; clock_t end;
 
    srand(time(NULL));
    printf("Massiv: ");
    for (i=0;i<n;i++) {
        mas[i]=rand() %99;   //создаем массив из случайных чисел
        masv[i]=mas[i];
        printf("%d ",mas[i]);
    }
    //пузырьковая(возр)
    printf("\n\nPuzirkovaya sort:\n");
    start = clock();
    for (t=1;t<n;t++){
        for(i=n-1;i>0;i--){
            if (masv[i]<masv[i-1]){
                z=masv[i-1];
                masv[i-1]=masv[i];
                masv[i]=z;
            }
        }
    }
    end = clock();
    printf("start %lf ms\n", ((double) end-start)); //время(но оно равно 0)
    for (i=0;i<n;i++) {printf("%d ",masv[i]);} //вывод массива
    getchar();
    return 0;
}
Подскажите пожалуйста, как быть в этом случае?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.12.2012, 14:21     Время выполнения программы равно нулю
Еще ссылки по теме:

Уменьшить время выполнения программы - C++
#include &lt;iostream&gt; using namespace std; int main() { int n; cin &gt;&gt; n; char mas; int k;

Посчитать время выполнения программы - C++
В среде visual studio 2012 можно? или в коде написать что нужно, подскажите

Определить время выполнения программы - C++
Господа как засеч време выполнение программы? Заранее всем огромное спасибо!!!

Ошибка во время выполнения программы. - C++
Здравствуйте, помогите, пожалуйста, разобраться. Пытаюсь сдать задачу, из 27 тестов в трех - ошибка во время выполнения программы. ...

Использование ОСХ во время выполнения программы - C++
Может быть вопрос покажется не совсем по теме форума. Не сможет ли кто-нибудь разъяснить начинающему. Создаем какой-либо ОСХ Затем...


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

Или воспользуйтесь поиском по форуму:
Kuzia domovenok
1889 / 1744 / 117
Регистрация: 25.03.2012
Сообщений: 5,922
Записей в блоге: 1
01.12.2012, 14:21     Время выполнения программы равно нулю #13
а тебе нужно время сортировки именно случайного массива?
Есть идея вложить сортировку пузырьком внутрь ещё одного большого цикла и 100 раз сортировать туда-сюда, меняя каждый раз направление (по возрастанию/по убыванию)
А потом делим на 100. (я надеюсь ясно изложил мысль)

Это не совсем честный тест, т.к. обратный порядок является самым худшим случаем для пузырька и может занижать среднюю производительность.

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


Цитата Сообщение от Tige Посмотреть сообщение
А если у меня программа с пузырьковой сортировкой для 20 чисел?
вот 20 чисел: это ты откуда этот размер взял? Для адекватных оценок времени массив должен быть большим, тогда, возможно, и ухищрения не понадобятся


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
printf("\n\nPuzirkovaya sort:\n");
    start = clock();        
    for (int j=0; j<100; j++)//по j сортировка повторяется 100 раз туда сюда
    for (t=1;t<n;t++){
        for(i=n-1;i>0;i--){
            if ((j&1)?(masv[i]<masv[i-1]):(masv[i]>masv[i-1])){//если j нечётное, то
                             //  сортировать по возрастанию, иначе по убыванию
                z=masv[i-1];
                masv[i-1]=masv[i];
                masv[i]=z;
            }
        }
    }
    end = clock();
Yandex
Объявления
01.12.2012, 14:21     Время выполнения программы равно нулю
Ответ Создать тему
Опции темы

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