关于数据规模与运行时间测试的疑问
来源:1-5 选择排序法的复杂度分析
rymrst
2021-11-27 13:55:42
请问老师,我在我的电脑进行选择排序法的性能测试,在十万和一百万的规模上,多次测试两组数据规模,结果时间上来说好像时间都是不止10倍,请问是因为在实际的测试过程中计算机的影响或者是系数以及非最高次数项带来的影响吗?
1回答
liuyubobobo
2021-11-27
首先,100 这个数量级是正常的。数据增长 10 倍,时间增长 100 倍,这就是 O(n^2) 的意思。因为 (10*n)^2 = 100*n^2。如果数据增长 10 倍,时间是 10 倍,这是 O(n) 的算法。
其次,你的截图表明,在你的环境下,数据规模从 10 万 到 100 万,时间增长了 200 倍。如果你确定你的程序是正确的,这样的结果在我看来也是正常的,不算离谱。
因为在高级语言上测试的程序性能,不完全是算法的性能,有很多其他因素的影响。比如操作系统的影响,比如 JVM 的影响,比如地址空间变大以后寻址的性能开销的改变,等等等等。整体,语言越底层,类似这样的影响会越小。
继续加油!:)
相似问题