问题
1/当我想使用clang
编译器进行评测时,我应该期待什么output
?
2/如何为使用clang
作为编译器的C++ project
执行profiling
and
CMake '作为构建工具?
重新分级分析我使用的内容
1/首先,我使用valgrind
工具检查了cpp executable
的性能。
2/后来,我使用了g++ compiler
并浏览了this,在那里我看到了使用gprof
执行分析的步骤。使用gprof
的东西我是通过命令行完成的。从这个源代码中,我了解到gprof
可以提供一个文本文件的输出(称为analysis.txt
),其中写入了函数调用编号、执行时间等。
到目前为止我的目标和采取的方法
- 现在,在我的项目中,我只能使用
clang
编译器和CMake
构建工具,我已经阅读了clang文档,主要是这个和这个。 - 在第一次试验中,我将两个
cpp file
放在同一个目录中(这显然不是所需的项目结构),并遵循以下命令来查看如何执行插装以及outcome
将执行什么操作
clang++-10 -fprofile-instr-generate -fcoverage-mapping test_gprof.cpp test_gprof_new.cpp -o code_coverage
LLVM_PROFILE_FILE="code_coverage.profraw" ./code_coverage
llvm-profdata merge -sparse code_coverage.profraw -o code_coverage.profdata
llvm-cov show -show-line-counts-or-regions --show-regions=1 --show-expansions ./code_coverage -instr-profile=code_coverage.profdata
llvm-cov report ./code_coverage -instr-profile=code_coverage.profdata
我真的不确定我是否遵循了正确的步骤,但我已经期望看到一些analysis
统计数据。
- 最后,我看到了一个我什么都不懂的
report
。在这里,我的第一个问题出现在脑海中,当我做profiling
时,我到底能期待什么? - 而且,我不知道如何在
CMake
中为clang编译器激活这个分析过程。
clang_profile_cmake/
├── CMakeLists.txt
├── example
│ └── main.cpp
├── include
│ ├── test_gprof.h
│ └── test_gprof_new.h
├── README.md
└── src
├── test_gprof.cpp
└── test_gprof_new.cpp
最近的搜索(CMake、Clang编译器仍无法生成任何性能分析数据)
- 我必须将LLVM添加到我的项目中。
- 我正在使用的CMakeLists.txt file可从此处获得
- 不了解如何/在何处/在哪个步骤中我可以启用性能分析标志(
-fprofile-instr-generate -fcoverage-mapping
、LLVM_PROFILE_FILE
、llvm-profdata merge
...等)
1条答案
按热度按时间fwzugrvs1#
我已经发现,我必须学习更多如何处理
CMake
,因为总的答案就在我面前,现在我刚刚在CMake中添加了这些命令。clang++-10 -fprofile-instr-generate -fcoverage-mapping test_gprof.cpp test_gprof_new.cpp -o code_coverage
个以下是当前的CMake文件
要构建或查看概要分析的步骤,可以使用以下脚本。在我的示例中,我将输出可执行文件名设置为
clang_prof_exec
。