Avatar ·

كيف يتعامل Rust مع الأعداد الصحيحة 128 بت `i128` على نظام 64 بت؟ هل يؤثر ذلك على الأداء؟

مرحباً بالجميع! أنا أدرس Rust ووجدت النوع `i128` (عدد صحيح 128 بت مع إشارة). أكتب محللاً للأعداد الكبيرة من JSON، وأحتاج لتخزين قيم مثل `2^64` وأكبر. أنا معتاد على أن معالجات x86-64 تحتوي على سجلات 64 بت، ولا أفهم كيف يقوم المعالج بتنفيذ العمليات على الأعداد 128 بت. لقد كتبت اختبار أداء بسيط (باستخدام `cargo bench`) يقيس جمع اثنين من `i128` واثنين من `i64`: ```rust #![feature(test)] extern crate test; #[bench] fn add_i64(b: &mut test::Bencher) { let a: i64 = 1234567890123456789; let b_val: i64 = 987654321098765432; b.iter(|| { let c = a + b_val; test::black_box(c); }); } #[bench] fn add_i128(b: &mut test::Bencher) { let a: i128 = 123456789012345678901234567890123456789; let b_val: i128 = 98765432109876543210987654321098765432; b.iter(|| { let c = a + b_val; test::black_box(c); }); } ``` أظهرت النتائج أن `i128` يعمل تقريباً