Avatar ·

ما هو monomorphization في Rust و C++ وكيف يؤثر على الأداء؟

مرحبًا أيها الزملاء! لقد بدأت للتو في تعلم Rust بعد C++ وصادفت مصطلح "monomorphization". بصراحة، لم أفهم تمامًا ما هو ولماذا يتحدثون عنه كثيرًا.\n\nأعلم أن في C++ هناك templates، وسمعت أنها تعمل بطريقة مشابهة لـ generics في Rust. لكن في C++ نادرًا ما فكرت في كيفية معالجة المترجم للكود القالب. الآن، عندما أكتب في Rust، غالبًا ما أستخدم الدوال والهياكل العامة، على سبيل المثال:\n\n```rust\nfn print_value(value: T) {\n println!("Value: {}", value);\n}\n\nfn main() {\n print_value(42);\n print_value("hello");\n print_value(3.14);\n}\n```\n\nقيل لي أن Rust يستخدم monomorphization للتعامل مع generics، وهذا يُزعم أنه يجعل الكود أسرع، لكنه يزيد من حجم الملف الثنائي. في نفس الوقت