【发布时间】:2021-08-01 05:48:49
【问题描述】:
我们正在尝试重构解释器循环 SWI-Prolog。这是一个巨大的功能,使用 GCC 的标签地址来引用虚拟机指令。该函数有许多 VM 寄存器变量。事实证明,一个人是否写会有所不同
PL_next_solution(qid_t qid)
{ type1 v1;
type2 v2;
// 13 in total
// lots of code
}
或
PL_next_solution(qid_t qid)
{ struct
{ type1 v1;
type2 v2;
// 13 in total
} registers;
// lots of code
}
如果没有配置文件引导优化,最终程序的性能差异很小 (
【问题讨论】:
-
有什么区别?
-
对不起,结果程序的性能
-
运行时的性能?还是内存消耗?
-
registers变量的地址被占用了吗?并通过某个地方?the difference is about 20%erm,哪个更快? -
我认为需要更多代码