将频繁执行的代码布局到连续空间中
【说明】 频繁使用的指令,空间上组织在一起,以降低指令I-Cache Miss的概率。
【原理】 频繁访问的指令组织在一起,避免了指令Cache的换入换出,提升了指令Cache命中的概率。
【注意事项】 基于频繁执行的代码进行调整,可能对原有程序的可读性、可维护性带来挑战,并需要基于实际性能场景进行持续维护,在调整之前需明确其风险。
【案例】
优化前:
void DemoFunc()
{
if(condition(...)) {
xxx; //大量频繁访问的代码
} else {
xxx; //大量非频繁访问的代码
}
}
说明:频繁访问和非频繁访问的代码交织在一起,降低了指令Cache的利用率。
优化后:
void ExceptionHandle()
{
xxx; //大量非频繁访问的代码
}
void DemoFunc()
{
if(condition(...)) {
xxx; //大量频繁访问的代码
} else {
ExceptionHandle();
}
}
说明:将大量非频繁访问的代码集中在指定函数,指定文件中,链接阶段将非频繁访问的代码组织在一起。
父主题: 内存