//测试不同底层实现的栈性能 //ArrayStack和linkedListStack耗时消耗巨大 //由于链表的实现需要不断的new空间,所以内存操作耗时较大。 //而对于数组操作,是对连续空间进行操作的,C#底层对连续空间的访问有非常好的优化。 //再加上数据规模增大以后,动态数组resize调用的频次其实很小,所以得到这个测试结果是正常的:) static void Main(string[] args) { int N = 20000000; Array1Stack <int> array1Stack = new Array1Stack <int>(N); long t1 = TestStack(array1Stack, N); Console.WriteLine("Array1Stack'time: " + t1 + "ms"); //LinkedList1Stack<int> linkedList1Stack = new LinkedList1Stack<int>(); //long t2 = TestStack(linkedList1Stack, N); //Console.WriteLine("LinkedList1Stack'time: " + t2 + "ms"); //C#提供的栈是基于数组实现的。 Stack <int> stack = new Stack <int>(N); Stopwatch t = new Stopwatch(); t.Start(); for (int i = 0; i < N; i++) { stack.Push(i); } for (int i = 0; i < N; i++) { stack.Pop(); } t.Stop(); Console.WriteLine("Stack'time: " + t.ElapsedMilliseconds + "ms"); Console.Read(); }
static void Main(string[] args) { Array1Stack <int> stack = new Array1Stack <int>(); for (int i = 0; i < 5; i++) { stack.Push(i); Console.WriteLine(stack); } stack.Pop(); Console.WriteLine(stack); Console.ReadKey(); }