Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Use a custom error type for invalid lengths, replacing fmt.Errorf #69

Merged
merged 2 commits into from Dec 30, 2020

Commits on Dec 29, 2020

  1. Add benchmarks for different kinds of invalid UUIDs

    Also add a test case for too-short UUIDs to ensure behavior doesn’t
    change.
    joewreschnig committed Dec 29, 2020
    Copy the full SHA
    080aa54 View commit details
    Browse the repository at this point in the history
  2. Use a custom error type for invalid lengths, replacing fmt.Errorf

    This significantly improves the speed of failed parses due to wrong
    lengths. Previously the `fmt.Errorf` call dominated, making this the
    most expensive error and more expensive than successfully parsing:
    
        BenchmarkParse-4                 29226529        36.1 ns/op
        BenchmarkParseBadLength-4         6923106       174 ns/op
        BenchmarkParseLen32Truncated-4   26641954        38.1 ns/op
        BenchmarkParseLen36Corrupted-4   19405598        59.5 ns/op
    
    When the formatting is not required and done on-demand, the failure per
    se is much faster:
    
        BenchmarkParse-4                 29641700        36.3 ns/op
        BenchmarkParseBadLength-4        58602537        20.0 ns/op
        BenchmarkParseLen32Truncated-4   30664791        43.6 ns/op
        BenchmarkParseLen36Corrupted-4   18882410        61.9 ns/op
    joewreschnig committed Dec 29, 2020
    Copy the full SHA
    484c5a2 View commit details
    Browse the repository at this point in the history