java - 估算java程序在程序结束前的执行时间

标签 java time-complexity execution-time

我想知道如何在程序结束之前估计特定机器上java程序的总运行时间?我需要知道需要多少时间,以便我可以宣布进展情况。

仅供引用,我的程序的主要算法需要 O(n^3) 时间复杂度。假设n= 100000,在我的机器上运行这个程序需要多少时间? (双英特尔至强 e2650)

问候。

最佳答案

理论上,1GHz 的计算能力应该会产生大约 10 亿次简单操作。然而,找到简单操作的数量并不总是那么容易。即使您知道给定算法的时间复杂度,这也是不够的 - 您还需要知道常数因子。理论上,可以有一个线性算法,需要几秒钟的时间来计算大小为 10000 的输入(并且存在一些类似的算法 - 例如线性预计算时间 RMQ)。

但是,您所知道的是,需要按 100000^3 运算的顺序执行 O(n^3) 的操作。因此,即使您的常量约为1/10^6(这是极不可能的),此计算也将花费大量时间。

我相信@ArturMalinowski 的提议是解决您的问题的正确方法。如果您对预先已知的某些序列的算法性能进行基准测试,例如{32,64,128,...} 或按照他的建议{1,10,100,...}。这样您就能够以相对较高的精度确定常数因子。

关于java - 估算java程序在程序结束前的执行时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23504490/

相关文章:

algorithm - 具有更新数组的数组的区间树

php - 如何增加php中的最大执行时间

java - 数据报包接收缓冲区大小-java

java - 将 Maven 项目作为依赖项添加到 Android Studio 应用程序

algorithm - 有界平方和算法

C++ std::map 与动态数组

c - C 函数的平均执行时间不稳定

php - Yii2 无法在 Controller Action 中注册关机功能

java - 关于 JPEG MCU 的详细信息

java - mybatis:将映射器接口(interface)与 XML 配置一起用于全局参数