Optimize write_u128 for small integers
This commit is contained in:
parent
636633331b
commit
b46ffbe623
|
@ -189,10 +189,10 @@ unsafe fn write_u64(mut n: u64, buf: *mut u8) -> usize {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
unsafe fn write_u128(n: u128, buf: *mut u8) -> usize {
|
unsafe fn write_u128_big(n: u128, buf: *mut u8) -> usize {
|
||||||
if n <= std::u64::MAX as u128 {
|
debug_assert!(n > std::u64::MAX as u128);
|
||||||
write_u64(n as u64, buf)
|
|
||||||
} else if n < 100_000_000_000_000_000_000_000_000_000_000 {
|
if n < 100_000_000_000_000_000_000_000_000_000_000 {
|
||||||
let a0 = (n / 10_000_000_000_000_000) as u64;
|
let a0 = (n / 10_000_000_000_000_000) as u64;
|
||||||
let a1 = (n % 10_000_000_000_000_000) as u64;
|
let a1 = (n % 10_000_000_000_000_000) as u64;
|
||||||
|
|
||||||
|
@ -254,6 +254,15 @@ unsafe fn write_u128(n: u128, buf: *mut u8) -> usize {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[inline]
|
||||||
|
unsafe fn write_u128(n: u128, buf: *mut u8) -> usize {
|
||||||
|
if n <= std::u64::MAX as u128 {
|
||||||
|
write_u64(n as u64, buf)
|
||||||
|
} else {
|
||||||
|
write_u128_big(n, buf)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
pub trait Integer {
|
pub trait Integer {
|
||||||
const MAX_LEN: usize;
|
const MAX_LEN: usize;
|
||||||
unsafe fn write_to(self, buf: *mut u8) -> usize;
|
unsafe fn write_to(self, buf: *mut u8) -> usize;
|
||||||
|
|
Loading…
Reference in New Issue