Skip to content

SIMD accelerations #561

@Nugine

Description

@Nugine

Motivation
According to my benchmarks, SIMD parser can be 5x~9x faster than generic implementation and SIMD formatter can be 10x faster than generic implementation.

https://github.com/Nugine/uuid-simd/blob/main/benches/main.rs
https://github.com/Nugine/uuid-simd

Solution
Add SIMD functions and a feature simd.
When simd and std are enabled, use runtime cpu feature detection to dispatch the functions.
When simd is enabled, use conditional compilation to dispatch the functions.
Otherwise, use the fallback functions.

Alternatives
SIMD accelerations don't have to be built-in features. An extension crate (uuid-simd) is also good for users who care about performance.

Is it blocking?
No.

Anything else?
Uuid::try_parse is slightly slower than my impl. I'm testing why this happens. I'll submit a PR if I find the reason.

parse/fallback/simple         | 27.286 ns   
parse/fallback/hyphenated     | 28.057 ns
parse/uuid-latest/simple      | 40.266 ns
parse/uuid-latest/hyphenated  | 41.445 ns

Edit:
uuid-simd link: https://docs.rs/uuid-simd/0.5.0/uuid_simd/

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