Есть ли способ включить оптимизацию для локального Clang ++ на Mac? - PullRequest
0 голосов
/ 12 июня 2019

этот вопрос выводится из этой записи .

похоже, что онлайн-компилятор отказывается от этой функции при оптимизации.

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

кажется без оптимизации.

this post и doc предоставляют некоторую информацию об оптимизации clang.

есть ли способ включить оптимизацию для clang ++, чтобы локальный вывод был близок к онлайн-выводу.

Ответы [ 2 ]

1 голос
/ 12 июня 2019

эта команда может получить то, что вы хотите.

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

-O, эквивалентно -O2,это один из уровней оптимизации, предоставляемых clang++.

на самом деле, другие уровни также получают то, что вы хотите в данном конкретном случае.

1 голос
/ 12 июня 2019

clang++ использует в основном те же ключи, что и clang, которые полностью описаны в ссылках, которые вы нашли самостоятельно. Очевидным для максимальной оптимизации будет -Ofast, но, учитывая, насколько проста и очевидна эта оптимизация, в принципе, любой уровень оптимизации может вызвать ее, -O3, -02, -Os, даже -O1. Точное поведение зависит от версии компилятора, поэтому вы можете поэкспериментировать, чтобы определить минимальный уровень, необходимый для устранения цикла в вашей версии.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...