关于I7 11800H效率不如R7 5800H

问题遇到的现象和发生背景

单纯的想测试一下多线程程序需要开几个线程能够多少的效率,但是在11800H和5800H上测试,发现5800H的计算速度远快于11800H,该程序只涉及到计算,应该与内存、硬盘没有过多关系,这是我测试的结果,显然5800H的平均速度更快。

img


不知道有没有大犇能解释一下,理论上应该11800H更快,至少不会慢这么多,11800H是机械革命的Z3PRO,5800H是联想的thinkbook14P。
关于测试代码只是单纯的计算,看完成计算的次数

问题相关代码,请勿粘贴截图
#include<thread>
#include<chrono>
#include<iostream>
#include<atomic>
#include<cstdlib>
#include<ctime>
#include<vector>
#include<unistd.h>
#include<string>

//#define thread_num 4
#define sec 10

std::vector<std::thread> vec;
std::vector<int> vec_state;

std::atomic<int64_t> tot{0};

typedef std::chrono::high_resolution_clock Clock;

int32_t thread_num=0;
std::string getTime()
{
    time_t timep;
    time (&timep); //获取time_t类型的当前时间
    char tmp[64];
    strftime(tmp, sizeof(tmp), "%Y-%m-%d %H:%M:%S",localtime(&timep) );//对日期和时间进行格式化
    return tmp;
}

void task(int id)
{
    int x=0;
    int mod=rand();
    while(1)
    {
        for(int i=1;i<=100000;i++)
        {
            x=x+i;
            x%=mod;
        }
        if(vec_state[id]==1) return;
        ++tot;
    }
}
int main(int argc,char* argv[])
{
    srand((unsigned)time(NULL));
    thread_num=atoi(argv[1]);
    std::cout<<thread_num<<'\t'<<'\t';
    for(int i=0;i<thread_num;i++)
    {
        vec.emplace_back(std::thread(task,i));
        vec_state.emplace_back(0);
    }
    auto t1=Clock::now();//计时开始
    tot=0;
    sleep(60);
    double _tot=tot;
    auto t2=Clock::now();//计时结束
    std::cout<<(std::chrono::duration_cast<std::chrono::nanoseconds>(t2-t1).count()/1e9)<<'\t'<<'\t'<<_tot<<'\t'<<'\t';
    double avg=_tot/(std::chrono::duration_cast<std::chrono::nanoseconds>(t2-t1).count()/1e9); 
    std::cout<<avg<<std::endl;
    for(int i=0;i<thread_num;i++)
    {
        vec_state[i]=1;
        vec[i].detach();
    }
    return 0;
}
运行结果及报错内容

img

我的解答思路和尝试过的方法
我想要达到的结果