编辑:它现在似乎正在运行。代码已经更新,以显示我的修订。谢谢大家的帮助。
我想我只是很蠢,但我试图用ctime来计算我整个程序中的CPU滴答数。我正在为一个学校项目编写一个加密算法,我试图包括一个计时器,这样我就可以添加噪声处理,在不同的密钥/明文组合中均衡时间。下面是对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++),似乎是时间/时间。h根本没有像我希望的那样计算滴答数。有人能辨认出问题吗?在这门语言中我是一个相对业余的人。
发布于 2013-03-14 21:48:58
我的两分钱。当您执行cin.get()时,它会等待您在控制台上输入一些内容,您是否做了任何操作,或者只是输入了enter?
我没有输入任何文本就运行了您的代码,只需按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这可能是因为与程序使用的CPU时间相比,CLOCKS_PER_SEC的精度“大”(以秒计)。
同时,持续时间行中出现语法错误,您或者遗漏了另一个),或者应该删除第一个(
顺便说一句:真正的是从开始到结束的挂钟时间。
User是进程中用于用户模式代码(内核之外)的CPU时间。这只是执行进程时使用的实际CPU时间。
Sys是进程中在内核中花费的CPU时间。
所以你基本上有0 CPU时间,因为你一直在等待I/O,没有CPU计算。
发布于 2013-03-14 21:47:34
程序中的elapsedTime是以秒为单位的时间度量,而不是时钟滴答数。如果你想要蜱,使用duration。
由于您的程序(想必)大部分时间都被阻塞在I/O上,所以没有多少秒就会过去。
https://stackoverflow.com/questions/15420715
复制相似问题