لماذا قراءة الأسطر من stdin في C++ أبطأ منها في Python؟
مرحبًا بالجميع! أنا مطور C++ مبتدئ، وقد واجهت مشكلة غريبة. كنت أحل مسألة على Codeforces حيث كنت بحاجة لقراءة 10 ملايين عدد صحيح من الإدخال القياسي. كتبت كودًا في C++ باستخدام std::cin و std::getline، لكن البرنامج كان يعمل ببطء شديد — حوالي 30 ثانية. قررت للتحقق كتابة سكريبت مشابه في Python باستخدام input() العادي و sys.stdin.read().split()، وتم تنفيذه في 3-4 ثوانٍ فقط! كيف يكون هذا ممكنًا؟ ففي النهاية، C++ تُعتبر لغة أكثر أداءً.
إليك كودي في C++:
```cpp
#include
#include
#include
int main() {
std::ios::sync_with_stdio(false);
std::cin.tie(nullptr);
std::vector numbers;
std::string line;
while (std::getline(std::cin, line)) {
// نوزع الأعداد من السطر
size_t pos = 0;
while (pos < line.size()) {
size_t next = line.find(' ', pos);
if (next == std::string::npos) next = line.size();