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<String,string>(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<String>(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();
}
}
}