如何获取开机时间

来源:互联网 发布:程序员淘汰 知乎 编辑:程序博客网 时间:2024/04/28 19:06
之前对这个问题百思不得起解,偶然看到一篇技术文章,茅塞顿开。


原来,cpu自上电之后,内部维持了一个64位计数器(无符号,因此范围超大),每过一个CPU时钟周期,计数器加一


所以说:

开机到360安全卫士自动运行时,360安全卫士读取cpu这个计数器,但是这个64位的无符号数仅仅是cpu周期个数,还必须除以cpu的主频,才是启动的时间(单位秒)。

--------------------------------------------------------------------------------------------

读取cpu时间计数器,没有c函数可以做到,只有汇编级别的代码,如下:

/*****************VC 环境下****************/


inline unsigned __int64 GetCycleCount()

{

//__asm RDTSC,这一行同下面两行等价

__asm _emit 0x0F

__asm _emit 0x31

}
原创粉丝点击