程序设计与性能分析
1. 程序解释系统与即时编译器
在程序执行的过程中,存在着不同的执行机制。程序解释系统是其中一种,解释器处于程序和机器之间,它每次翻译程序的一条语句,可能会也可能不会生成明确的代码来表示该语句。由于解释器在任何给定时间只翻译程序的一小部分,所以只需少量内存来保存程序的中间表示。在很多情况下,Forth 程序加上 Forth 解释器比等效的本地机器代码还要小。
即时编译器(JIT)多年来一直被使用,如今在 Java 环境中广为人知。JIT 编译器介于解释器和独立编译器之间,它为程序的各个部分生成可执行代码段,但仅在知道某部分程序(如函数)将被执行时才对其进行编译。与解释器不同的是,JIT 编译器会保存编译后的代码版本,下次执行时无需重新翻译,这样能节省执行时间开销,但会使用更多内存来存储中间表示。JIT 编译器通常直接生成机器代码,而不是构建像 CDFG 这样的中间程序表示数据结构,并且与独立编译器相比,它通常只进行简单的优化。
2. 程序级性能分析的重要性
在嵌入式系统中,由于需要实时执行功能,我们经常需要了解程序的运行速度。分析程序执行时间的技术对于分析功耗等特性也很有帮助。需要注意的是,CPU 性能和程序性能的评判方式不同,CPU 时钟速率并不是衡量程序性能的可靠指标。CPU 快速执行程序的一部分并不意味着它能以我们期望的速率执行整个程序。CPU 流水线和缓存就像观察程序的窗口,程序的总执行时间是一个全局属性,我们需要查看执行路径,而执行路径通常比流水线和缓存窗口长得多。
然而,精确确定程序的执行时间在实践中是困难的,原因如下:
- 输入数据值的影响 :程序的执行时
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



