首页 > 解决方案 > 有没有办法在mac上启用本地clang ++的优化?

问题描述

这个问题来自那个帖子

似乎在线编译器在优化时丢弃了这个功能。

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 上编译这段代码

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

./a.out
409

似乎没有优化。

这篇文章文档提供了一些关于 clang 优化的信息。

有没有办法为clang++启用优化,使本地输出接近在线输出。

标签: c++clang

解决方案


clang++采用与 基本相同的开关clang,您自己找到的链接中完全涵盖了这些开关。最明显的优化是-Ofast,但考虑到这种优化是多么简单和明显,基本上任何级别的优化都可能触发它,-O3, -02, -Os, 甚至-O1。确切的行为因编译器版本而异,因此您可以尝试确定消除版本循环所需的最低级别。


推荐阅读