تحسين أداء مُشفّر فك تشفير AV1 بلغة Rust: تجنب عمليات التصفير غير الضرورية وتحسين مقارنات الهياكل

2025-05-22
تحسين أداء مُشفّر فك تشفير AV1 بلغة Rust: تجنب عمليات التصفير غير الضرورية وتحسين مقارنات الهياكل

بمقارنة أداء مُشفّر فك تشفير AV1 القائم على لغة Rust، rav1d، مع مُشفّر فك تشفير AV1 القائم على لغة C، dav1d، حدد الكاتب، باستخدام أداة تعريف التشكيل العيّنية، نقطتين ضعف في الأداء. الأولى كانت عملية التصفير غير الضرورية لوحدة تخزين مؤقتة في rav1d على بنية ARM، مما أدى إلى انخفاض الأداء. الثانية كانت تنفيذًا غير فعال لمقارنات الهياكل في rav1d. باستخدام `MaybeUninit` لتجنب عمليات التصفير غير الضرورية وتحسين مقارنات الهياكل، حسّن الكاتب أداء rav1d بنسبة 2% تقريبًا.

اقرأ المزيد

Rust تتعلم من قدرات Python الديناميكية: الانعكاس مع Serde

2025-05-15
Rust تتعلم من قدرات Python الديناميكية: الانعكاس مع Serde

تتناول هذه المقالة بالتفصيل كيف استخدم الكاتب Rust ومكتبة Serde لمحاكاة آلية الوصول إلى السمات الديناميكية في Python (__getattr__)، مما أدى إلى إنشاء واجهة برمجة تطبيقات نظيفة وسهلة الاستخدام للوصول إلى معلومات النظام. تشرح المقالة بعناية عملية التنفيذ، بما في ذلك تنفيذات مخصصة لـ trait و Deserializer و Visitor، وكيفية الاستفادة من ميزة derive(Deserialize) في Serde لتبسيط الكود. في النهاية، نجح الكاتب في بناء مكتبة Rust فعالة وسهلة الاستخدام تحقق واجهة برمجة تطبيقات موجزة مشابهة لـ Python، ويناقش نهجًا بديلة ومقايضات.

اقرأ المزيد
التطوير

طريقة __init__ المجنونة التي كادت أن تدمر عقلي

2025-04-19
طريقة __init__ المجنونة التي كادت أن تدمر عقلي

فشل اختبار خدمة بايثون بشكل متقطع بسبب طريقة __init__ غريبة. تقوم فئة FooBarWidget، في طريقة __init__ الخاصة بها، ببدء مؤشر ترابط جديد لتنفيذ طرق __init__ و run لفئتها الأم FooWidget. يهدف هذا التصميم إلى تجنب حظر مؤشر الترابط الرئيسي لأن كائنات zmq.Socket لا يمكن نقلها بين مؤشرات الترابط. ومع ذلك، فإن إغلاق مثيل FooBarWidget مبكرًا جدًا قد يترك __init__ لـ FooWidget غير مكتمل، مما يؤدي إلى فقدان سمة 'should_exit' وخطأ. يصف هذا السرد الفكاهي تجربة تصحيح الأخطاء ويستكشف المنطق وراء هذا التصميم غير التقليدي.

اقرأ المزيد