
يوم جيد للجميع!
هذا العام ، مع إصدار Flutter ، وهو إطار لتطوير التطبيقات عبر الأنظمة الأساسية ، كان هناك ارتفاع في الضجيج في لغة Dart. مثل أي الكمال المماطلة الملل كسول فكرت في مقارنة أداء تطبيق خادم الجهاز الظاهري Dart مع خصمه المحتمل في شخص Node.js. يجب أن أقول على الفور أن الأمل كان يحترق في داخلي بأن دارت سيفوز ، وأكتسب الكأس المقدسة ، مما يمنحني تفوقًا على المنافسين المحتملين خلال الفترتين التاليتين لثلاث سنوات ، لكن الواقع كان مختلفًا قليلاً ...
مجموعة الأدوات
- آلة الاختبار: كور I7 ، SSD ، ذاكرة الوصول العشوائي 12 جيجابايت (يرجى تقديمها من قبل صاحب العمل السابق)
- اختبار الحمل: k6.io (بالمناسبة ، إطار العمل ممتع للغاية في بنيته)
تنظيم رمز التطبيق
شفرة المصدر
ثم قررت بشكل خاص عدم الإزعاج وقررت اتباع التوصيات التي قرأتها في وقت واحد على حبري. على وجه الخصوص:
- إضافة حمولة كمهمة لتوليد بيانات عشوائية (بيانات عشوائية لإزالة التخزين المؤقت المحتمل للنتائج)
class Human { constructor (id, name, surname, age, gender) { this.id = id this.name = name this.surname = surname this.age = age this.gender = gender } }
- استخدم كل من Dart و Node.js خيارات معالجة طلب متزامن وغير متزامن.
- تستخدم الحلول والحلول المحلية في أطر الصناعة (قناة لقنوات السهام والتعبير عن node.js)
- منذ أن تمكنت الدراسة من الحصول على تسارع كبير في دارت عند استخدام قناة المياه ، التي تعمل على عزل كل جوهر ، استخدمت وحدة الكتلة لـ node.js لتحقيق التوازن
منهجية الاختبار
- تشغيل اختبارات الحمل مع عدد معين من الطلبات في الثانية الواحدة (500 ، 750) وحدًا لعدد مرات تكرار الاختبار (عدد الطلبات المكتملة)
- تم تشغيل كل من التطبيق وإطار الاختبار على نفس الجهاز ، لذلك يجب أن تفهم أن جميع النتائج نسبية ويمكن مقارنتها مع بعضها البعض فقط
النتائج
وثبة الأم
500 روبية

750 روبية
إطار قناة دارت
500 روبية

750 روبية

node.js الأصلي
500 روبية

750 روبية

عقدة اكسبرس مع الكتلة
500 روبية

750 روبية

الاستنتاجات
- بالطبع ، يعتمد الكثير على كيفية تطبيق منطق التطبيق ، لست متأكدًا حقًا من أن الكود الخاص بي هو الأمثل في حالة dart و node.js
- على وجه الخصوص ، يمكن عرض وظيفة إنشاء المصفوفة في دفق عامل منفصل مع إخراج غير متزامن ، في حالتي لم يتم تنفيذها ، وبالتالي ، لم يتم استخدام المورش غير المتزامن بأكمله هنا
- في كل من Dart و Node.js ، يمكن تنظيم الإخراج من خلال دفق
- لذلك ، لا يزال هناك مجال كبير للبحث في الأداء والتحسين.
- أظهرت Dart في التنفيذ المحلي للمعالجات ملفًا ملحميًا ، ومع ذلك ، عند تنفيذه من خلال الإطار ، أظهر نتائج رائعة ، وفقًا لما يمكن للجهاز الظاهري Dart من منافسة Node.js به الآن
- على حد علمي ، تم استثمار قدر هائل من ساعات العمل في تحسين V8 ، وأنا أكثر من متأكد من أن وقتًا أقل بكثير مستثمر في جهاز Dart الظاهري. لذلك ، قد يحتوي الثاني على إمكانات كبيرة بما يكفي للتحسينات قبل الإصدار الثامن