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.

[参考译文] TM4C1233H6PGE:寄存器优化的性能问题

Guru**** 2380860 points
Other Parts Discussed in Thread: TM4C1233H6PGE
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1316374/tm4c1233h6pge-performance-issue-with-register-optimization

器件型号:TM4C1233H6PGE
大家好!

遇到了代码执行时间优化级别相关的 TM4C1233H6PGE 电路板意外的性能问题

规范
GPIO_SetMasterPin (bool 高电平)
{
GPIOPinTypeGPIOOutput (GPIO_PORTM_BASEGPIO_PIN_5);
IF (高电平) GPIOPinWrite (GPIO_PORTM_BASEGPIO_PIN_5、GPIO_PIN_5);
否则 GPIOPinWrite (GPIO_PORTM_BASEGPIO_PIN_50x0);

我的观察结果

关闭优化后代码将大约4秒内执行
-启用优化级别0 (寄存器优化)时,执行时间增加大约7
-优化增加级别1和级别2会使执行时间减少4

令人困惑的是、与根本没有优化相比、优化级别0会导致性能降低。 任何人都可以提供有关为什么会发生这种情况的见解或建议吗?
优化级别0是否有某特定方面可能导致减速

非常感谢您提供任何帮助或指导

谢谢
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    Unknown 说:
    优化关闭的情况下代码将大约4秒内执行

     首先、您测得的时间没有意义。 您说的是实时4秒? M4F 处理器在频率为120MHz 时的性能约为150MIPS。 从这个角度来看、在4秒内、一个120MHz 的处理器可以执行  数亿条指令。 您的  GPIO_SetMasterPin 应该只需几个周期即可完成。 您可以使用反汇编窗口查看汇编代码、我希望它需要数十个 CPU 周期 、完成时间应该少于我们、而不是秒。

     至于 off 与0之间的优化级别、我可以让我们的编译器专家提供反馈。 但我建议您首先比较 OFF 和0之间的反汇编、看看有什么区别。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    抱歉、在此之前没有说明、我的程序的总运行时间大约为4秒、直到执行此代码为止。 但是、当我启用优化器级别0时、时间会增加到7秒。 我通过监测 PM5的电压变化来测量这种时间差。 此外、 最好 从编译器专家处获得帮助。
    我以前从未做过反汇编比较。 是否应该寻找可以 增加执行 时间的额外操作?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    添加编译器选项 -- src_interlist 。  这会使编译器保留自动生成的汇编文件。  该文件与源文件具有相同的名称、但扩展名更改为 .asm 。  以不同的优化级别生成文件、然后检查汇编文件。  我想您能理解这一点的区别。  如果你没有,那么再次张贴在这里。

    谢谢。此致、

    -乔治