当前位置: 首页 > news >正文

别让CPU大核“闲着“!一文教你强制程序跑在高性能核心上

自从出现了大小核以后,总是感觉程序好像慢半拍?特别是耗时任务,性能对比更加明显。接下来,我将使用一个简单案例,分享一个我让开发的程序默认使用大核心处理的例子,供参考。

本机系统: win11家庭版

CPU型号:i7-14700K

开发语言平台:C#/.NET 8

cpu信息如下图所示:

使用默认大核(针对14700K,其他CPU需要自行调整或者自适应)的帮助类:

使用方式:获取大核掩码,设置为程序进程优先使用的大核掩码

测试一个简单案例,我获取一个耗时任务(读取本地五千多个文件,每个文件大约几百条到上千条不等到CSV文件数据),文件一览:

运行程序,先测试使用设置了大核心来处理的情况:

读取全部文件和数据初始化处理,耗时99644毫秒,

现在把上面的设置P核的调用注释,再跑一下,看下对比:

其他地方保持不变,读取文件和初始化完成:

对比:设置大核心处理耗时任务,耗时99644毫秒(99秒),默认核心处理耗时任务,耗时143638毫秒(143秒),相差 43994毫秒(接近44秒),差距一目了然。

我本地的大核心掩码获取代码如下:

public static class CpuAffinityHelper { public static IntPtr GetPCoresAffinityMask() { try { ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT * FROM Win32_Processor"); uint physicalCores = 0; uint logicalProcessors = 0; foreach (ManagementObject obj in searcher.Get()) { physicalCores = (uint)obj["NumberOfCores"]; logicalProcessors = (uint)obj["NumberOfLogicalProcessors"]; break; } if (logicalProcessors == 0 || physicalCores == 0) { throw new Exception("无法获取 CPU 信息"); } // 计算 P-cores 数量 uint pCores = logicalProcessors - physicalCores; // 计算掩码:前 (pCores * 2) 位为 1 if (pCores * 2 > 64) // 超过 64 需多组处理 { throw new Exception("超过 64 逻辑处理器,不支持单掩码"); } ulong mask = (1UL << (int)(pCores * 2)) - 1; return new IntPtr((long)mask); } catch (Exception ex) { throw new Exception($"WMI 查询失败: {ex.Message}"); } } }
http://www.jsqmd.com/news/409430/

相关文章:

  • 网盘解析工具全攻略:突破限速、高效下载的技术实践
  • SmolVLA部署教程:环境变量HF_HOME/XFORMERS_FORCE_DISABLE_TRITON配置详解
  • Retinaface+CurricularFace实战:图片相似度比对全解析
  • 《人月神话》读后感:在复杂性中寻找秩序的微光
  • JAVA WEB学习10
  • 初见Vibe Coding:环境准备,WSL2上安装OpenCode
  • 音频素材拖到时间线上的,由哪些代码完成哪些业务呢
  • 笛卡尔树简介 ← 基于单调栈创建
  • Vue.13
  • AI人工智能(二十二)pt模型转onnx sensvoice 版本笔记—东方仙盟练气期
  • C++——
  • 洛谷P1012 拼数
  • 我们感知的世界,是真实的吗?
  • 科研前沿篇---具身智能
  • python: Strategy Pattern
  • 1026: a+b问题
  • 2026-02-24 闲话
  • 科研前沿篇---NLP与多模态技术
  • auto.js开发
  • python-flask企业员工考勤打卡信息管理系统Pycharm vue django
  • python-flask吉他乐谱推荐交流网站的实现Pycharm vue django
  • 系统思考:动态性复杂时代的组织认识
  • python-flask九价疫苗预约系统_a6tmiPycharm vue django
  • python-flask基于爬虫系统的世界历史时间轴_6ouj9Pycharm vue django
  • python-flask基于人脸识别的二手物品交易系统 用户发布_i1lnoPycharm vue django
  • python-flask基于协同过滤推荐算法的电影观后感推荐管理系统的设计Pycharm vue django
  • 探索大数据领域数据血缘的价值与意义
  • 初识CAPL
  • AcWing 4279:笛卡尔树 ← 单调栈
  • G004 DAG上DP P1685 游览 P4017 最大食物链计数 - 洛谷