由于测试一个解码器的项目,很长时间都在反复进行domain knowledge的学习,再加上自己是一个测试新手,对于测试代码撰写啥的还很是生嫩,前一阵被要求在性能测试中,最好在测试时能够计算出解码进程的CPU占用率,做为我们参考的一种性能参数。于是乎搜寻并参考了网络中的N多方法,并在项目中进行实际的实验调试,由此略了解了一点点如何计算进程CPU占用率的代码方法,在此将最终采用的方法之一记录如下:
刚开始自己从win32 API开始寻找解决策略,后来发现并没有提供直接得到CPU占用率的函数。其过程中考虑过使用NtQuerySystemInformation和GetProcAddress等,通过在一个特定时间段内计算特定进程的总时间和所有进程的总时间,它们的比值就是那个特定进程的确CPU占有率。并参考网上一个高人的改写的函数,以进程的ID作为参数,进程CPU占用率作为返回值,实时计算特定进程的CPU占用。但后来发现,在实际的解码测试时,有些值有时候好像有些问题(不敢确定o)
后来采用另一种方法,利用WIN 32 API

本文介绍了如何在Windows环境下使用API函数GetProcessTimes()来计算当前进程的CPU占用率。作者首先尝试了NtQuerySystemInformation和GetProcAddress等方法,但最终选择了通过GetProcessTimes()获取进程占用的CPU时间,然后与实际时间对比来计算比例。文章提供了一个名为GetCPUPercentage的类实现,包括获取CPU占用率的函数,并展示了如何在解码进程中应用。
最低0.47元/天 解锁文章
3642

被折叠的 条评论
为什么被折叠?



