Avatar ·

تحليل أداء كود C++ على Linux: كيفية إيجاد نقاط الضعف؟

مرحبًا أيها الزملاء! أكتب تطبيقًا عالي الحمل بلغة C++ على Linux. واجهت مشكلة: البرنامج يعمل بشكل أبطأ من المتوقع، لكنني لا أستطيع فهم أين يتم فقدان الأداء بالضبط. جربت إدراج قياسات زمنية يدوية باستخدام 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