高效仿真语言开发方法及特性研究
1. 快速执行的仿真原语(P5)
在 DMX 中,通过对基本语言(BL)仿真原语的高效实现,可确保运行时的高效执行。这部分工作会委托给选定的仿真目标语言。部分目标语言已存在编译器的高效实现,例如 SLX。通过编写从 BL 到 SLX 的映射,不仅能实现快速执行,还能在定义特定领域扩展时提升表达能力。而且,由于扩展的语义是基于 BL 的相同概念定义的,所以扩展也能受益于快速执行。
Java 编写的仿真库也有类似情况,不过其运行时效率可能不如 SLX。例如 DESMO - J,它的协程实现基于 Java 线程,执行速度较慢。但也有更高效的库,如在网络仿真社区中著名的 JiST。JiST 通过 Java 字节码重写实现协程,比 DESMO - J 更快。实现从 BL 到 JiST 的映射(类似于已为 DESMO - J 实现的映射),也能得到一个可行的模拟器。
在一个实验中,使用包含两个计数器(计数上限为 10⁶)的示例模型,测量了 SLX 和 Xtext/DESMO - J 的执行时间。实验环境为 Intel Core i7 2.6 GHz 处理器、8 GB 主内存和固态硬盘。结果显示,SLX 仅需 0.06 秒完成仿真,而 Xtext/DESMO - J 则需要 186 秒,使用 DESMO - J 的对应 DMX 模型执行时间为 144 秒。基于 Xtext 的状态机语言(SML)执行时间略有增加,可能是因为处理事件的状态机语义采用了面向对象的方式,遵循状态机模式实现;而基于 DMX 的 SML 语义是通过一些简单的 if 语句确定当前状态来定义的。
此外,通过定义从 BL 到 SLX 的转换,DMX 的执行时间可以轻松达到与纯