Avatar ·

لماذا قراءة الأسطر من stdin في C++ أبطأ منها في Python؟

مرحبًا بالجميع! أنا مطور C++ مبتدئ، انتقلت من Python، وواجهت مشكلة غير متوقعة. في Python، كنت غالبًا ما أحل مشكلات تتطلب قراءة كميات كبيرة من البيانات من الإدخال القياسي (على سبيل المثال، 10 ملايين سطر). كان الكود في Python باستخدام `sys.stdin.readline()` يعمل بسرعة كبيرة. ولكن عندما حاولت كتابة كود مماثل في C++ باستخدام `std::getline` و `std::cin`، كان الأداء أسوأ بعدة مرات. كتبت اختبار أداء بسيط: أقرأ جميع الأسطر من stdin وأحسب عددها فقط. هذا هو الكود في C++ الذي أستخدمه: ```cpp #include #include int main() { std::ios::sync_with_stdio(false); std::cin.tie(nullptr); std::string line; int count = 0; while (std::getline(std::cin, line)) { ++count; } std::cout << count << std::endl; return 0; } ``` حتى مع تعطيل المزامنة مع stdio (والذي، كما قرأت، يجب أن يسرع العمل)، فإن برنامج C++ يعمل أ