Optimize String::push_byte()
``` test new_push_byte ... bench: 6985 ns/iter (+/- 487) = 17 MB/s test old_push_byte ... bench: 19335 ns/iter (+/- 1368) = 6 MB/s ``` ```rust extern crate test; use test::Bencher; static TEXT: &'static str = "\ Unicode est un standard informatique qui permet des échanges \ de textes dans différentes langues, à un niveau mondial."; #[bench] fn old_push_byte(bencher: &mut Bencher) { bencher.bytes = TEXT.len() as u64; bencher.iter(|| { let mut new = String::new(); for b in TEXT.bytes() { unsafe { new.as_mut_vec().push_all([b]) } } }) } #[bench] fn new_push_byte(bencher: &mut Bencher) { bencher.bytes = TEXT.len() as u64; bencher.iter(|| { let mut new = String::new(); for b in TEXT.bytes() { unsafe { new.as_mut_vec().push(b) } } }) } ```
This commit is contained in:
parent
b8ef5cf131
commit
ed3eee2e2a
@ -208,7 +208,7 @@ pub fn truncate(&mut self, len: uint) {
|
||||
/// Appends a byte to this string buffer. The caller must preserve the valid UTF-8 property.
|
||||
#[inline]
|
||||
pub unsafe fn push_byte(&mut self, byte: u8) {
|
||||
self.push_bytes([byte])
|
||||
self.vec.push(byte)
|
||||
}
|
||||
|
||||
/// Removes the last byte from the string buffer and returns it. Returns `None` if this string
|
||||
|
Loading…
Reference in New Issue
Block a user