1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
| private static void Main(string[] args)
{
var w = new Stopwatch();
var trie = new Trie<string>();
var list = new List<string>();
var words = new string[25000];
const int loops = 1000;
long sum1 = 0;
long sum2 = 0;
for (int i = 0; i < words.Length; i++)
{
words[i] = Immobilis.ToolsBox.Security.Encryption.GenerateRandomString(20);
try
{
trie.Add(words[i], words[i]);
list.Add(words[i]);
}
catch
{
i--;
}
}
for (int i = 0; i < loops; i++)
{
string pref = words[rd.Next(0, words.Count() - 1)].Substring(0, 2);
Console.WriteLine("{0} {1}", i, pref);
//
w.Restart();
var test = trie.FindPrefix(pref);
w.Stop();
if (i > 0)
{
sum1 += w.ElapsedTicks;
}
//Console.WriteLine("\tCount: {0}, time: {1}", test.Count(), w.ElapsedTicks);
w.Restart();
var test2 = list.Where(x => x.StartsWith(pref)) as IEnumerable<string>;
w.Stop();
if (i > 0)
{
sum2 += w.ElapsedTicks;
}
//Console.WriteLine("\tCount: {0}, time: {1}", test2.Count(), w.ElapsedTicks);
}
Console.WriteLine("Trie: {0} - List: {1}", sum1 / loops, sum2 / loops);
Console.ReadLine();
} |
Partager