اختبار الأداء 2025: جافا سكريبت (Node.js) ضد المنافسين — من الأسرع؟
ينقسم مجتمع المطورين تقليديًا إلى معسكرين: يعتبر البعض Node.js لغة "لعبة" بطيئة، بينما يراه الآخرون معيارًا صناعيًا للواجهة الخلفية. لتبديد الخرافات، أجرى فريق PythonLib سلسلة من الاختبارات في بداية عام 2025. شارك في السباق: Node.js 22 وGo 1.23 وRust 1.80 وPython 3.13 وJava 21 (GraalVM).
تم إجراء الاختبار على خادم مزود بمعالج AMD EPYC 9654 (96 نواة) وذاكرة DDR5 بسعة 256 جيجابايت وقرص NVMe SSD. تم استخدام ثلاثة سيناريوهات:
- خادم HTTP (100 ألف طلب مع keep-alive، استجابة JSON)
- حسابات (توليد 10 ملايين عدد أولي)
- العمل مع قاعدة البيانات (100 ألف عملية SELECT + INSERT في PostgreSQL)
النتائج: من في المقدمة؟
في سيناريو خادم HTTP، أظهر Node.js 98,000 طلب/ثانية، متخلفًا فقط عن Rust (126,000) وGo (112,000). وجاءت Java وPython في المؤخرة بـ 85,000 و32,000 على التوالي. سر Node.js هو حلقة الأحداث غير المتزامنة ومحرك V8 السريع.
في اختبار الحسابات، تغير المشهد: Rust (1.2 ثانية) وGo (1.8 ثانية) تفوقا على Node.js (4.5 ثانية). وأظهر Python 12.3 ثانية. ومع ذلك، تعافى Node.js في عمليات الإدخال/الإخراج: العمل مع الملفات والشبكة كان أسرع بنسبة 15% من Go.
لماذا Node.js ليس "بطيئًا"؟
ينتقد الكثيرون جافا سكريبت لكونها أحادية الخيط، ولكن في عام 2025، تسمح Worker Threads والتجميع باستخدام جميع نوى وحدة المعالجة المركزية. في اختبار PostgreSQL، عالج Node.js (باستخدام برنامج التشغيل pg-pool) 89,000 عملية/ثانية — تقريبًا مثل Go (93,000). أظهر Python مع asyncpg 41,000 فقط.
- الورقة الرابحة الرئيسية لـ Node.js — نظام npm البيئي وسرعة التطوير. Rust وGo أسرع، لكن كتابة الخدمات المصغرة بهما تستغرق وقتًا أطول بمقدار 2-3 مرات.
- أين يضعف Node.js؟ من الأفضل إسناد مهام وحدة المعالجة المركزية الثقيلة إلى Rust عبر FFI أو WebAssembly.
- اتجاه 2025 — البنى الهجينة: Node.js لواجهات API وBFF، وRust للحسابات الحرجة.
ملخص اختبار الأداء
إذا كنت بحاجة إلى نموذج أولي سريع أو إدخال/إخراج عالي التحميل — يظل Node.js الخيار الأفضل. للأنظمة المالية منخفضة زمن الوصول، اختر Rust. Go هو الوسط الذهبي بين السرعة والبساطة. لا يزال Python جيدًا للواجهة الخلفية للتعلم الآلي، لكنه ليس مناسبًا لأحمال الإنتاج.
البيانات الكاملة للاختبارات والكود المصدري متوفرة في مستودعنا على GitHub. تابع التحديثات على PythonLib — نحن نواصل اختبار الإصدارات الجديدة من اللغات والمكتبات.