Perfilando código C++ no Linux: como encontrar gargalos e acelerar o programa?
Olá a todos! Escrevo em C++ há bastante tempo, mas nunca me dediquei seriamente ao profiling. Agora me deparei com um problema: meu programa, que processa grandes volumes de dados, está muito lento. Ele faz parsing de arquivos CSV, realiza alguns cálculos matemáticos e grava os resultados em um arquivo binário. Em um conjunto de teste de 500 MB de dados, a execução leva cerca de 4 minutos, mas gostaria de reduzir para 30 segundos.
Aqui está um exemplo simplificado do que estou fazendo:
```cpp
#include
#include
#include
#include
std::vector processData(const std::vector& input) {
std::vector result;
result.reserve(input.size());
for (size_t i = 0; i < input.size(); ++i) {
double val = input[i];
// Alguns cálculos
for (int j = 0; j < 1000; ++j) {
val = std::sin(val * 1.5) + std::cos(val * 0.7);
}
result.push_back(val);
}
return result;
}
int main() {