Сокращение времени выполнения кода с использованием компилятора CLANG / LLVM - PullRequest
2 голосов
/ 17 февраля 2011

Ну ... Когда я искал хороший компилятор, я наткнулся на clang / LLVM. Этот компилятор дает мне тот же результат, что и другие компиляторы, такие как icc, pgi. Но проблема в том, что на этом компиляторе очень мало учебников ... Пожалуйста, дайте мне знать, где я могу найти учебники по компилятору clang.

Примечание: Я скомпилировал мой код c, используя следующие флаги clang -O3 -mfpmath=sse file.c

Ответы [ 2 ]

8 голосов
/ 23 февраля 2011

Clang (компилятор командной строки) принимает параметры, совместимые с gcc, но принимает и игнорирует множество флагов, которые принимает GCC (например, -mfpmath = sse). Мы стремимся генерировать хороший код из коробки. Существуют некоторые флаги, которые позволяют clang нарушать языковые стандарты, которые могут быть полезны в некоторых сценариях, например, -ffast-math.

Если вы ищете хорошую производительность, я настоятельно рекомендую поэкспериментировать с оптимизацией по времени компоновки, которая позволяет clang оптимизировать все исходные файлы вашего приложения. В зависимости от того, на какой платформе вы работаете, это включается передачей -O4 компилятору. Если вы используете Linux, вам нужно использовать компоновщик «gold» (см. http://llvm.org/docs/GoldPlugin.html). Если вы работаете на Mac, он должен «просто работать» с любой последней версией Xcode.

0 голосов
/ 17 февраля 2011

Clang - это не компилятор, это просто оболочка компилятора LLVM.Поэтому, когда вы вызываете clang, он анализирует файл c / c ++, но оптимизация и генерация кода обрабатываются в самом LLVM.

Здесь вы можете найти документацию по параметрам оптимизации и анализа LLVM: http://llvm.org/docs/Passes.html

Полная документация здесь http://llvm.org/docs/

Здесь также перечислены полезные опции http://linux.die.net/man/1/llvmc (я полагаю, что clang также примет большинство из них)

...