Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
strings: remove overengineered Compare implementation
The function is here ONLY for symmetry with package bytes. This function should be used ONLY if it makes code clearer. It is not here for performance. Remove any performance benefit. If performance becomes an issue, the compiler should be fixed to recognize the three-way compare (for all comparable types) rather than encourage people to micro-optimize by using this function. Change-Id: I71f4130bce853f7aef724c6044d15def7987b457 Reviewed-on: https://go-review.googlesource.com/3012 Reviewed-by: Rob Pike <r@golang.org>
- Loading branch information
Showing
6 changed files
with
28 additions
and
21 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
// Copyright 2015 The Go Authors. All rights reserved. | ||
// Use of this source code is governed by a BSD-style | ||
// license that can be found in the LICENSE file. | ||
|
||
package strings | ||
|
||
// Compare returns an integer comparing two strings lexicographically. | ||
// The result will be 0 if a==b, -1 if a < b, and +1 if a > b. | ||
// | ||
// Compare is included only for symmetry with package bytes. | ||
// It is usually clearer and always faster to use the built-in | ||
// string comparison operators ==, <, >, and so on. | ||
func Compare(a, b string) int { | ||
// NOTE(rsc): This function does NOT call the runtime cmpstring function, | ||
// because we do not want to provide any performance justification for | ||
// using strings.Compare. Basically no one should use strings.Compare. | ||
// As the comment above says, it is here only for symmetry with package bytes. | ||
// If performance is important, the compiler should be changed to recognize | ||
// the pattern so that all code doing three-way comparisons, not just code | ||
// using strings.Compare, can benefit. | ||
if a == b { | ||
return 0 | ||
} | ||
if a < b { | ||
return -1 | ||
} | ||
return +1 | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters