diff --git a/Benchmarks/Benchmarks/AttributedString/BenchmarkAttributedString.swift b/Benchmarks/Benchmarks/AttributedString/BenchmarkAttributedString.swift index d021f0eed..cfff5bc70 100644 --- a/Benchmarks/Benchmarks/AttributedString/BenchmarkAttributedString.swift +++ b/Benchmarks/Benchmarks/AttributedString/BenchmarkAttributedString.swift @@ -423,13 +423,21 @@ let benchmarks = { let manyAttributesSubstring = manyAttributesString[manyAttributesStringRange] let manyAttributes2Substring = manyAttributesString2[manyAttributesStringRange] + Benchmark("equalityShared") { benchmark in + blackHole(manyAttributesString == manyAttributesString) + } + Benchmark("equality") { benchmark in blackHole(manyAttributesString == manyAttributesString2) } - + Benchmark("equalityDifferingCharacters") { benchmark in blackHole(manyAttributesString == manyAttributesString3) } + + Benchmark("substringEqualityShared") { benchmark in + blackHole(manyAttributesSubstring == manyAttributesSubstring) + } Benchmark("substringEquality") { benchmark in blackHole(manyAttributesSubstring == manyAttributes2Substring) diff --git a/Sources/FoundationEssentials/AttributedString/AttributedString.swift b/Sources/FoundationEssentials/AttributedString/AttributedString.swift index 1f871c647..374e3aaa6 100644 --- a/Sources/FoundationEssentials/AttributedString/AttributedString.swift +++ b/Sources/FoundationEssentials/AttributedString/AttributedString.swift @@ -150,7 +150,10 @@ extension AttributedString { @available(macOS 12, iOS 15, tvOS 15, watchOS 8, *) extension AttributedString { // Equatable public static func == (lhs: Self, rhs: Self) -> Bool { - AttributedString.Guts.characterwiseIsEqual(lhs._guts, to: rhs._guts) + if lhs._guts === rhs._guts { + return true + } + return AttributedString.Guts.characterwiseIsEqual(lhs._guts, to: rhs._guts) } }