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.

[参考译文] ARM-CGT:ARM-CGT v20.2.7 链接 (armcl) 比 v18 慢

Guru**** 2826755 points

Other Parts Discussed in Thread: ARM-CGT

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1603754/arm-cgt-arm-cgt-v20-2-7-linkage-armcl-is-slower-than-v18

器件型号: ARM-CGT

我们的项目使用 CCS/ARM-CGT 开发 AM335* Sitara 处理器的固件。 我们最近将工具链从 v18.12 升级到 v20.2.7、初始构建时间大幅增加。 坚持使用旧工具链是可以的,但我想知道背后发生了什么,如果可能的话,使用最新版本。  

CCSv9 + CGT v18 =电流 (~60min)
CCSv9 + CGT v20 =在链路阶段发生时长残桩
CCSv12 + CGT v20 =在链路阶段发生时长残桩
CCSv12 + CGT v18 =~60min

根据我们在上面的观察、我怀疑 v20 链路阶段发生了一些变化。 代码优化被禁用(在开发期间)、并且项目设置保持不变。  

有人有线索吗?  

 

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

    我在编译器开发团队中有一个问题。  我希望明天能回来。

    谢谢。此致、

    -乔治

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

    在版本 18.12.x.LTS 和 20.2.x.LTS 之间、我们注意到没有会导致链接器速度变慢的更改。  因此、我们需要一个允许我们进行调查的测试用例。   

    因为你的构建,即使与 v18,需要一个小时的链接,我认为它是一个非常大的构建,有大量的文件和库。  我想看看我们是否已经有使用大量文件的测试用例。  如果这不能解决问题、我们可能需要向您索取一个测试案例。

    谢谢。此致、

    -乔治

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

    您好、George

    感谢您的调查。  
    以下是一些可能有帮助的补充信息。

    笔记本电脑规格:
    Windows 11 Pro、CPU:酷睿 i7 1370P、RAM:32GB、SSD:NVMe SSD
    防病毒:已启用

    编程:
    ELF 文件大小(无选件):168MB
    ELF 文件大小(带可选):122MB
    二进制文件大小(不可选):1.6MB
    二进制文件大小(可选):0.8MB

    1) 我们的项目是独一无二的,因为我们使用 C++数学库 (Eigen)。
    我相信这会导致长时间的编译和优化。  CDT 构建控制台会暂停一段时间、 显示 “building file:xxx“。
    我们使用 C 宏生成大量函数 — 并非所有函数都已使用,而是由链接器从固件中删除这些函数。  

    2) 优化算法为选项:-O3 --opt_for-speed=5(仅适用于与数学相关的文件)

    3) 在第一篇文章中,我写了“在链路阶段长时间乱搞“——测量的时间大约是 100 分钟。
      可能时间因机器工作负载而异。 我没有反复测试,因为它需要时间。

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

    请参阅 tiarmclang 在线手册第一页底部附近的注释。  它说明 tiarmclang 会取代 armcl。  仅错误修复应用于 armcl。  但这种情况不是错误。  这是性能问题。  即使我们找到了根本原因、也不太可能解决。    

    考虑到所有的事情,我认为继续解决这个问题是没有道理的。 你很高兴不同意,并请我尝试无论如何。  如果是、我需要您提供一个测试用例。  您会考虑这样吗?

    谢谢。此致、

    -乔治

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

    你(们)好

    好的、我了解情况。 因为我们还没有准备好全面解决这个问题、并且可能不会很快发生;因此我不会请求进一步的支持。  

    我知道 tiarmclang 将替换 armcl、但它不支持 Cortex-A。 我在这里寻求帮助 、因为如果可以修复、我们可以放心地切换到维护的工具集、并继续在新产品中使用工业 GHz 处理器。  

    但无论如何、 非常感谢您的答复。

    此致、
    Yohei