多线程 计算程序运行时间

fredy21020 2004-10-14 09:05:10
1、希望实现:在象棋程序中,统计电脑下棋时的思考时间(要求按秒增加)。
2、我用setimer()函数,则当电脑思考时占用100%的CPU,无法按秒增加。
3、请问:必须用多线程吗?若是,如何实现?(电脑下棋的函数:cmp_next())
...全文
269 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
fredy21020 2004-10-19
  • 打赏
  • 举报
回复
多谢以上各位的建议,可是当电脑的思考时间超过一秒时,如何能做到 每秒增加一次时间??
yanw0212 2004-10-15
  • 打赏
  • 举报
回复
// 在电脑开始下棋之前,记住当前的运行时间
DWORD dwRunTiem1 = GetTickCount();
.....
.....
// 电脑下棋的过程


// 在电脑下棋结束后,再次统计时间
DWORD dwRunTiem2 = GetTickCount();

DWORD dwRunTiem3 = dwRunTiem1 - dwRunTiem2; // dwRunTiem3 即是电脑下棋的时间

另外,如果不想让CPU占到100%,可以Sleep(5)一下,强行让出系统时间片 ,5是毫秒级,可以根据你的实际情况定

DentistryDoctor 2004-10-15
  • 打赏
  • 举报
回复
GetTickCount!
flyelf 2004-10-15
  • 打赏
  • 举报
回复
GetThreadTimes
nwpulipeng 2004-10-15
  • 打赏
  • 举报
回复
混分
warmchang 2004-10-14
  • 打赏
  • 举报
回复
是啊,clock应该可以实现;在想计算的地方直接时间相减即可;
memory_xj 2004-10-14
  • 打赏
  • 举报
回复
因为C/C++都提供clock函数,报告程序至某个时刻总共消耗的CPU时间:
#include <time.h>
..
clock_t before;
double elapsed = 0.0;
before = clock();
...代码....
elapsed = clock()-before;
printf("function used %.3f seconds\n", elapsed/CLOCKS_PER_SEC);

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