Last active
August 29, 2015 14:01
-
-
Save cpoDesign/c934d0a8bc04fd53f580 to your computer and use it in GitHub Desktop.
String comparison using different implementation and its results
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
using System; | |
using System.Diagnostics; | |
namespace ConsoleApplication1 | |
{ | |
class Program | |
{ | |
const string PostcodeSubstitute = "PJ15 8JJ"; | |
const string MatchingPostcode = "PJ15 8QJ"; | |
static void Main(string[] args) | |
{ | |
var searchText = new []{"PJ15 8QJ","PJ15 8qj ","PJ15 8qj", "PJ158QJ"}; | |
Console.WriteLine(); | |
var sw = new Stopwatch(); | |
Setup(sw); | |
UseStringEquals(searchText); | |
Report(sw); | |
Setup(sw); | |
UseStringEqualsOrdinalIgnoreCase(searchText); | |
Report(sw); | |
sw.Start(); | |
UseIfComparision(searchText); | |
Report(sw); | |
sw.Start(); | |
UsingEquals(searchText); | |
Report(sw); | |
sw.Start(); | |
UsingCompareTo(searchText); | |
Report(sw); | |
Console.ReadKey(); | |
} | |
private static void Setup(Stopwatch sw) | |
{ | |
sw.Start(); | |
} | |
private static void Report(Stopwatch sw) | |
{ | |
sw.Stop(); | |
Console.WriteLine("Elapsed time: {0} ticks| {1} milisec", sw.ElapsedTicks, sw.ElapsedMilliseconds); | |
Console.WriteLine(); | |
sw.Reset(); | |
} | |
/// <summary> | |
/// Results: | |
/// Original: PJ15 8QJ | New: PJ15 8JJ | |
/// Original: PJ15 8qj | New: PJ15 8JJ | |
/// Original: PJ15 8qj | New: PJ15 8JJ | |
/// Original: PJ158QJ | New: PJ158QJ | |
/// Elapsed time: 2157 ticks| 0 milisec | |
/// </summary> | |
/// <param name="postcodes"></param> | |
public static void UseStringEquals( string[] postcodes) | |
{ | |
foreach (var postcode in postcodes) | |
{ | |
string code = postcode; | |
if (string.Equals(postcode.Trim(), MatchingPostcode, StringComparison.CurrentCultureIgnoreCase)) | |
{ | |
code = PostcodeSubstitute; | |
} | |
Console.WriteLine("Original: {0} | New: {1}", postcode, code); | |
} | |
} | |
/// <summary> | |
/// Results: | |
/// Original: PJ15 8QJ | New: PJ15 8JJ | |
/// Original: PJ15 8qj | New: PJ15 8JJ | |
/// Original: PJ15 8qj | New: PJ15 8JJ | |
/// Original: PJ158QJ | New: PJ158QJ | |
/// Elapsed time: 910 ticks| 0 milisec | |
/// </summary> | |
/// <param name="postcodes"></param> | |
public static void UseStringEqualsOrdinalIgnoreCase( string[] postcodes) | |
{ | |
foreach (var postcode in postcodes) | |
{ | |
string code = postcode; | |
if (string.Equals(postcode.Trim(), MatchingPostcode, StringComparison.OrdinalIgnoreCase)) | |
{ | |
code = PostcodeSubstitute; | |
} | |
Console.WriteLine("Original: {0} | New: {1}", postcode, code); | |
} | |
} | |
/// <summary> | |
/// Results: | |
/// Original: PJ15 8QJ | New: PJ15 8JJ | |
/// Original: PJ15 8qj | New: PJ15 8JJ | |
/// Original: PJ15 8qj | New: PJ15 8JJ | |
/// Original: PJ158QJ | New: PJ158QJ | |
/// Elapsed time: 855 ticks| 0 milisec | |
/// </summary> | |
/// <param name="postcodes"></param> | |
public static void UsingCompareTo(string[] postcodes) | |
{ | |
foreach (var postcode in postcodes) | |
{ | |
string code = postcode.Trim().ToUpperInvariant(); | |
if (code.CompareTo(MatchingPostcode.ToUpperInvariant()) == 0) // beware: 0 means equality | |
{ | |
code = PostcodeSubstitute; | |
} | |
Console.WriteLine("Original: {0} | New: {1}", postcode, code); | |
} | |
} | |
/// <summary> | |
/// Results: | |
/// Original: PJ15 8QJ | New: PJ15 8JJ | |
/// Original: PJ15 8qj | New: PJ15 8JJ | |
/// Original: PJ15 8qj | New: PJ15 8JJ | |
/// Original: PJ158QJ | New: PJ158QJ | |
/// Elapsed time: 951 ticks| 0 milisec | |
/// </summary> | |
/// <param name="postcodes"></param> | |
public static void UseIfComparision(string[] postcodes) | |
{ | |
foreach (var postcode in postcodes) | |
{ | |
string code = postcode.Trim().ToUpperInvariant(); | |
if (code == MatchingPostcode.ToUpperInvariant()) | |
{ | |
code = PostcodeSubstitute; | |
} | |
Console.WriteLine("Original: {0} | New: {1}", postcode, code); | |
} | |
} | |
/// <summary> | |
/// Results: | |
/// Original: PJ15 8QJ | New: PJ15 8JJ | |
/// Original: PJ15 8qj | New: PJ15 8JJ | |
/// Original: PJ15 8qj | New: PJ15 8JJ | |
/// Original: PJ158QJ | New: PJ158QJ | |
/// Elapsed time: 976 ticks| 0 milisec | |
/// </summary> | |
/// <param name="postcodes"></param> | |
public static void UsingEquals(string[] postcodes) | |
{ | |
foreach (var postcode in postcodes) | |
{ | |
string code = postcode.Trim().ToUpperInvariant(); | |
if (Equals(code, MatchingPostcode.ToUpperInvariant())) | |
{ | |
code = PostcodeSubstitute; | |
} | |
Console.WriteLine("Original: {0} | New: {1}", postcode, code); | |
} | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment