从事移动应用开发,经常会用到模拟器(Simulator)和仿真器(Emulator),本篇将总结对比模拟器(Simulator)和仿真器(Emulator)的异同。
先看看百科的解释:
模拟器: 计算机模拟(简称sim)是利用计算机进行模拟的方法。利用计算机软件开发出的模拟器,可以进行故障树分析、测试VLSI逻辑设计等复杂的模拟任务。在优化领域,物理过程的模拟经常与演化计算一同用于优化控制策略。计算机模拟器中有一种特殊类型:计算机架构模拟器,用以在一台计算机上模拟另一台指令不兼容或者体系不同的计算机。阿兰·图灵曾提出:(不同体系的)机器A或机器B不考虑硬件和速度的限制,在理论上可以用指令实现互相模仿(即图灵机)。然而在现实中,速度和硬件是必须考虑的.(原文字来自baidu百科)
仿真器: 仿真器(emulator)以某一系统复现另一系统的功能。与计算机模拟(Computer Simulation)的区别在于,仿真器致力于模仿系统的外在表现、行为,而不是模拟系统的抽象模型。(原文字来自baidu百科)
以上概念定义较为抽象,从移动应用开发来看,两者简单理解如下:
模拟器是尝试模拟真实设备的应用运行特征,主要模拟设备的功能和指令系统,例如显示,声音等特征的模拟;
仿真器是尝试模拟真实设备的内部运行特征,不仅仅模拟应用运行特征,而且还提供模拟硬件特征;
我们可以用一个简单的实例理解两者的异同,例如我们设计有一个计算器移动应用,
如果使用模拟器运行该应用,模拟器仅模拟UI和输入键盘显示,当用户点击输入键时,模拟器会响应用户交互并显示结果。
如果使用仿真器运行该应用,仿真器首先会根据用户设置,载入不同的固件系统,然后将应用转换为设备所具备的微处理器能够运行的代码,其整个过程如同运行在真实设备一样。
看完上面的实例,大家应该有一个基本的概念,仿真器比模拟器更接近实际设备运行环境。
作为结论,在实际项目开发中,如果从事简单功能性测试,使用模拟器可以满足需求。而如果测试较为复杂的应用特征,例如,应用性能,启动速度等,推荐使用仿真器。当然,尽管仿真器最终渲染效果和性能都很好,真实设备测试还是必须的。