在 Linux 上对 C++ 代码进行性能分析:如何找到瓶颈?
大家好!我正在 Linux 上编写一个高负载的 C++ 应用程序。遇到了一个问题:程序运行速度比预期慢,但我无法确定性能损失在哪里。我尝试过使用
std::chrono 手动插入时间测量,但这让代码变得混乱,而且无法提供完整的画面。
下面是我的代码的简化示例,它处理一个大数据集:
#include <vector>
#include <algorithm>
#include <iostream>
void processData(const std::vector<int>& data) {
std::vector<int> result;
for (size_t i = 0; i < data.size(); ++i) {
if (data[i] % 2 == 0) {
result.push_back(data[i] * data[i]);
}
}
// 然后是复杂计算...
std::sort(result.begin(), result.end());
for (auto& v : result) {
v = v % 1000;
}
}
int main() {
std::vector<int> data(1000000);
std::generate(data.begin(), data.end(), std::ran