ZHCUAQ1F july 2015 – april 2023
此时,编译器已经为重新编译应用程序的命令行中指定的每个 C/C++ 源文件生成了一个 CSV 文件。每个 CSV 文件都包含有关 C/C++ 源文件中定义的每个函数中所有调用点的加权调用图信息。
程序缓存布局工具 clt6x 将这些 CSV 文件中的所有加权调用图信息收集到单个合并的加权调用图中。对加权调用图进行处理生成首选函数顺序命令文件。将该文件输入链接器中以指导应用程序源文件中定义的函数的放置位置。clt6x 的语法如下所示:
clt6x *.csv -o forder.cmd |
clt6x 的输出是一个包含一系列 --preferred_order=function specification 选项的文本文件。默认情况下,输出文件的名称为 forder.cmd,但您可以使用 -o 选项指定自己的文件名。函数在此文件中出现的顺序是由 clt6x 确定的首选函数顺序。
通常,在首选函数顺序列表中,一个函数与另一个函数的接近程度反映了这两个函数相互调用的频率。如果列表中的两个函数彼此非常接近,则链接器会将此情况解释为建议将这两个函数放置在非常靠近的位置。当两个函数同时处于活动状态时,放在一起的函数不太可能在运行时出现创建缓存冲突缺失。总体效果应该是程序指令缓存效率和性能都得到提高。