using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Security.Cryptography; using System.Text; namespace exdict1 { class Program { private const int MaxItems = 50000; private static Dictionary< String,String> intDict = new Dictionary(MaxItems); private static Random r = new Random(); // Note this is from http://stackoverflow.com/questions/1344221/how-can-i-generate-random-8-character-alphanumeric-strings-in-c public static string GetUniqueKey(int maxSize) { var chars ="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890".ToCharArray(); var data = new byte[maxSize]; var crypto = new RNGCryptoServiceProvider(); crypto.GetNonZeroBytes(data); var result = new StringBuilder(maxSize); foreach (var b in data) { result.Append(chars[b % (chars.Length)]); } return result.ToString(); } private static void Main(string[] args) { Console.WriteLine("Generating..."); var watch = new Stopwatch(); var randomkeys = new List(10); watch.Start(); for (var i = 0; i < MaxItems; i++) { var key = GetUniqueKey(25); var value = GetUniqueKey(100); intDict.Add(key, value); if (r.Next(100) == 1) { if (randomkeys.Count() < 10) { randomkeys.Add(key); } } } watch.Stop(); Console.WriteLine("Generated... in {0}", watch.Elapsed.TotalSeconds); watch.Reset(); watch.Start(); for (var i = 0; i < 10; i++) { var akey = randomkeys[i]; var value = intDict[akey]; Console.WriteLine("Key= {0} Value = {1}",akey,value); } Console.WriteLine("Fetched... in {0}", watch.Elapsed.TotalSeconds); watch.Stop(); // Console.ReadKey(); } } }