Profilage de code C++ sur Linux : comment trouver les goulots d'étranglement et accélérer le programme ?
Bonjour à tous ! J'écris en C++ depuis assez longtemps, mais je n'ai jamais sérieusement fait de profilage. Maintenant, je suis confronté à un problème : mon programme, qui traite de gros volumes de données, est trop lent. Il parse des fichiers CSV, effectue des calculs mathématiques et écrit les résultats dans un fichier binaire. Sur un ensemble de test de 500 Mo de données, l'exécution prend environ 4 minutes, alors que j'aimerais rester dans les 30 secondes.
Voici un exemple simplifié de ce que je fais :
```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];
// Quelques calculs
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() {