مجموعة باحثين من جامعات ألمانية
كان إصدار برنامج التشغيل Rust قريبًا جدًا من أداء برنامج التشغيل المرجعي C. مع حمل مع إرسال واحد لكتل مكونة من 32 حزمة ، تأخر برنامج تشغيل Rust قليلاً ، ولكن في الاختبارات التي تضم أكثر من 32 حزمة لكل كتلة ، لم يختلف عمليًا في السرعة عن برنامج التشغيل C وأظهر الأداء على مستوى المعالجة 28 مليون حزمة في الثانية على خادم مزود بوحدة معالجة مركزية Xeon CPU E3-1230 v2 3.3 جيجاهرتز.
احتل السائقين Go و C # المكانة التالية من حيث الأداء ، والتي أظهرت نتائج قريبة إلى حد ما (فاز سائق Go في الاختبارات مع الكتل التي تضمنت ما يصل إلى 16 حزمة ، وبدأ يخسر قليلاً في الاختبارات مع أكثر من 16 حزمة في a. حاجز). مع 256 حزمة لكل كتلة ، كان أقصى أداء لبرنامج التشغيل C # حوالي 28 ميجا بكسل ، ولسائقي Go ، حوالي 25 ميجا بكسل.
بعد ذلك ، مع نتائج قريبة إلى حد ما ، متبوعة بسائقي لـ
Java و OCaml و Haskell ، والتي كانت بالفعل وراء الخيارات التي تم النظر فيها سابقًا بشكل ملحوظ ولم تتمكن من التغلب على شريط 12 مليون حزمة في الثانية. أظهرت برامج التشغيل القائمة على Swift و JavaScript تراكمًا أكبر ، حيث تمكنت من معالجة التدفقات بمستوى 5 ملايين حزمة في الثانية.
أغلق السائق بلغة Python التصنيف ، والذي كان قادرًا على معالجة 0.14 مليون حزمة فقط في الثانية. تم استخدام تطبيق Python لتقييم سرعة المترجمين الفوريين بدون JIT وبدون تحسينات محددة (تم تشغيل الكود باستخدام CPython 3.7 ولم يكن متوافقًا مع PyPy ، ولكن لوحظ أن تحسين هياكل البيانات يمكن أن يحسن الأداء بحوالي 10 مرات).
بالإضافة إلى ذلك ، تم إجراء اختبارات زمن الوصول ، والتي أظهرت فعالية التخزين المؤقت وتأثير أداة تجميع القمامة. قام الاختبار بقياس زمن الانتقال بعد إعادة توجيه كل حزمة بواسطة السائق ، مقارنةً بوقت الإرسال المعروف. كان القادة لا يزالون سائقي C و Rust ، وكانت نتائجهم لا يمكن تمييزها تقريبًا لتدفق مليون رزمة في الثانية (حوالي 1 ميكرو ثانية). كان أداء السائق في لغة Go جيدًا ، والذي كان متأخرًا قليلاً فقط عن المتصدرين ، كما ظل عند مستوى 20 µs. أظهر سائق C # تأخيرات تبلغ حوالي 20 µs.
أظهرت برامج التشغيل القائمة على JavaScript و Java أكبر التأخيرات (تأخيرات تزيد عن 300 s).
أجريت الدراسة من أجل تقييم إمكانية تطوير برامج التشغيل ومكونات نظام التشغيل بلغات أعلى من C. حاليًا ، 39 من أصل 40 مشكلة في ذاكرة Linux مرتبطة ببرنامج التشغيل ، لذا فإن مشكلات تبني لغة أكثر أمانًا ونقل برامج التشغيل من النواة إلى مساحة المستخدم
في سياق العمل الذي تم تنفيذه ، تم استنتاج أن لغة Rust هي أفضل مرشح لتطوير السائق. تتيح لك الميزات التي يوفرها Rust التخلص من المشكلات التي تنشأ بسبب معالجة الذاكرة منخفضة المستوى ، على حساب غرامة أداء تبلغ حوالي 2٪ -10٪ مقارنة بمحركات لغة C. تم العثور على Go و C # أيضًا ليكونا مناسبين لبناء مكونات النظام في المواقف التي يكون فيها زمن انتقال أقل من ملي ثانية الناجم عن جامع القمامة مقبولاً.
المصدر: opennet.ru