Не могу измерить время выполнения, так как он выполняется слишком быстро и в принтф выводит просто 0 хотелось бы, чтобы он выводил хоть какие нибудь наносекунды! Помогите пожалуйста
| Код | #include <stdio.h> #include <math.h> #include <windows.h> #include <locale.h> int l, m, n, geo, sum; _int64 FileTimeToQuadWord(PFILETIME pft) { return(Int64ShllMod32(pft->dwHighDateTime, 32) | pft->dwLowDateTime); } DWORD WINAPI proizv (PVOID Parametr) { geo=1; for (int i=l; i<=m; i++) geo*=i; return 0; } DWORD WINAPI summa (PVOID Parametr) { sum = (n+1)*(l+m)/2; return 0; } int main() { setlocale(LC_ALL, "Russian"); do { printf( "Введите нижнюю границу диапазона(натуральное число): " ); scanf_s("%d", & l ); printf( "Введите верхнюю границу диапазона(натуральное число): " ); scanf_s("%d", & m ); if (l>m) { printf( "\nВводите нормальные числа!\n\n" ); } } while (m<l); n = m-l+1; FILETIME ftKernelTimeEnd; FILETIME ftUserTimeEnd; FILETIME ftDummy; _int64 qwKernelTimeElapsed, qwUserTimeElapsed, qwTotalTimeElapsed; DWORD idThread; HANDLE h1, h2; h1 = CreateThread (NULL, NULL, proizv, &geo, NULL, &idThread); h2 = CreateThread (NULL, NULL, summa, &sum, NULL, &idThread); SetThreadPriority(h1, THREAD_PRIORITY_HIGHEST); SetThreadPriority(h2, THREAD_PRIORITY_IDLE); GetThreadTimes(h2, &ftDummy, &ftDummy, &ftKernelTimeEnd, &ftUserTimeEnd); qwKernelTimeElapsed = FileTimeToQuadWord(&ftKernelTimeEnd); qwUserTimeElapsed = FileTimeToQuadWord(&ftUserTimeEnd); qwTotalTimeElapsed = qwKernelTimeElapsed + qwUserTimeElapsed; printf("\nЧисло членов: %i", n); WaitForSingleObject(h1, INFINITE); printf("\n\nПроизведение последовательности: %i", geo); WaitForSingleObject(h2, INFINITE); printf(" \nСумма последовательности %i", sum); printf("\n\nВремя выполнение первого потока: %lld", qwTotalTimeElapsed); CloseHandle(h1); CloseHandle(h2); getchar(); getchar(); return 0; }
|
|