我写了一个模拟模块。为了测量延迟,我使用这个:
simTime().dbl() - tempLinkLayerFrame->getCreationTime().dbl();
这是正确的方法吗?如果没有,请建议我或示例代码将非常有用。
此外,simTime()
延迟是微观方面的实际延迟
我可以在研究论文中写几秒钟?或者我需要
扩大规模?
此外,我发现通道数据速率和通道延迟对链路延迟没有影响,相反,如果我改变延迟变化的触发持续时间。例如
timer = new cMessage("SelfTimer");
scheduleAt(simTime() + 0.000000000249, timer);
如果这不是递归触发简单模块的正确方法,那么请建议一个。
答案 0 :(得分:2)
假设simTime
和getCreationTime
都使用OMNeT ++类来表示时间,您可以直接对它们进行操作,因为该类会使相关运算符超载。根据手册所说的,我建议使用信号进行测量(例如emit(latencySignal, simTime() - tempLinkLayerFrame->getCreationTime());
)。
simTime()
以秒为单位,而不是微秒。
关于您的上一个问题,如果您将该代码用于所有节点,并且您在模拟中同时启动所有这些节点,则此代码会出现问题。在这种情况下,您将完全同步所有节点,这意味着您只能在第一次传输中看到冲突。因此,在模拟开始时为每个新调度的消息添加随机抖动可能是个好主意。