Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.11.2015, 20:00   #1
Вероника99
Форумчанин
 
Регистрация: 15.12.2013
Сообщений: 414
По умолчанию

Добрый вечер. Мне нужно узнать время выполнения сортировки в миллисекундах.Почему то когда хочу узнать время следующим способом, выводит 0,000000 при всех значениях. Можете подсказать нормальный способ вычисления времени работы функция
Код:
int arr[3]={500,1000,1500};
    clock_t t[9];
int j=0;
    for(int i=0;i<3;i++)
{
        t[i]=clock(); 
        Sort(j);
        t[i]=clock()-t[i];
                   j++; 
    
}
printf("Time: %lf seconds\n", double(t[i])/CLOCKS_PER_SEC);
Ребят,подскажите в чем же все таки дело, выводит от силы два найденных значения,все остальное нули,что я не так делаю?
Код:
for(i=0,j=0;i<3;)
{
       t1[i] = GetTickCount();
       Sort1(arr[j]);
       time[i] =  GetTickCount() - t1[i];
        time[i]=(double(time[i])/CLOCKS_PER_SEC);
     //  printf("Time: %lf seconds\n", time[i] );
        i++;
        j++; 
}
 
for(i=3,j=0;i<6;)
{
       t1[i] = GetTickCount();
      // cout<<"t1[i] "<<t1[i]<<endl;
       Sort2(arr[j]);
       time[i] =  GetTickCount() - t1[i];
       time[i]=(double(time[i])/CLOCKS_PER_SEC);
    //   printf("Time: %lf seconds\n",time[i] );
        i++;
        j++; 
}

Последний раз редактировалось Stilet; 21.11.2015 в 09:42.
Вероника99 вне форума Ответить с цитированием
Старый 20.11.2015, 21:54   #2
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

поставь брейк на строке, где вычисляется выводимое значение, и посмотри значения переменных, из которых оно вычисляется.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 20.11.2015, 21:57   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
что я не так делаю?
Может твоя сортировка слишком быстро работает?
Код:
for(i=3,j=0;i<6;)
{
       int n= GetTickCount();
       Sort2(arr[j]);
       n =  GetTickCount() - n;
       printf("Тиков: %d\n",n);
        i++;
        j++; 
}
Что выводит?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 20.11.2015, 22:06   #4
Вероника99
Форумчанин
 
Регистрация: 15.12.2013
Сообщений: 414
По умолчанию

Цитата:
Сообщение от min@y™ Посмотреть сообщение
поставь брейк на строке, где вычисляется выводимое значение, и посмотри значения переменных, из которых оно вычисляется.
Вывела просто в цикле t1[i]
36125562 на экране
arr[j] правильно меняет с 500 до 1500
Без понятия,в чем проблема,почему во вторым цикле всегда нули
Вероника99 вне форума Ответить с цитированием
Старый 20.11.2015, 22:13   #5
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Цитата:
Вывела просто в цикле t1[i]
понял. проехали.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 20.11.2015, 22:24   #6
Вероника99
Форумчанин
 
Регистрация: 15.12.2013
Сообщений: 414
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Может твоя сортировка слишком быстро работает?
Код:
for(i=3,j=0;i<6;)
{
       int n= GetTickCount();
       Sort2(arr[j]);
       n =  GetTickCount() - n;
       printf("Тиков: %d\n",n);
        i++;
        j++; 
}
Что выводит?
Нули вывело, сортировка быстро работает,но все таки какие-то миллисекунды должны быть,а выводит 0.00000
Вероника99 вне форума Ответить с цитированием
Старый 20.11.2015, 22:29   #7
Son Of Pain
Участник клуба
 
Регистрация: 23.12.2010
Сообщений: 1,129
По умолчанию

У GetTickCount разрешение привязано к системному таймеру. Потому ты не сможешь засечь очень мелкие временные промежутки (обычно примерно до 20 миллисекунд).

Сделай массивы больше, или замеряй время по счетчку тактов процессора (rdtsc).

Последний раз редактировалось Son Of Pain; 20.11.2015 в 22:34.
Son Of Pain вне форума Ответить с цитированием
Старый 20.11.2015, 22:32   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Сделай массивы больше
Верно. Хотя бы до миллиона элементов.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 20.11.2015, 22:33   #9
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

есть примочка, основанная на GetPerformanceXXXX()
могу дать.

апд: возникла микроидея - написать с этой примочкой потомок TThread, добавить в него свойства:
Код:
public  
  property Iterations: uint64...;
  property ExecutionTime: double...;
  // можно ещё и эти:
  Interval: double...;
  Estimated: double...;
  OnTimer: TNotifyEvent...; // <--- синхронно!
end;
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...

Последний раз редактировалось min@y™; 20.11.2015 в 22:45.
min@y™ вне форума Ответить с цитированием
Старый 20.11.2015, 22:42   #10
Вероника99
Форумчанин
 
Регистрация: 15.12.2013
Сообщений: 414
По умолчанию

Дело в том,что по заданию нужно найти именно время сортировки для такого кол-ва элементов, что за GetPerformanceXXXX()?
Вероника99 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Формула для подсчета рабочего времени при ночной смены. sakramann Microsoft Office Excel 20 16.10.2013 15:50
Функция для подсчета roulis2844sasha Помощь студентам 2 17.11.2011 10:13
Функция подсчета md5 файлов tumanovalex C# (си шарп) 3 08.06.2011 23:22
функция для подсчета количества символов в строке типа std::string a Артэс Общие вопросы C/C++ 3 06.07.2009 17:43
функция подсчета суммы элементов после первого отрицательного nikzntu Общие вопросы C/C++ 0 13.01.2009 21:40