Avatar ·

Rust 如何在 64 位系统上处理 128 位整数 `i128`?这会影响性能吗?

大家好!我正在学习 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` 大约