Avatar ·

在 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