Avatar ·

Wie Rust 128-Bit-Integer `i128` auf einem 64-Bit-System verarbeitet. Beeinflusst das die Performance?

Hallo zusammen! Ich lerne Rust und bin auf den Typ `i128` (128-Bit signed Integer) gestoßen. Ich schreibe einen Parser für große Zahlen aus JSON und muss Werte wie `2^64` und größer speichern. Ich bin es gewohnt, dass x86-64-Prozessoren 64-Bit-Register haben, und mir ist unklar, wie der Prozessor überhaupt Operationen mit 128-Bit-Zahlen ausführt.\n\nIch habe einen einfachen Benchmark geschrieben (mit `cargo bench`), der die Addition von zwei `i128` und zwei `i64` misst:\n\n```rust\n#![feature(test)]\nextern crate test;\n\n#[bench]\nfn add_i64(b: &mut test::Bencher) {\n let a: i64 = 1234567890123456789;\n let b_val: i64 = 987654321098765432;\n b.iter(|| {\n let c = a + b_val;\n test::black_box(c);\n });\n}\n\n#[bench]\nfn add_i128(b: &mut test::Bencher) {\n let a: i128 = 123456789012345678901234567890123456789;\n```