我需要找出两个函数执行相同操作但使用不同算法编写的时间。我需要找到两个中最快的。
下面是我的代码片段
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更快。
我不知道我做错了什么。
发布于 2014-12-15 14:57:59
除非您在示例类中提供了回文和isPalindrome函数的代码,否则我只能推测。
我猜最有可能的原因是你的两个函数使用了相同的类变量和其他数据。所以当你第一次调用函数时,它必须为变量分配内存,而下一次调用其他函数时,这些一次性开销已经发生了。如果不是变量,它可能是其他一些东西,但沿着相同的路线。
我建议您调用这两个函数两次,并且只在第二次调用函数时注意持续时间,这样它们需要使用的任何资源都可能已经分配了一次,并且幕后干扰结果的可能性较小。
如果有效,请让我知道。这只是我的猜测,我可能错了。
https://stackoverflow.com/questions/27478713
复制相似问题