ソースを参照

x/model: fast-path CompareFold for unequal lengths

Blake Mizerany 1 年間 前
コミット
a187851900
1 ファイル変更5 行追加1 行削除
  1. 5 1
      x/model/name.go

+ 5 - 1
x/model/name.go

@@ -308,13 +308,17 @@ func (r Name) CompareFold(o Name) int {
 }
 
 func compareFold(a, b string) int {
+	// fast-path for unequal lengths
+	if n := cmp.Compare(len(a), len(b)); n != 0 {
+		return n
+	}
 	for i := 0; i < len(a) && i < len(b); i++ {
 		ca, cb := downcase(a[i]), downcase(b[i])
 		if n := cmp.Compare(ca, cb); n != 0 {
 			return n
 		}
 	}
-	return cmp.Compare(len(a), len(b))
+	return 0
 }
 
 func downcase(c byte) byte {