Advertisement
Guest User

Benchmark for reversing strings

a guest
Mar 15th, 2015
228
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.04 KB | None | 0 0
  1. /*
  2.  * Created by SharpDevelop.
  3.  * User: Hanpari
  4.  * Date: 15. 3. 2015
  5.  * Time: 18:10
  6.  *
  7.  * To change this template use Tools | Options | Coding | Edit Standard Headers.
  8.  */
  9. using System;
  10. using System.Collections.Generic;
  11. using System.Linq;
  12.  
  13. namespace csharp
  14. {
  15.     /// <summary>
  16.     /// Description of Benchmark.
  17.     /// </summary>
  18.     public class Benchmark
  19.     {
  20.        
  21.         private int Repeat;
  22.         private int LengthOfString;
  23.         private string SentenceForReverse;
  24.         private Dictionary<string, TimeSpan> Results;
  25.         private delegate string ReverseStringDelegate(string Sentence);
  26.        
  27.         public Benchmark(int LengthOfString, int Repeat)
  28.         {
  29.             this.Repeat = Repeat;
  30.             this.LengthOfString = LengthOfString;
  31.             this.SentenceForReverse = CreateString();
  32.             this.Results = new Dictionary<string, TimeSpan>();
  33.  
  34.         }
  35.        
  36.         private TimeSpan Timeit(ReverseStringDelegate ReverseString)
  37.         {
  38.             var start = DateTime.Now;
  39.             for (int i = 0; i < this.Repeat; i++)
  40.             {
  41.                 ReverseString(this.SentenceForReverse);
  42.             }
  43.             return DateTime.Now - start;
  44.        
  45.         }
  46.        
  47.         private string CreateString()
  48.         {
  49.             var r = new Random();
  50.             string newstr = "";
  51.             for (int i = 0; i < this.LengthOfString; i++)
  52.             {
  53.                 newstr += Char.ConvertFromUtf32(r.Next(65, 122));
  54.             }
  55.             return newstr;
  56.         }
  57.        
  58.        
  59.         private string ReverseByIteration(string ToBeReversed)
  60.         {
  61.             char[] pole = ToBeReversed.ToCharArray();
  62.             int i = 0, j = pole.Length - 1;
  63.             while (i < j)
  64.                 {
  65.                  char tmp = pole[i];
  66.                  pole[i] = pole[j];
  67.                  pole[j] = tmp;
  68.                  i++;
  69.                  j--;
  70.                 }
  71.             return new string(pole);
  72.         }
  73.        
  74.         private string ReverseByCharArray(string ToBeReversed)
  75.         {
  76.             var arr = ToBeReversed.ToCharArray();
  77.             Array.Reverse(arr);
  78.             return new string(arr);
  79.         }
  80.        
  81.         private string ReverseByList(string ToBeReversed)
  82.         {
  83.        
  84.              var tmp = ToBeReversed.ToCharArray().ToList();
  85.              tmp.Reverse();
  86.              return new string(tmp.ToArray());
  87.        
  88.         }
  89.        
  90.         private string ReverseByEnumeration(string ToBeReversed)
  91.         {
  92.             return new string(ToBeReversed.Reverse().ToArray());
  93.         }
  94.        
  95.         public void PrintResults()
  96.         {
  97.             Console.WriteLine("Length of tested sentence is: {0} chars.", this.LengthOfString);
  98.             Console.WriteLine("Number of repetion is: {0}", this.Repeat);
  99.             Console.WriteLine("Starting to evaluate...");
  100.             this.Evaluate();
  101.             var results = from entry in this.Results
  102.                             orderby entry.Value descending
  103.                             select entry;
  104.            
  105.             foreach (var entry in results)
  106.             {
  107.                 Console.WriteLine(entry);
  108.             }
  109.             Console.ReadKey();
  110.            
  111.         }
  112.        
  113.         private void Evaluate()
  114.         {
  115.             this.Results.Add("Iterace",
  116.                              Timeit(new ReverseStringDelegate(ReverseByIteration)));
  117.             this.Results.Add("CharArray",
  118.                              Timeit(new ReverseStringDelegate(ReverseByCharArray)));
  119.             this.Results.Add("ListMethod",
  120.                              Timeit(new ReverseStringDelegate(ReverseByList)));
  121.             this.Results.Add("Enumerace",
  122.                              Timeit(new ReverseStringDelegate(ReverseByEnumeration)));
  123.        
  124.         }
  125.        
  126.     }
  127.    
  128. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement