简单的基准测试

本文关键字:基准测试 简单 | 更新日期: 2023-09-27 18:01:32

我找不到一个好的解决方案的简单问题:

有什么简单的循环可以让处理器"咀嚼"至少十秒钟?我试过这样的事情,但他们在眨眼之间结束:

int max = 300000;
for (int i = 0; i < max; i++)
{
    //do some random math here
}

是否有某种计算或其他操作可以在那里占用更多的时间和使用一点处理器功率?或者另一种方法?

简单的基准测试

如果您想阻塞线程一段时间,但不占用CPU周期,您可以使用Thread.Sleep

如果您想在一段时间内浪费CPU周期而不做任何生产性的事情,您可以使用Thread.SpinWait

根据您的要求:

是否有某种计算或其他操作可以进入在那里占用更多的时间和使用一点处理器功率?

你可以使用DateTime和while循环:

var start = DateTime.Now();
var end = start.AddSeconds(10);
while (DateTime.Now() != end) {}

你总是可以找到素数,冒泡排序,以及类似的事情,当你有一个循环中的循环。你必须有一个很大的数组来排序,或者在整整10秒内选择一个较大的随机数,但它们将是我想象中最好的,也是最快的赌注。

尝试使用基于时间的物理方程。

例如:自由落体在一定时间内(以秒为单位)到达X距离所走过的距离。

private float Gety(float t){float V=t*9.8f; return ((V*V)/19.6f);}

你可以在一个循环中设置它,当返回等于或大于所选的距离时,退出点就会出现。

通过增加和减少时间步长,您将执行越来越多的计算,直到达到该距离或更大。

F。E:初始时间设置为0.0f,目标距离设置为500,将时间步长从每次迭代的0.01f增加到0.001f,将相应地执行更多的计算,直到达到中断距离。

如果在一个循环内循环,步长为0.0000000000001f,你会做得很好。