gpt4 book ai didi

c# - 两个函数之间耗时

转载 作者:IT王子 更新时间:2023-10-29 04:42:33 26 4
gpt4 key购买 nike

我需要找到执行相同操作但用不同算法编写的两个函数之间耗时。我需要在两者中找到最快的

这是我的代码片段

Stopwatch sw = new Stopwatch();
sw.Start();
Console.WriteLine(sample.palindrome()); // algorithm 1
sw.Stop();
Console.WriteLine(sw.ElapsedMilliseconds);//tried sw.elapsed and sw.elapsedticks
sw.Reset(); //tried with and without reset
sw.Start();
Console.WriteLine(sample.isPalindrome()); //algorithm 2
sw.Stop();
Console.WriteLine(sw.ElapsedMilliseconds);

从技术上讲,这应该给出两种算法所用的时间。这使得算法 2 更快。但是如果我交换两个函数的调用,它会给出不同的时间。就像我先调用 algorithm2 然后再调用 algorithm1 它说 algorithm1 更快。

我不知道我做错了什么。

最佳答案

我假设您的回文方法在此示例中运行极快,因此为了获得真实结果,您需要运行它们几次,然后决定哪个更快。
像这样:

int numberOfIterations = 1000; // you decide on a reasonable threshold.
sample.palindrome(); // Call this the first time and avoid measuring the JIT compile time
Stopwatch sw = new Stopwatch();
sw.Start();
for(int i = 0 ; i < numberOfIterations ; i++)
{
sample.palindrome(); // why console write?
}
sw.Stop();
Console.WriteLine(sw.ElapsedMilliseconds); // or sw.ElapsedMilliseconds/numberOfIterations

现在对第二种方法做同样的事情,你会得到更真实的结果。

关于c# - 两个函数之间耗时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27478713/

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