zoukankan      html  css  js  c++  java
  • 多核CPU利用测试

     

    一直在想程序上是否特意让线程在指定的CPU上去运行,这样可以提高运行效率,所以特地写个代码让CPU使用率画正弦曲线的实验,我使用的是AMD X4 641的CPU,为四核四线程的片子。

    代码如下

    #include "stdafx.h"
    #include <iostream>
    #include <cmath>
    #include <ctime>
    #include <windows.h>
    
    using namespace std;
    
    //得到循环0xFFFFFFFF次用的秒数
    unsigned int test()
    {
        unsigned int c = 0xFFFFFFFF;
    
        time_t t1, t2;
        time(&t1);
    
        for(unsigned int i = 0; i < c; i++)
            ;
        time(&t2);
        return (unsigned int)(t2 -t1);
    
    }
    
    
    #define T  20000                                        //周期时间 20秒
    #define C  100                                            //采样点时间间隔
    #define PI 3.1415                                        //PI
    const unsigned int count = 0xFFFFFFFF / (test() *1000); //采样间隔可以执行的循环数目
    const unsigned int N = T/C;                                //周期内采样点数目
    unsigned int v[N] = { 0 };                                //所有采样点连续执行循环数
    unsigned int mt[N] = { 0 };                                //所有采样点休眠毫秒数
    
    int main()
    {
        //指定运行CPU
        SetThreadAffinityMask(GetCurrentThread(), 3);
      
    for(int i = 0; i < N; i++) { double x = 2 * PI * i / N; double r = (sin(x) + 1) / 2; mt[i] = C - r * C; v[i] = r * C * count; } for(;;) { for(int i = 0; i < N; i++) { for(int j = 0; j < v[i]; j++) ; Sleep(mt[i]); } } }

    不指定CPU,发现,貌似系统会平分一下到第一和第二个CPU的使用

    指定在第一个CPU上运行的话,效果如下:

    指定运行在第二个CPU上,效果如下:

    指定在第三个CPU上运行,效果如下:

    指定在第四个CPU上运行的话,效果如下:

    如果指定的话,那么会固定使用那个指定的CPU,但是有一点比较纳闷的,指定运行在第一个和第二个上没问题,指定运行在第三个上,不知道运行在哪个上了,而指定运行在第4个上,却运行第3个CPU上,难道是我的CPU有问题,明明是四核四线程的CPU,为什么指定在第3个上,没效果,而指定在第四个上却运行在第3个上呢。

    这是AMD的CPU的测试结果,不知道Intel的CPU上是不是一样的效果。

    我想换个intel的八核十六线程的CPU,感觉现在这个四核四线程的应付不过来平时的工作了。

    等换了八核十六线程的片子以后,再做下测试。

  • 相关阅读:
    多测师肖sir__分享考试连接___轻速云
    软件测试___多测师肖sir____非技术面试之离职原因
    软件测试 ___ 接口测试__面试题
    软件测试____多测师肖sir____app测试面试题
    软件测试 ____杭州多测师肖sir___面试题模板收集
    软件测试___接口测试面试题____接口超时场景设置和接口超时处理
    软件测试 ____杭州多测师肖sir__po设计面试题
    c#使用Socket获取网页(含自动跳转, 解压网页)
    查找类似图片(Find Similar Image)
    C# .net Remoting最简单的例子
  • 原文地址:https://www.cnblogs.com/fredliu/p/6268910.html
Copyright © 2011-2022 走看看