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

Измерение времени исполнения алгоритма через Clock() периодически равно 0 - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ В предложении найти слово, в котором количество гласных максимально http://www.cyberforum.ru/cpp-beginners/thread60717.html
Всем привет! У меня одна небольшая проблема - я не затрудняюсь в написании алгоритма задач, но нам не объясняют строки в С++ и я просто не могу их правильно задать и программа не работает. А в интернете нормальную информацию найти не могу. Помогите пжлст. Только полегче, чтобы я поняла. Буду очень благодарна. В предложении найти слово, в котором количество гласных максимально. #include...
C++ Списки!!! нужен совет и помoщь( здраствуйте ) мне нужна ваша помощь в некоторых вещах 1) Написать функцию для удаления узла (find , delete) в списке, в качесве параметра использовать указатель 2) Удалить первый узел, удалить последний узел Ещё попрошу посоветовать мне литературу (электроную) в которой на нужном уровне обьясняются темы 1)Работа со строковыми данными 2) списки Заранее большое спасибо) надеюсь на вашу... http://www.cyberforum.ru/cpp-beginners/thread60705.html
C++ Неправильная работа с массивом структур
Помогите, пожалуйста: программа заключается в следующем: спроектировать структуру car, которая хранит информацию о наименовании производителя машины(объект string) и год выпуска. Программа запрашивает пользователя ввести сколько автомобилей надо включить в структуру. Далее программа применяет new для создания динамического массива структур car указанного пользователем размера. Далее выводится...
C++ программа по вычислению последовательности чисел
Очень прошу помочь начинающей программистке:curtsy: Задача заключается в написании программы, которая сосчитает вводную последовательность целых чисел (положительных, нулевых и отрицательных) и определяет третье по величине число, которое было найдено в последовательности. Ввод: натуральное число n, которое показывает количество цифр в последовательности. Вывод:третье в последовательности...
C++ Фрагментация памяти в С++ http://www.cyberforum.ru/cpp-beginners/thread60700.html
Есть длительно работающая программи интенсивно, работающая с памятью - выделяет освобождает, причем маленькими кусочками. Из-за этого всего фрагментируется куча. Посоветуйте, что-нибудь, пожалуйста, может какой-нибудь линк "на почитать". Как избавиться от фрагментации памяти? Желательно с минимальными затратами и без написания собственной системы управления памятью. Спасибо. PS. Интересуют...
C++ Дописать програмку #include <stdio.h> #include <string.h> #include <stdlib.h> #include <iostream.h> #define MAX 100 struct chit { char fio ; char adres ; char telefon ; int godRojd ; подробнее

Показать сообщение отдельно
CyBOSSeR
Эксперт C++
2299 / 1669 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
04.11.2009, 12:58     Измерение времени исполнения алгоритма через Clock() периодически равно 0
Попробуй использовать GetThreadTimes, пример ниже:
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
35
36
37
38
_int64 FileTimeToQuadWord(PFILETIME pft)
{
    return(Int64ShllMod32(pft->dwHighDateTime, 32) | pft->dwLowDateTime);
}
 
void PerformLongOperation ()
{
    FILETIME ftKernelTimeStart, ftKernelTimeEnd; 
    FILETIME ftUserTimeStart, ftUserTimeEnd; 
    FILETIME ftDummy;
 
    _int64 qwKernelTimeElapsed, qwUserTimeElapsed, qwTotalTimeElapsed;
 
    // получаем начальные показатели времени 
    GetThreadTimes(GetCurrentThread(), &ftDummy, &ftDummy,
                   &ftKernelTimeStart, &ftUserTimeStart);
 
    // здесь выполняем сложный алгоритм 
 
    // получаем конечные показатели времени
    GetThreadTimes(GetCurrentThread(), &ftDummy, &ftDummy,
                   &ftKernelTimeEnd, &ftUserTimeEnd);
 
    // получаем значении времени, затраченного на выполнение ядра и User, 
    // преобразуя начальные и конечные показатели времени из FILETIME 
    // в учетверенные слова, а затем вычитая начальные показатели из конечных 
    qwKernelTimeElapsed = FileTimeToQuadWord(&ftKernelTimeEnd) -
                          FileTimeToQuadWord(&ftKernelTimeStart);
 
    qwUserTimeElapsed = FileTimeToQuadWord(&ftUserTimeEnd) -
                        FileTimeToQuadWord(&ftUserTimeStart);
 
    // получаем общее время, складывая время выполнения ядра и User 
    qwTotalTimeElapsed = qwKernelTimeElapsed + qwUserTimeElapsed;
 
    // общее время хранится в qwTotalTimeElapsed
 
}
qwTotalTimeElapsed - время, выраженное в интервалах по 100 нс.
По поводу GetTickCount, цитата из книги Дж.Рихтер "Создание эффективных Win32 приложений ":
Иногда нужно знать, сколько времени затрачивает поток на выполнение той или иной операции. Многие в таких случаях пишут что-то вроде этого:
C++
1
2
3
4
5
6
7
8
// получаем стартовое время
 
DWORD dwStartTime = GetTickCount();
 
// здесь выполняем какой-нибудь сложный алгоритм 
// вычитаем стартовое время из текущего
 
DWORD dwElapsedTime = GetTickCount() - dwStartTime;
Этот код основан на простом допущении, что он не будет прерван. Но в операционной системе с вытесняющей многозадачностью никто не знает, когда поток получит процессорное время, и результат будет сильно искажен.
 
Текущее время: 08:51. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru