Saturday, March 24, 2012

String converted to character arrays is fast then normal string operation

Make a string operation using for loop to string length is costly on performance bases compare to convert it to character array and make string operation on that array
static void Main(string[] args)
       {
           Stopwatch sp = new Stopwatch();
           sp.Start();
           string output = string.Empty;
           string myStr = "http://kirtimdarji.blogspot.com";
           output = Program.ArrCapitalizeVowels(myStr);
           Console.Write(string.Format("Time Elaspeds:{0} output:{1}\n", sp.Elapsed, output));
           sp.Reset();
           sp.Start();
           output = Program.CapitalizeVowels(myStr);
           Console.Write(string.Format("Time Elaspeds:{0} output:{1}\n", sp.Elapsed, output));
           Console.ReadKey();
       }
       private static string CapitalizeVowels(string input)
       {
           if (string.IsNullOrEmpty(input)) //since a string is a class object, it could be null
               return string.Empty;
           else
           {
               string output = string.Empty;

               for (int i = 0; i < input.Length; i++)
               {
                   if (input[i] == 'a' || input[i] == 'e' ||
                       input[i] == 'i' || input[i] == 'o' ||
                       input[i] == 'u')
                       output += input[i].ToString().ToUpper(); //Vowel
                   else
                       output += input[i].ToString().ToLower(); //Not vowel
               }

               return output;
           }
       }
       public static string ArrCapitalizeVowels(string input)
       {
           if (string.IsNullOrEmpty(input)) //since a string is a class object, it could be null
               return string.Empty;
           else
           {
               char[] charArray = input.ToCharArray();

               for (int i = 0; i < charArray.Length; i++)
               {
                   if (charArray[i] == 'a' || charArray[i] == 'e' ||
                       charArray[i] == 'i' || charArray[i] == 'o' ||
                       charArray[i] == 'u')
                       charArray[i] = char.ToUpper(charArray[i]); //Vowel
                   else
                       charArray[i] = char.ToLower(charArray[i]); //Not vowel
               }

               return new string(charArray);
           }
       }
Output :
ArrCapitalizeVowels Method  
Time Elaspeds:00:00:00.0007757 output:http://kIrtImdArjI.blOgspOt.cOm
CapitalizeVowels  Method
Time Elaspeds:00:00:00.0008297 output:http://kIrtImdArjI.blOgspOt.cOm

Thank You for reading stay turned for more!!

Kirti Darji