主要内容

将函数调用折叠到常量中

这个例子展示了如何使用coder.const.代码生成器将表达式或函数调用折叠到coder.const语句转换为生成代码中的常量。因为生成的代码不必每次都计算表达式或调用函数,这种优化减少了生成代码的执行时间。

写一个函数AddShift它需要一个输入转变并把它加到向量的元素上。这个向量由前10个自然数的平方组成。AddShift生成这个向量。

函数y = AddShift(转变)% # codegeny =(1:10)。^ 2 +转变;

生成的代码AddShift使用codegen命令。打开代码生成报告。

codegen配置:自由-launchreportAddShiftarg游戏0

代码生成器生成用于创建向量的代码。它增加了转变在创建向量时,向向量的每个元素转换。的定义AddShift生成的代码如下所示:

void AddShift(double Shift, double y[10]) {int k;For (k = 0;k < 10;k + +) {y [k] = (double) ((1 + k) * (1 + k)) +转变;}}

替换表达式(1:10)。^ 2coder.const((1:10) ^ 2)。,然后生成代码AddShift再次使用codegen命令。打开代码生成报告。

codegen配置:自由-launchreportAddShiftarg游戏0

代码生成器创建包含前10个自然数平方的向量。在生成的代码中,它添加了转变这个向量的每个元素。的定义AddShift生成的代码如下所示:

void AddShift(double Shift, double y[10]) {int i;Static const signed char iv[10] = {1, 4, 9, 16, 25, 36, 49, 64, 81, 100};For (i = 0;我< 10;i++) {y[i] = (double)iv[i] + Shift;}}

另请参阅

相关的话题