首页 > 解决方案 > 增加单核 CPU 使用率

问题描述

我在 C# 中有一个简单的 while 循环,如下所示:

private static long a;

static void Main(string[] args)
{
    a = 0;
    while (a >= 0)
        a++;
    Console.WriteLine(a);
}

无论我做什么,它都不会使用超过 60% 的单个 cpu 线程(逻辑处理器),通常在 40% 左右。我希望它像 C++ 循环一样使用 100%。

在人们问我之前,我知道它永远不会使用 100% 的整体 cpu,因为它是单线程的。我想要一个 100% 的逻辑处理器。

任何帮助,将不胜感激。

编辑:与单线程应用程序是否仅在一个运行 exe 的 CPU 上运行不一样无助于它不是 linq 表达式。

标签: c#.netperformance

解决方案


使用这个我得到每个 CPU 100% 或每个核心使用率 100% 1 全部

我不得不将计数器更改为 long,因为我的电脑对于 int 来说太快了 :-)

我还必须为单胎面测试设置一个核心的亲和力,否则它会不断改变核心。

我的猜测是您的工具报告了错误的值。如果 CPU 具有 turbo 模式,则可以在某些 SW 中显示无意义的值。在这种情况下,Windows 经常显示超过 100% 的 cpu 频率。

另一个原因可能是过热或某些电池保护程序。

尝试在最大性能设置和不同的 PC 上

using System;
using System.Threading;

namespace ConsoleApp1
{
    class Program
    {
        static void BusyDelay()
        {
            long i = 10000000000;
            while (i-- > 0) ;
        }

        static void Main(string[] args)
        {
            /* use "1" intead of "ProcessorCount" for single thread insted */
            for (int i = 0; i < Environment.ProcessorCount ; i++)
            {
                new Thread(BusyDelay).Start();                
            }                        
        }
    }
}

推荐阅读