[英]What could be the possible cause of this inconsistent time complexity?
我创建了一个需要执行大量计算的脚本。 我目前正在对其时间复杂度进行评估,并且当计算数量较低时似乎存在一些不一致之处。
计算相当简单,我希望时间复杂度是线性的,但是,直到大约 20 000 次计算,无论执行多少计算,执行时间似乎都会加倍。 运行代码的每次迭代之间的唯一区别是计算次数,即输入的循环数和所有其他爵士乐都是相同的
经过大约 20 000 次计算,我们可以看到该关系符合线性趋势。 这可能是什么潜在原因? 我对计算机科学的了解有限,但我知识有限的大脑认为这可能与我的 CPU 时钟速度为 2.1MHz 有关 - 但这可能是巧合。 数据附在下面,包括总体时间复杂度的图表。 当计算量很低时,一开始会发生什么? 感谢所有帮助! 谢谢
计算次数 | 执行时间(秒) |
---|---|
100 | 1.0739 |
1000 | 1.5066 |
5000 | 1.7258 |
10000 | 1.8882 |
15000 | 2.0061 |
20000 | 2.1536 |
25000 | 2.4743 |
35000 | 3.1681 |
50000 | 4.9021 |
75000 | 7.7399 |
100000 | 8.9756 |
500000 | 42.1814 |
1000000 | 82.0846 |
500万 | 416.8664 |
750万 | 624.5523 |
10000000 | 825.1506 |
这可能是由于函数的运行时是线性 function 具有非常大的截距项。 例如,假设您的函数的运行时间是 T(n) = n + 100000。然后如果您开始查看 T(2n) / T(n) 形式的比率,您将看到形式的值
(2n + 100000) / (n + 100000) = 1 + n / (n + 100000)。
对于较小的 n 值,这将远远小于 2,尽管线性 function 的“规范标志”是它大约是 n 的两倍。 然而,随着 n 的增加,第二项越来越接近 1,最终比率接近 2。
至于可能导致这种情况的原因,可能是由于加载大型二进制文件而导致程序启动时间缓慢,或者解释器启动的开销,或者计算一些巨大表的成本等。但是没有看到代码和工作流程很难说是哪个。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.