如何从理论上计算出某些方法的执行时间?

Eng*_*uad 4 java theory math timing execution-time

假设我有"堆排序"方法,其复杂时间为O(nlogn).当我在1000000输入上测量此方法的执行时间时,我得到了0.375770669秒.如何从理论上计算出该方法的执行时间?

Ste*_*n C 5

理论上没有办法计算这个.这取决于许多因素,例如:

  • java版和major/minor/patch版本号.
  • 各种JVM调优参数; 例如,堆有多大.
  • 您的硬件平台; CPU,内存大小,甚至主板和时钟速度.
  • 机器上的负载; 即它还在做什么.
  • CPU散热片上的绒毛量.严重的是......如果处理器芯片太热,时钟速度可能会降低,主板振荡器时钟速度也会(有点)温度敏感.

即使您了解所有这些,计算本质上也是Java JIT编译器和硬件执行的取证模拟.考虑起来太复杂了.

在"速度"的理论测量方面,你可以合理地期望实现的最好的是在源代码级别计算抽象操作.即使向下钻取和计算执行的字节码也可能难以实用.

我想比较测量的和理论的.

基本上,你不能.