РЕДАКТИРОВАТЬ: Кажется, он работает сейчас. Код был обновлен, чтобы показать мои ревизии. Спасибо за вашу помощь.
Я полагаю, что я просто глуп, но я пытаюсь использовать ctime для подсчета тиков ЦП во всей моей программе. Я пишу алгоритм шифрования для школьного проекта, и я пытаюсь включить таймер, чтобы я мог добавить шумовые процессы, выравнивая количество времени между различными комбинациями ключ / открытый текст.
Вот небольшой тест для ctime:
#include <iostream>
#include <string>
#include <ctime>
int main (int arc, char **argv)
{
double elapsedTime;
const clock_t start = clock ();
int uselessInt = 0;
for (int i = 0; i <= 200; i++)
{
uselessInt = uselessInt * 2 / 3 + i;
std::cout << uselessInt << std::endl;
}
clock_t end = clock();
elapsedTime = static_cast<double>(end - start);
std::cout << elapsedTime << " CPU ticks have elapsed since this application's initiation." << std::endl;
return (0);
}
который печатает:
0
1
2
4
/* ... long list of numbers ... */
591
594
0 CPU ticks have elapsed since this application's initiation.
[smalltock@localhost Desktop]$
Я использую GCC (G ++), и кажется, что ctime / time.h просто не считает тики, как я хочу. Кто-нибудь может определить проблему? Я относительный любитель в этом языке.
Мои два цента. Когда вы делаете cin.get (), он ждет, когда вы что-то введете в консоль, вы что-то сделали или просто набрали enter?
Я запустил ваш код, не набирая текст, а просто нажал ввод, он дал следующий вывод:
Test Text
It's a stone, Luigi... you didn't make it.
0 CPU ticks have elapsed since this application's initiation.
Real 0m0.700s
User 0m0.000s
Sys 0m0.061s
Это может быть связано с тем, что точность CLOCKS_PER_SEC является «большой» (в секундах) по сравнению с временем процессора, используемым вашей программой.
Между тем из-за синтаксической ошибки в длительности строки вы либо пропустили другую), либо должны удалить первую (
КСТАТИ:
Реальное время настенные часы — время от начала до конца разговора.
Пользователь — это количество процессорного времени, потраченного на код пользовательского режима (вне ядра) внутри процесса. Это только фактическое время процессора, используемое при выполнении процесса.
Sys — это количество процессорного времени, проведенного в ядре в процессе.
Таким образом, у вас в основном 0 процессорного времени, так как вы продолжаете ждать ввода-вывода, без вычислений процессора.
elapsedTime
в вашей программе это мера времени в секундах, а не количество тактов. Если хотите галочки, используйте duration
,
Поскольку ваша программа (предположительно) проводит большую часть своего времени, заблокированного на вводе / выводе, пройдет не так много секунд.