Let me preface this as this project is awesome and I quite enjoyed reading through code. I'm reading cause I'm intrested in SIMD-ifying my YAML parsing crate.
But I got few questions about the implementation details, or link me to some alternate discussion board.
Here are the questions:
-
Why are structural indexes:
|
pub(crate) unsafe fn find_structural_bits( |
|
input: &[u8], |
|
structural_indexes: &mut Vec<u32>, |
Vec<u32> and not Vec<u64>?
- This means largest JSON parsed (assuming UTF-8 encoding) is 4GB, right?
- Is it for performance reasons or something else I might have missed?
-
Does using macros like this one:
|
macro_rules! s2try { |
|
($e:expr) => { |
|
match $e { |
|
::std::result::Result::Ok(val) => val, |
|
::std::result::Result::Err(err) => { |
|
// We need to ensure that rust doesn't |
|
// try to free strings that we never |
|
// allocated |
|
unsafe { |
|
res.set_len(r_i); |
|
}; |
|
return ::std::result::Result::Err(err); |
|
} |
|
} |
|
}; |
|
} |
|
|
Offer benefits over using an #[inline] on function?
-
In Readme.md you mentioned something about a We work around some performance bottlenecks imposed by safe rust Does this means the indexing penalty you pay for safe array access?
Let me preface this as this project is awesome and I quite enjoyed reading through code. I'm reading cause I'm intrested in SIMD-ifying my YAML parsing crate.
But I got few questions about the implementation details, or link me to some alternate discussion board.
Here are the questions:
Why are structural indexes:
simd-json/src/lib.rs
Lines 779 to 781 in b249c70
Vec<u32>and notVec<u64>?Does using macros like this one:
simd-json/src/stage2.rs
Lines 128 to 144 in b249c70
Offer benefits over using an
#[inline]on function?In Readme.md you mentioned something about a
We work around some performance bottlenecks imposed by safe rustDoes this means the indexing penalty you pay for safe array access?