有没有一种方法可以在Mac上启用本地clang ++的优化?

时间:2019-06-12 00:26:10

标签: c++ clang

此问题源自post

在线compiler似乎在优化时就放弃了此功能。

void functiona()
{
    long long number = 0;
    // long long problemSize = 100000000000;
    long long problemSize = 10;

    for( long long i = 0; i < problemSize; ++i )
    {
       for(long long j = 0; j < problemSize; j++)
       {
           for(long long k = 0; k < problemSize; k++)
           {
               for(long long l = 0; l < problemSize; l++)
               {
                   for(long long l = 0; l < problemSize; l++)
                   {
                       number++;
                       number--;
                   }
               }
            }
        }
    }
}

在我的本地Mac上编译this piece of code

clang++ -std=c++11 -stdlib=libc++ benchmark.cpp

./a.out
409

似乎没有优化。

postdoc提供了一些有关c优化的信息。

有一种方法可以对clang ++进行优化,以使本地输出接近在线输出。

2 个答案:

答案 0 :(得分:1)

clang++的开关与clang基本上相同,这些链接在您自己找到的链接中有完整介绍。最明显的最大优化方案是-Ofast,但鉴于这种优化多么简单明了,基本上任何级别的优化都可能触发它,-O3-02,{{1 }},甚至-Os。确切的行为会因编译器版本而异,因此您可以尝试确定消除版本循环所需的最低级别。

答案 1 :(得分:1)

此命令可能会得到您想要的。

clang ++ -std = c ++ 11 -stdlib = libc ++ -O基准.cpp

-O-O2等效,是clang++提供的优化级别之一。

实际上,在这种特定情况下,其他级别也可以满足您的需求。

相关问题