C++ 的转换从 Linux 到 Windows 的代码
我是 C++ 新手,我有一个为 Linux 编写的 C++ 程序。我正在尝试将其转换为 Windows。我的代码是:
struct Timer
{
struct tms t[2];
void STARTTIME (void)
{
times(t);
}
void STOPTIME(void)
{
times(t+1);
}
double USERTIME(void)
{
return ((double)((t+1)->tms_utime - t->tms_utime))/((double)sysconf(_SC_CLK_TCK));
}
};
对于tms_utime
,我在 Visual C++ 中找到了术语QueryPerformanceCounter
,但我无法应用它。 对于 sysconf(_SC_CLK_TCK)
我使用 CLOCKS_PER_SEC
但我不知道这有多正确? Windows 的等效代码是什么?
I am new to C++ , I have a program in C++ written for Linux. I'm trying to convert it to Windows. The code I have is:
struct Timer
{
struct tms t[2];
void STARTTIME (void)
{
times(t);
}
void STOPTIME(void)
{
times(t+1);
}
double USERTIME(void)
{
return ((double)((t+1)->tms_utime - t->tms_utime))/((double)sysconf(_SC_CLK_TCK));
}
};
For tms_utime
I find term QueryPerformanceCounter
in Visual C++, but I cannot apply this.
For sysconf(_SC_CLK_TCK)
I use CLOCKS_PER_SEC
but I do not know how correct this is? What is the equivalent code for Windows?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
这是一个直接替换,它返回用户时间,而不是经过的时间:
Here is a drop-in replacement that returns the user time, rather than the elapsed time:
这是我写的一个类,我总是使用
示例用法:
Here's a class I wrote that I always use
Example usage:
这是(未经测试,但逻辑上正确的)替换下降。
usertime
函数以第二分辨率返回(作为double
),因此您需要除以所需的分辨率。This is (an untested, but logically correct) drop in replacement. The
usertime
function returns in second resolution (as adouble
) so you need to divide by the required resolution.