Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.66/154: Рейтинг темы: голосов - 154, средняя оценка - 4.66
 Аватар для leoned
31 / 31 / 0
Регистрация: 30.06.2011
Сообщений: 467

Как правильно ипользовать clock() и GetTickCount()?

18.07.2011, 10:08. Показов 31730. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
я и гуглил и по сайту яндаксил но так и не в курил как правильно ипользовать эти функции(clock() и GetTickCount())
вот код в котором я хочу за сечь время выполнения цикла
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
 #include <iostream>
 using namespace std;
 
int main()
    {
    locale::global(locale("rus"));
    for (int num = 100;num >= 0;num--)
      {
        cout<<num<<"\t";
      }
    system("pause");
    return 0;
}
пожалуйста помогите!!!
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
18.07.2011, 10:08
Ответы с готовыми решениями:

Автоматически сбрасываются частоты Core clock Шейдеров и Memory clock, AMD M2N-MX se plus
Добрый Вечер! У меня такая проблема: Во время игры падает фпс(Кол-во Кадров в секунду),нажимаю alt+tab и по мониторингу вижу что...

Возможно ли сделать отсчет времени в лотусе Clock In/ Clock Out
Привет лотусистам! Такая вот задача. Когда человек приходит на работу он в лотусе где то ставит что он начал работу, каждые 4 часа он...

Core clock и Memory Clock - что это за параметры?
Core clock и Memory Clock разъясните мне, пожалуйста, что это за параметры? По умолчанию Core Clock стоит 920MHz а Memory Clock 1050MHz....

15
4 / 4 / 1
Регистрация: 18.04.2010
Сообщений: 82
18.07.2011, 10:17
Я для таких целей юзал tickGet(), правда операционка была vxWorks, потому не знаю есть ли такое в виндею Если нет, то поищите аналог - это взятие текущего време6ни (отсчет, если не ошибаюсь от начала запуска системы)ю Берете значение перед выполнением цикла, потом после выполнения цикла, а разница между этими двумя значениями и будет именно то, что вам необходимо.
0
 Аватар для leoned
31 / 31 / 0
Регистрация: 30.06.2011
Сообщений: 467
18.07.2011, 10:18  [ТС]
повробавол tickGet() окошки на него ругаются
0
4 / 4 / 1
Регистрация: 18.04.2010
Сообщений: 82
18.07.2011, 10:37
Если честно, то сейчас уже не вспомню точно, что я юзал в винде, но мне почему-то кажется, что это была ф-ия именно clock().
0
 Аватар для leoned
31 / 31 / 0
Регистрация: 30.06.2011
Сообщений: 467
18.07.2011, 10:42  [ТС]
а как ей правильно пользоваться?

Добавлено через 20 секунд
на премере этого кода
0
4 / 4 / 1
Регистрация: 18.04.2010
Сообщений: 82
18.07.2011, 10:55
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 #include <iostream>
 using namespace std;
 
int main()
    {
    locale::global(locale("rus"));
int firstly_time = clock();
        for (int num = 100;num >= 0;num--)
          {
                cout<<num<<"\t";
          }
int secondary_time = clock();
        system("pause");
 
int finish_time = secondary_time - firstly_time;
        return 0;
}
P.S. Возможно я прогадал с возвращаемым значением у clock() (мб это не int). Возможно возвращает _ttime, но это, если не ошибаюсь, тот же продефайненый int. Идейя вцелом такая, как написл, думаю что более или менее понятно.
0
 Аватар для leoned
31 / 31 / 0
Регистрация: 30.06.2011
Сообщений: 467
18.07.2011, 12:26  [ТС]
пишит что индификатор clock() не определён
как я по немаю нужно подключить какуета библеотку?
0
4 / 4 / 1
Регистрация: 18.04.2010
Сообщений: 82
18.07.2011, 12:39
Цитата Сообщение от leoned Посмотреть сообщение
пишит что индификатор clock() не определён
как я по немаю нужно подключить какуета библеотку?

Попробуй в начало дописать:

#include <time.h>
0
 Аватар для leoned
31 / 31 / 0
Регистрация: 30.06.2011
Сообщений: 467
18.07.2011, 12:43  [ТС]
а в чём выводится ризультат?в секундах или милисекундах?
0
4 / 4 / 1
Регистрация: 18.04.2010
Сообщений: 82
18.07.2011, 12:48
Цитата Сообщение от leoned Посмотреть сообщение
а в чём выводится ризультат?в секундах или милисекундах?
Цитата Сообщение от MSDN
Return Value

