gecko-dev/gfx/wr/peek-poke/peek-poke-derive
Alexis Beingessner e64ad7178d Bug 1568395 - Add more useful error messages to webrender_api. r=kamidphish
Differential Revision: https://phabricator.services.mozilla.com/D39236

--HG--
extra : moz-landing-system : lando
2019-07-24 22:55:51 +00:00
..
src Bug 1568395 - Add more useful error messages to webrender_api. r=kamidphish 2019-07-24 22:55:51 +00:00
Cargo.toml Bug 1550640 - P3: Replace bincode with peek-poke. r=Gankro 2019-07-12 06:12:31 +00:00
LICENSE-APACHE Bug 1550640 - P3: Replace bincode with peek-poke. r=Gankro 2019-07-12 06:12:31 +00:00
LICENSE-MIT Bug 1550640 - P3: Replace bincode with peek-poke. r=Gankro 2019-07-12 06:12:31 +00:00
README.md Bug 1550640 - P3: Replace bincode with peek-poke. r=Gankro 2019-07-12 06:12:31 +00:00

Peeks, Pokes, and Pointers

Peek from and poke structures into byte slices.

Benchmark

Below are the benchmark results of comparison between peek-poke and bincode serializing and deserializing same struct:

struct MyPeekPokeStruct {
    a: u8,
    b: u16,
    c: MyPeekPokeEnum,
    d: Option<usize>,
}

enum MyPeekPokeEnum {
    Variant1,
    Variant2(u16),
}
Benchmarking struct::serialize/peek_poke::poke_into: Collecting 100 samples in                                                                                struct::serialize/peek_poke::poke_into
                        time:   [2.7267 ns 2.7321 ns 2.7380 ns]

Benchmarking struct::serialize/bincode::serialize: Collecting 100 samples in est                                                                                struct::serialize/bincode::serialize
                        time:   [31.264 ns 31.326 ns 31.389 ns]

Benchmarking struct::deserialize/peek_poke::peek_from: Collecting 100 samples                                                                                 struct::deserialize/peek_poke::peek_from
                        time:   [5.3544 ns 5.3672 ns 5.3817 ns]

Benchmarking struct::deserialize/bincode::deserialize: Collecting 100 samples in                                                                                struct::deserialize/bincode::deserialize
                        time:   [25.155 ns 26.439 ns 27.661 ns]

You can run benchmarks by running following command:

cargo bench

License

Licensed under either of

at your option.

see LICENSE-APACHE, LICENSE-MIT for details.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as about, without any additional terms or conditions.