Skip to content

Instantly share code, notes, and snippets.

@cpoDesign
Last active August 29, 2015 14:01
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save cpoDesign/c934d0a8bc04fd53f580 to your computer and use it in GitHub Desktop.
Save cpoDesign/c934d0a8bc04fd53f580 to your computer and use it in GitHub Desktop.
String comparison using different implementation and its results
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