performance - 函数花费的时间越多是否意味着它的运行时复杂度越大?

标签 performance testing timer runtime

用计时器测试来验证代码的运行时复杂性是否明智?

例如:

x=very large input

timer start
foo(x)
timer end

print time

因此,如果时间为 0 秒,则意味着 foo 运行时间为 O(n) 或更短,如果计时器为 30-60 秒,则意味着运行时间必须大于 O( n)?

一般来说,一个函数花费的时间越多,是否意味着它的运行时复杂度越大?

最佳答案

运行时复杂性或渐近复杂性先验分析的一部分。简而言之,这些是代码的理论度量。

例如,

funtion foo (){
    for (i=1;i++;i<n)
        do x;
}

根据上面的例子,

Apriori(运行代码之前)分析表明,它的运行时复杂度将为 O(n),因为循环将执行 n-1 次。

假设如果我们运行这段代码,我们发现代码需要 1 分钟才能执行。 那么我们可以得出以下结论,

1. do() function is taking more time -- it is costly
2. Running complexity is O(n)

结论是运行复杂性是基于数据结构和循环。它们与实际运行时间无关。

无论您的代码执行时间是 1 秒还是 1 小时,运行时的复杂度对于一段代码来说都是固定的。时间在那个函数的某个地方被浪费了。

这很简单,如果您编写一个简单的程序来循环打印 1-n。

对我们来说,只要打印 1-n,时间复杂度总是 O(n)。但是如果你的打印命令需要 3 秒来打印一个数字,那么你的程序执行时间很长,但这并不意味着时间复杂度是 O(n^2)。

我希望你现在清楚了:)

关于performance - 函数花费的时间越多是否意味着它的运行时复杂度越大?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27686664/

相关文章:

python - 为什么 DataFrame 的串联速度会指数级变慢?

mysql - 如何匹配两个数据库表中的相关值?

testing - 在 Xamarin Test Cloud 中,如何为使用登录用户的应用程序在多个设备上运行并发测试?

ruby-on-rails - RSpec:如何测试 includes().where() 中的参数是否正确

javascript - 如何在 Angularjs Protractor 中使用全局函数?

c# windows 服务内存问题(内存泄漏?)

java - 我怎么搞乱了我的 Java 计时器?

c# - Parallel.ForEach 性能不佳

php - 使用 Yii2 框架 Ajax 请求太慢

android - 在 Android 应用程序中同时使用计时器和倒数计时器