3 ms·
What he is missing is that if the max. 3 pointer comparisons in (together with the function call of `Is`) if err == nil || target == nil { return e
by ReleaseCandidat 2y ago
What he is missing is that if the max. 3 pointer comparisons in (together with the function call of `Is`)
if err == nil || target == nil {
return err == target
}
are a "pretty big performance penalty", there isn't much work going on. I mean, of course, these 2 or 3 comparisons + the function call of `Is` are at least double that of
err != nil
even if `Is` would have been inlined by the compiler.
- richbell 2y agoActually, the `err == nil` check doesn't exist in the latest release. It was added recently, which would explain the significant performance cost. If err is nil, it doesn't return early. https://github.com/golang/go/blame/adbfb672ba485630d75f8b5598228a63f4af08a4/src/errors/wrap.go#L44 https://github.com/golang/go/blame/adbfb672ba485630d75f8b559...
- tommiegannert 2y agoNice find. This commit: https://github.com/golang/go/commit/af43932c20d5b59cdffca45406754dbccbb46dfa https://github.com/golang/go/commit/af43932c20d5b59cdffca454... from April 4.