多语言展示
当前在线:639今日阅读:175今日分享:29

Keil C51如何设置单个函数的优化等级

代码优化是程序设计中经常遇到的问题,一般分为速度优化和容量优化,大部分编译器都能支持优化等级设置,像Keil还同时支持容量优化和速度优化两种选项,可以在编译器的Option中直接选择。但有时我们需要对单个函数进行操作,这个就要考虑下加入OT命令了。
工具/原料

Keil4

方法/步骤
1

在Keil中新建一个C51工程,同时加入一个main.c的源程序文件。

2

在main.c当中输入下面的代码,其中testFun用于代码优化效果比较:int testFun(int in){ int i = 0; int j = 0; int k = 0; int result = 0; for(i = 0; i < 100; i ++) {  for(j = 0; j < 100; j ++)  {   for(k = 0; k < 100; k ++)   {    result = i * j * k * in;   }  } } return result;}void main(void){ testFun(123);}

3

点击菜单栏的编译按钮,在最下面会出现code=XXX,后面的XXX就是容量,这里code=125,编译的代码容量为125字节,这是默认的优化效果。

4

在testFun前加入#pragma OT(1),设置代码优化等级为1,那么函数testFun将以优化等级1进行重新优化。

5

再次点击菜单栏的编译按钮,编译完成后依然会在下面的Output窗口显示优化效果,容量变为code=190,即使用优化等级1,代码容量变大了,也就是优化等级1的容量较默认效果差。

6

将#pragma OT(1)改为#pragma OT(8),即将代码优化等级由1改为8,重新编译,可以看到代码容量变为了125字节,这个对于容量而言明显比1级优化的效果190字节好。

注意事项

默认OT命令是容量优化,如果要使用速度优化那么需要加SPEED后缀,即OT(1,SPEED)等

推荐信息