Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- * Created by SharpDevelop.
- * User: Hanpari
- * Date: 15. 3. 2015
- * Time: 18:10
- *
- * To change this template use Tools | Options | Coding | Edit Standard Headers.
- */
- using System;
- using System.Collections.Generic;
- using System.Linq;
- namespace csharp
- {
- /// <summary>
- /// Description of Benchmark.
- /// </summary>
- public class Benchmark
- {
- private int Repeat;
- private int LengthOfString;
- private string SentenceForReverse;
- private Dictionary<string, TimeSpan> Results;
- private delegate string ReverseStringDelegate(string Sentence);
- public Benchmark(int LengthOfString, int Repeat)
- {
- this.Repeat = Repeat;
- this.LengthOfString = LengthOfString;
- this.SentenceForReverse = CreateString();
- this.Results = new Dictionary<string, TimeSpan>();
- }
- private TimeSpan Timeit(ReverseStringDelegate ReverseString)
- {
- var start = DateTime.Now;
- for (int i = 0; i < this.Repeat; i++)
- {
- ReverseString(this.SentenceForReverse);
- }
- return DateTime.Now - start;
- }
- private string CreateString()
- {
- var r = new Random();
- string newstr = "";
- for (int i = 0; i < this.LengthOfString; i++)
- {
- newstr += Char.ConvertFromUtf32(r.Next(65, 122));
- }
- return newstr;
- }
- private string ReverseByIteration(string ToBeReversed)
- {
- char[] pole = ToBeReversed.ToCharArray();
- int i = 0, j = pole.Length - 1;
- while (i < j)
- {
- char tmp = pole[i];
- pole[i] = pole[j];
- pole[j] = tmp;
- i++;
- j--;
- }
- return new string(pole);
- }
- private string ReverseByCharArray(string ToBeReversed)
- {
- var arr = ToBeReversed.ToCharArray();
- Array.Reverse(arr);
- return new string(arr);
- }
- private string ReverseByList(string ToBeReversed)
- {
- var tmp = ToBeReversed.ToCharArray().ToList();
- tmp.Reverse();
- return new string(tmp.ToArray());
- }
- private string ReverseByEnumeration(string ToBeReversed)
- {
- return new string(ToBeReversed.Reverse().ToArray());
- }
- public void PrintResults()
- {
- Console.WriteLine("Length of tested sentence is: {0} chars.", this.LengthOfString);
- Console.WriteLine("Number of repetion is: {0}", this.Repeat);
- Console.WriteLine("Starting to evaluate...");
- this.Evaluate();
- var results = from entry in this.Results
- orderby entry.Value descending
- select entry;
- foreach (var entry in results)
- {
- Console.WriteLine(entry);
- }
- Console.ReadKey();
- }
- private void Evaluate()
- {
- this.Results.Add("Iterace",
- Timeit(new ReverseStringDelegate(ReverseByIteration)));
- this.Results.Add("CharArray",
- Timeit(new ReverseStringDelegate(ReverseByCharArray)));
- this.Results.Add("ListMethod",
- Timeit(new ReverseStringDelegate(ReverseByList)));
- this.Results.Add("Enumerace",
- Timeit(new ReverseStringDelegate(ReverseByEnumeration)));
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement