C#:以自定义百分比创建CPU使用率

Ale*_*lex 7 .net c# performance

我希望在某些CPU使用条件下测试几台机器上的系统响应能力等.不幸的是,我只能创建~100%的使用率(无限循环)或没有足够的CPU使用率(我正在使用C#).

有没有办法,粗略的近似,因为其他任务也在系统上运行,以20,30,40%(等等)步骤人为地创建CPU使用?

据我所知,系统之间存在差异,因为CPU会有所不同.它更多地是关于可自定义CPU密集型计算的算法/想法,这些算法/想法在当前CPU上创建了足够的使用而没有最大化它我可以调整它们然后以某种方式调整它们以创建所需的百分比.

Bub*_*rap 5

这个呢

    DateTime lastSleep = DateTime.Now;            
    while (true)
    {
        TimeSpan span = DateTime.Now - lastSleep;
        if (span.TotalMilliseconds > 700)
        {
            Thread.Sleep(300);
            lastSleep = DateTime.Now;
        }
    }
Run Code Online (Sandbox Code Playgroud)

您可以使用较小的数字来获得更稳定的负载....只要比率是您想要的。但是,这仅使用一个内核,因此您可能必须在多个线程中执行此操作。


Col*_*ill 4

您可以添加一个线程定时器,它按一定时间间隔唤醒并执行一些工作。然后调整工作间隔和工作量,直到接近您想要的负荷。

    private void button1_Click(object sender, EventArgs e)
    {
        m_timer = new Timer(DoWork);
        m_timer.Change(TimeSpan.Zero, TimeSpan.FromMilliseconds(10));
    }

    private static void DoWork(object state)
    {
        long j = 0;
        for (int i = 0; i < 2000000; i++)
        {
            j += 1;
        }
        Console.WriteLine(j);
    }
Run Code Online (Sandbox Code Playgroud)

替代文本

通过这个并调整循环的值,我能够为我的系统添加 20%、60% 和满负载。它将使用额外的线程扩展到多个核心,以实现更均匀的负载。