首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在优化级别3的英特尔编译器上创建方法

在优化级别3的英特尔编译器上创建方法
EN

Stack Overflow用户
提问于 2022-05-09 15:19:17
回答 1查看 50关注 0票数 0

使用一个+95%的C++ 11代码(其余的代码是C),这是通常使用的编译w/优化级别3,我们分析了它,发现了一种非常耗时的方法。

玩具代码:

代码语言:javascript
运行
复制
myClass::mainMethod()
{
    // do stuff here
    / ...
    // do more stuff here
    / ...
}

我们把它的内部部分分割成其他方法,以便精确地测量出问题所在。

代码语言:javascript
运行
复制
myClass::mainMethod()
{
    this->auxiliaryMethod1();
    this->auxiliaryMethod2();
}
myClass::auxiliaryMethod1()
{
    // do stuff here
    // ...
}
myClass::auxiliaryMethod2()
{
    // do more stuff here
    // ...
}

但是(英特尔)编译器足够聪明,能够注意到这仅仅是一种用法,并将它组装回一个方法中。

除了这两个明显的其他可能的解决方案,即编译而没有优化(不切实际)和添加其他虚假用法(一个浪费的过程),是否有一个英特尔编译器标志,以表明“请明确编码到类”?

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-05-10 14:53:49

正如注释所建议的那样,使用属性noinline进行拆分是很有用的。

代码语言:javascript
运行
复制
void __attribute__((noinline)) myClass::mainMethod()
{
    this->auxiliaryMethod1();
    this->auxiliaryMethod2();
}
void __attribute__((noinline)) myClass::auxiliaryMethod1()
{
    // do stuff here
    // ...
}
void __attribute__((noinline)) myClass::auxiliaryMethod2()
{
    // do more stuff here
    // ...
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72174397

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档