This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

关于只对某一段代码进行优化的问题

目前有一段数据处理的函数,需要通过编译时加O3参数优化,但是优化之后别的地方貌似会出问题

在网上看到可以像下面这样对某一段代码进行优化:

#pragma GCC push_options
#pragma GCC optimize("O3")

...

代码段

...
#pragma GCC pop_options

在GCC下写了个测试程序也是可以产生效果的,但是在CCS里会有提示:

#163-D unrecognized #pragma 

不知道这个该如何解决呢,或者有什么其他的办法可以只针对某一段代码进行优化呢

谢谢

  • 可以使用#pragma FUNCTION_OPTIONS ( func, "additional options" )指令,其中func为函数名,additional options为-03

  • 感谢回复,但是试了一下发现作用不大...我把一个文件里的所有函数都用这个声明了,但是执行的时间还是要比直接把这个文件的属性里加上O3的长很多

    没有加O3的时候,执行时间是29微秒

    加上O3之后,执行时间是10微秒

    用您的方法之后,执行时间是21微秒左右,还是太长了....

    我现在是在文件开始加上这样的内容:

    #pragma FUNCTION_OPTIONS ( test1, "-O3" )
    #pragma FUNCTION_OPTIONS ( test2, "-O3" )

    ...

    不知道这样用对不对呢?

    谢谢!

  • 其实我也没这么用过,只知道有这么个方法,出现这样的情况的原因我猜想可能跟两种方法优化的作用范围有关,勾选文件优化编译器是对整个文件进行优化,这样比单单告诉编译器对单个函数进行优化编译器在优化时可利用的信息可能会多一些。你或者试下#pragma FUNCTION_OPTIONS ( test1, "--opt_for_speed=5" )看看效果如何。

  • 这样改了之后好像没有效果了...和文件不加-O选项一样

    看来是没什么办法了,只好直接对文件设置参数了,不知道有没有能在文件里声明的对这个文件进行优化的选项呢

    总感觉直接到文件的属性里配置不太好...能在代码里完成就最好了...

    还是谢谢啦!

  • 据我所知,可能没有对整个文件进行优化设置的#pragma,如果你用命令行的方式编译工程,可能可以做到对单独文件使用单独的编译选项。

  • 1、你能找出你优化后出问题的代码?如果可以找出来,网上应该有不少可以解决这个问题的方法

    2、可不可以这样,将需要优化的代码单独提取到一个.c文件中,用CCS对该文件进行单独优化?