gpt4 book ai didi

C# vs C++ 循环性能测量

转载 作者:太空宇宙 更新时间:2023-11-04 14:37:58 24 4
gpt4 key购买 nike

为了好玩,我想看看 C# for 循环的速度与 C++ for 循环的速度相比如何。我的测试是简单地迭代一个 for 循环 100000 次,100000 次,然后取平均结果。

这是我的 C# 实现:

 static void Main(string[] args) {

var numberOfMeasurements = 100000;
var numberOfLoops = 100000;
var measurements = new List < long > ();
var stopwatch = new Stopwatch();

for (var i = 0; i < numberOfMeasurements; i++) {
stopwatch.Start();
for (int j = 0; j < numberOfLoops; j++) {}
measurements.Add(stopwatch.ElapsedMilliseconds);
}

Console.WriteLine("Average runtime = " + measurements.Average() + " ms.");
Console.Read();
}

结果:平均运行时间 = 10301.92929 毫秒。

这是我的 C++ 实现:

void TestA()
{
auto numberOfMeasurements = 100000;
auto numberOfLoops = 100000;
std::vector<long> measurements;

for (size_t i = 0; i < numberOfMeasurements; i++)
{
auto start = clock();
for (size_t j = 0; j < numberOfLoops; j++){}
auto duration = start - clock();
measurements.push_back(duration);
}

long avg = std::accumulate(measurements.begin(), measurements.end(), 0.0) / measurements.size();
std::cout << "TestB: Time taken in milliseconds: " << avg << std::endl;

}

int main()
{
TestA();
return 0;
}

结果:TestA:花费的时间(以毫秒为单位):0

当我查看measurements 中的内容时,我注意到它充满了零...那么,这是什么,这里有什么问题?是时钟吗?是否有更好/正确的方法来测量 for 循环?

最佳答案

没有“问题”。能够优化掉无用的代码是 C++ 的关键特性之一。由于内部循环不执行任何操作,因此每个理智的编译器都应将其删除。

每日提示:只分析有意义的代码。

如果您想了解有关微基准测试的知识,您可能会对 this 感兴趣.

关于C# vs C++ 循环性能测量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35108480/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com