/// <summary> /// Returns a hash code using the specified <see cref="StringComparison"/>. /// </summary> public int GetHashCode(StringComparison comparison) { // TODO_UTF8STRING: This perf can be improved, including removing // the virtual dispatch by putting the switch directly in this method. return(Utf8StringComparer.FromComparison(comparison).GetHashCode(this)); }
/// <summary> /// Performs an equality comparison using the specified <see cref="StringComparison"/>. /// </summary> public static bool Equals(Utf8String?a, Utf8String?b, StringComparison comparison) { // TODO_UTF8STRING: This perf can be improved, including removing // the virtual dispatch by putting the switch directly in this method. return(Utf8StringComparer.FromComparison(comparison).Equals(a, b)); }
public void RandomFlatBufferStringComparison() { Random rng = new Random(); int min = char.MinValue; int max = char.MaxValue; for (int i = 0; i < 10000; ++i) { StringBuilder sb = new StringBuilder(); StringBuilder sb2 = new StringBuilder(); for (int j = 0; j < 100; ++j) { sb.Append((char)rng.Next(min, max)); sb2.Append((char)rng.Next(min, max)); } string str = sb.ToString(); string str2 = sb2.ToString(); Span <byte> span = SerializationHelpers.Encoding.GetBytes(str); Span <byte> span2 = SerializationHelpers.Encoding.GetBytes(str2); Utf8StringComparer utf8Comparer = new Utf8StringComparer(); Assert.Equal(0, StringSpanComparer.Instance.Compare(true, span, true, span)); Assert.Equal(0, utf8Comparer.Compare(str, str)); Assert.Equal(0, StringSpanComparer.Instance.Compare(true, span2, true, span2)); Assert.Equal(0, utf8Comparer.Compare(str2, str2)); int expected = utf8Comparer.Compare(str, str2); int actual = StringSpanComparer.Instance.Compare(true, span, true, span2); Assert.Equal(expected, actual); expected = utf8Comparer.Compare(str2, str); actual = StringSpanComparer.Instance.Compare(true, span2, true, span); Assert.Equal(expected, actual); } }
public int CompareTo(Utf8String?other, StringComparison comparison) { // TODO_UTF8STRING: We can avoid the virtual dispatch by moving the switch into this method. return(Utf8StringComparer.FromComparison(comparison).Compare(this, other)); }