根据算法的时间复杂度计算模拟运行时间

时间:2017-05-04 10:36:30

标签: algorithm time-complexity simulation timing

如何根据时间复杂度计算算法的模拟运行时间?例如,如果我们知道算法的时间复杂度是O(n),那么它在离散事件模拟器中的运行时间是多少?我相信模拟器需要考虑运行算法的节点的容量,但我们如何使用它们来计算运行时间。

在模拟器中,我有一个广播消息的中心节点。广播消息的每个接收节点处理如下消息:

handleMessage(){

   processMessage();

   replyToCentralNode
}

在模拟器中,如何计算processMessage的执行时间?我可以得到像10s或0.1ms的东西吗?

1 个答案:

答案 0 :(得分:0)

如果没有更多信息,您可以为算法复杂度O(f(N))做的最好的事情就是评估C.f(N)C是机器相关常量。为了获得真实的C,您可以估算(或基准测试)真实机器上的运行时间,对于某些N(不是太小,不太大)。

对于给定的架构,C将与时钟速度大致成比例。在架构和世代之间,C将会因此而波动。

您也可以使用机器的MIP或FLOP规格,但总是以相对的方式:在具有已知* Ps的机器上获得真实的运行时间,并按比例推断另一个。

但这一切都非常粗糙。请记住,固定N的运行时间的方差可能很大,通常f(N)是一个不好的近似值/上限。