The elapsed wall-clock time since the start of the process (elapsed time in seconds times CLOCKS_PER_SEC). If the amount of elapsed time is unavailable, the function returns –1, cast as a clock_t.
В секундах, а возвращает тип clock_t, чуется мне, что это как раз и есть задефайненный int.
0
 Аватар для leoned
31 / 31 / 0
Регистрация: 30.06.2011
Сообщений: 467
18.07.2011, 12:54  [ТС]
ага 46 секунд для цикла в 100 инацилизаций через чур много!!!

Добавлено через 1 минуту
без cout 15-13 и то до фига!
1
4 / 4 / 1
Регистрация: 18.04.2010
Сообщений: 82
18.07.2011, 12:56
Странно... Хотя... Сорри, наверное все-таки в ms, ибо я сейчас вспоминаю, что юзал эту ф-ию когда trace для работы с сетью делал, а там были у меня везде единицы измерения ms, значит скорее всего и у Вас также
1
 Аватар для leoned
31 / 31 / 0
Регистрация: 30.06.2011
Сообщений: 467
18.07.2011, 12:59  [ТС]
тогда всё встоёт на свои место спасибо !(кнопочку нажал
0
Программист
 Аватар для prZzZ
119 / 97 / 11
Регистрация: 22.03.2011
Сообщений: 244
18.07.2011, 13:19
C++
1
2
3
4
DWORD t1 = GetTickCount();
//...Профилируемый код...
DWORD t2 = GetTickCount();
DWORD time = t2 - t1;
Но это неточно...
Для большей точности нужно использовать счетчик монитора производительности:
C++
1
2
LARGE_INTEGER time;
QueryPerfomanceCounter(&time);
Ну а САМЫЙ точный метод - это использование счетчика меток реального времени TSC (Time Stamp Counter (Начиная с Pentium III)
C++
1
2
3
4
unsigned __int64 GetCycleCount(void)
{
    _asm rdtsc
}
Если ваш компилятор не понимает этой команды можно использовать машинное представление:
C++
1
2
_asm _emit 0x0F
_asm _emit 0x31
Но там есть геморрой:
этот счетчик нужно калибровать...
2
 Аватар для leoned
31 / 31 / 0
Регистрация: 30.06.2011
Сообщений: 467
18.07.2011, 13:23  [ТС]
Цитата Сообщение от prZzZ Посмотреть сообщение
Для большей точности нужно использовать счетчик монитора производительности:
а по подробней можно?(желательно сразу в код всунуть а то я нуб)
0
Программист
 Аватар для prZzZ
119 / 97 / 11
Регистрация: 22.03.2011
Сообщений: 244
18.07.2011, 13:53
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <windows.h>
 
int main()
{
    LARGE_INTEGER freq;
    LARGE_INTEGER t1;
    LARGE_INTEGER t2;
    if(QueryPerformanceFrequency(&freq))
    {
        QueryPerformanceCounter(&t1);
        //...Профилируемый код...
        QueryPerformanceCounter(&t2);
        double dt = t2.QuadPart - t1.QuadPart;
        double elapsed_time = 1000 * dt / freq.QuadPart; // время выполнения в миллисекундах...
    }
    else
    {
        // ОШИБКА!!! Счетчик монитора производительности не поддерживается системой...
    }
    return 0;
}
Добавлено через 11 минут
И, обратите внимание, на результат будет очень сильно влиять режим компиляции (Debug/Release).
7
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
18.07.2011, 13:53
Помогаю со студенческими работами здесь

как можно ипользовать многомерный массив?
Изучил массивы и стало интересно,как можно использовать многомерные массивы, в книги не написано про их использование а только упомянуто их...

Как ипользовать jquery в js коде на стороннем сайте?
Добрый день. мне нужно, чтобы на сайте подключался js файл, использующий библиотеку jquery. Но скрипт не видит jquery. Первый файл php: ...

Как написанную функцию на одной форме ипользовать в другой
Всем доброго времени суток. Имеется функция void Add(void). Прописал её прототип в formRegNewEvent.cpp, а так-же в formRegNewEvent.h,...

Можно ли ипользовать HSV палитру через JS и если да, то как?
Или подобную. Делаю рендом, и rgb с hex-ом мне очень не удобны. Мне бы HSV, но не могу найти как применять. И возможно ли вообще?...

Как можно изменить время в GetTickCount?
Как можно изменить время в GetTickCount? Или как изменить время работы в деспетчере задач?


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru