首页 > 解决方案 > 将循环不变代码放在循环之外是一种好习惯吗?

问题描述

我正在学习循环不变代码运动作为编译器设计中代码优化的一种方法。使用的示例是:

for ( i=0; i<n; i++ )
buffer[i] = 10*i + x*x;

也可以优化为:

tmp = x*x
for (i=0; i<n; i++ )
buffer[i] = 10*i + tmp;

避免多次计算 x*x。

在课程示例中,这是由编译器后端处理的。

我的问题是,在源代码中明确地执行此操作通常是一种好习惯(并且在某些语言中比其他语言更有利)?

标签: performancecompiler-optimization

解决方案


推荐阅读