Avatar ·

Rust 64-बिट सिस्टम पर 128-बिट पूर्णांक `i128` को कैसे संभालता है? क्या इससे प्रदर्शन प्रभावित होता है?

सभी को नमस्कार! मैं Rust सीख रहा हूँ और `i128` (128-बिट साइन वाला पूर्णांक) प्रकार पर आया हूँ। मैं JSON से बड़ी संख्याओं के लिए एक parser लिख रहा हूँ, और मुझे `2^64` और उससे बड़े मानों को संग्रहीत करने की आवश्यकता है। मुझे आदत है कि x86-64 प्रोसेसर पर रजिस्टर 64-बिट होते हैं, और मुझे समझ नहीं आता कि प्रोसेसर 128-बिट संख्याओं के साथ संचालन कैसे करता है। मैंने एक सरल benchmark लिखा (`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` जोड़ के लिए लगभग 2-3 गुना धीमा काम करता है।