using System.Collections.Generic;
using System.Diagnostics;
private static Random _rand = new Random();
public static List<string> ListofSimpleString(int scale)
return Enumerable.Range(0, scale).Select(x => Enumerable.Range(0, 10).Select(y => (char)_rand.Next(255)).ToString()).ToList();
public static List<string> ListofSimpleString2(int scale)
return Enumerable.Range(0, scale).Select(x => Enumerable.Range(0, 10).Select(y => (char)_rand.Next(48, 95)).ToString()).ToList();
public static List<string> ListofSimpleString3(int scale)
return Enumerable.Range(0, scale).Select(x => _rand.Next(1000).ToString()).ToList();
public static List<string> ListofSimpleString4(int scale)
return Enumerable.Range(0, scale).Select(x => _rand.Next(10000).ToString()).ToList();
public static List<string> ListofSimpleString5(int scale)
return Enumerable.Range(0, scale).Select(x => "duplicate value").ToList();
public static IEnumerable<string> GetDuplicatesDictionary(IEnumerable<string> original)
var dict = new Dictionary<string, bool>();
foreach (var s in original)
if (dict.TryGetValue(s, out isReturnedDupl))
public static IEnumerable<string> GetDuplicatesHashSet(IEnumerable<string> original)
var hs = new HashSet<string>();
foreach (var item in original)
public static void Main()
var data = ListofSimpleString5(10000);
for (int i = 0; i < 10; i++)
var sw = new Stopwatch();
var result = GetDuplicatesHashSet(data).ToList();
total += sw.ElapsedMilliseconds;
Console.WriteLine("HashSet " + total / (decimal)10);
for (int i = 0; i < 10; i++)
var sw = new Stopwatch();
var result = GetDuplicatesDictionary(data).ToList();
total += sw.ElapsedMilliseconds;
data = ListofSimpleString4(10000);
Console.WriteLine("Dictionary " + total / (decimal)10);
for (int i = 0; i < 10; i++)
var sw = new Stopwatch();
var result = GetDuplicatesHashSet(data).ToList();
total += sw.ElapsedMilliseconds;
Console.WriteLine("HashSet " + total / (decimal)10);
for (int i = 0; i < 10; i++)
var sw = new Stopwatch();
var result = GetDuplicatesDictionary(data).ToList();
total += sw.ElapsedMilliseconds;
Console.WriteLine("Dictionary " + total / (decimal)10);