红黑树SortedDictionary,Hashtable,Dictionary性能测试
using System.Collections; using System.Collections.Generic; namespace HS; public class HXTest{ public const int k = 500_001; // 生成一个长度为50万的数组并初始化 public static void Test() { int[] arrNum = new int[k]; for (int i = 0; i <= k - 1; i++) arrNum[i] = i; // Array.Fill(rngNum,) Random rm = new Random(); for (int i = 0; i <= k - 1; i++) { int rngNum = rm.Next(i, k); int temp = arrNum[i]; arrNum[i] = arrNum[rngNum]; arrNum[rngNum] = temp; } // 红黑树测试 SortedDictionary<int, int> rbTree = new SortedDictionary<int, int>(); long oldTime = DateTime.Now.Ticks; for (int i = 0; i <= k - 1; i++) rbTree.Add(arrNum[i], arrNum[i]); double useTime = (DateTime.Now.Ticks - oldTime) / 1000000.0D; System.Console.WriteLine($"红黑树插入50万数据,用时:{useTime}"); // 红黑树随机删除 oldTime = DateTime.Now.Ticks; for (int i = 0; i <= k - 1; i++) rbTree.Remove(arrNum[i]); useTime = (DateTime.Now.Ticks - oldTime) / 1000000.0D; System.Console.WriteLine($"红黑树随机删除50万数据,用时:{useTime}"); // hashtable测试 Hashtable hash = new Hashtable(); oldTime = DateTime.Now.Ticks; for (int i = 0; i <= k - 1; i++) hash.Add(arrNum[i], arrNum[i]); useTime = (DateTime.Now.Ticks - oldTime) / 1000000.0D; System.Console.WriteLine($"HashTable插入50万数据,用时:{useTime}"); // hashtable随机删除 oldTime = DateTime.Now.Ticks; for (int i = 0; i <= k - 1; i++) hash.Remove(arrNum[i]); useTime = (DateTime.Now.Ticks - oldTime) / 1000000.0D; System.Console.WriteLine($"Hashtable随机删除50万数据,用时:{useTime}"); // Dictionary测试 Dictionary<int, int> dic = new Dictionary<int, int>(); oldTime = DateTime.Now.Ticks; for (int i = 0; i < k; i++) dic.Add(arrNum[i], arrNum[i]); useTime = (DateTime.Now.Ticks - oldTime) / 1000000.0D; System.Console.WriteLine($"Dictionary插入50万数据,用时:{useTime}"); // hashtable随机删除 oldTime = DateTime.Now.Ticks; for (int i = 0; i <= k - 1; i++) dic.Remove(arrNum[i]); useTime = (DateTime.Now.Ticks - oldTime) / 1000000.0D; System.Console.WriteLine($"Dictionary随机删除50万数据,用时:{useTime}"); } }
运行第一次结果:
红黑树插入50万数据,用时:6.23631 红黑树随机删除50万数据,用时:4.7723 HashTable插入50万数据,用时:2.76351 Hashtable随机删除50万数据,用时:1.80389 Dictionary插入50万数据,用时:0.40448 Dictionary随机删除50万数据,用时:0.15417
运行第二次结果:
红黑树插入50万数据,用时:6.20091 红黑树随机删除50万数据,用时:4.76206 HashTable插入50万数据,用时:2.93451 Hashtable随机删除50万数据,用时:1.88527 Dictionary插入50万数据,用时:0.45485 Dictionary随机删除50万数据,用时:0.13004
运行第三次结果:
红黑树插入50万数据,用时:6.1666 红黑树随机删除50万数据,用时:4.56178 HashTable插入50万数据,用时:2.84281 Hashtable随机删除50万数据,用时:1.9362 Dictionary插入50万数据,用时:0.41732 Dictionary随机删除50万数据,用时:0.12609