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 गुना धीमा काम करता है।