Skip to content

Commit fef4544

Browse files
authored
perf: simd-json (#115)
1 parent a4725cc commit fef4544

File tree

4 files changed

+198
-16
lines changed

4 files changed

+198
-16
lines changed

Cargo.lock

Lines changed: 185 additions & 6 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ memchr = "2.6.4"
3939
arrayvec = "0.7.4"
4040

4141
codspeed-criterion-compat = { version = "2.3.3", default-features = false, optional = true }
42+
simd-json = "=0.14.0-rc.2"
4243

4344
[dev-dependencies]
4445
twox-hash = "1"

src/error.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ pub enum Error {
1313
/// Overflow in Vlq handling
1414
VlqOverflow,
1515
/// a JSON parsing related failure
16-
BadJson(serde_json::Error),
16+
BadJson(simd_json::Error),
1717
}
1818

1919
impl fmt::Display for Error {
@@ -29,8 +29,8 @@ impl fmt::Display for Error {
2929

3030
impl error::Error for Error {}
3131

32-
impl From<serde_json::Error> for Error {
33-
fn from(err: serde_json::Error) -> Error {
32+
impl From<simd_json::Error> for Error {
33+
fn from(err: simd_json::Error) -> Error {
3434
Error::BadJson(err)
3535
}
3636
}

src/source.rs

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -343,27 +343,29 @@ struct RawSourceMap {
343343

344344
impl RawSourceMap {
345345
pub fn from_reader<R: std::io::Read>(r: R) -> Result<Self> {
346-
let raw: RawSourceMap = serde_json::from_reader(r)?;
346+
let raw: RawSourceMap = simd_json::serde::from_reader(r)?;
347347
Ok(raw)
348348
}
349349

350-
pub fn from_slice(v: &[u8]) -> Result<Self> {
351-
let raw: RawSourceMap = serde_json::from_slice(v)?;
350+
pub fn from_slice(val: &[u8]) -> Result<Self> {
351+
let mut v = val.to_vec();
352+
let raw: RawSourceMap = simd_json::serde::from_slice(&mut v)?;
352353
Ok(raw)
353354
}
354355

355-
pub fn from_json(s: &str) -> Result<Self> {
356-
let raw: RawSourceMap = serde_json::from_str(s)?;
356+
pub fn from_json(val: &str) -> Result<Self> {
357+
let mut v = val.as_bytes().to_vec();
358+
let raw: RawSourceMap = simd_json::serde::from_slice(&mut v)?;
357359
Ok(raw)
358360
}
359361

360362
pub fn to_json(&self) -> Result<String> {
361-
let json = serde_json::to_string(self)?;
363+
let json = simd_json::serde::to_string(self)?;
362364
Ok(json)
363365
}
364366

365367
pub fn to_writer<W: std::io::Write>(&self, w: W) -> Result<()> {
366-
serde_json::to_writer(w, self)?;
368+
simd_json::to_writer(w, self)?;
367369
Ok(())
368370
}
369371
}

0 commit comments

Comments
 (0)