Skip to content

Questions about implementation and experience? #367

Description

@Ygg01

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:

  1. Why are structural indexes:

    simd-json/src/lib.rs

    Lines 779 to 781 in b249c70

    pub(crate) unsafe fn find_structural_bits(
    input: &[u8],
    structural_indexes: &mut Vec<u32>,

    Vec<u32> and not Vec<u64>?

    1. This means largest JSON parsed (assuming UTF-8 encoding) is 4GB, right?
    2. Is it for performance reasons or something else I might have missed?
  2. Does using macros like this one:

    simd-json/src/stage2.rs

    Lines 128 to 144 in b249c70

    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?

  3. 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?

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions