泛型与非泛型代码性能比较
using System;
using System.Collections.Generic;
using System.Text;
using System.Collections;
namespace ConsoleApplication1
{
//非泛型类
public class RegularStack
{
private object[] frames;
private int pointer = 0;
public RegularStack(int size)
{
this.frames = new object[size];
}
//进栈
public void Push(object frame)
{
this.frames[pointer++] = frame;
}
//出栈
public object Pop()
{
return this.frames[--pointer];
}
}
//泛型类
public class GenericStack<T>
{
private T[] frames;
private int pointer = 0;
public GenericStack(int size)
{
this.frames = new T[size];
}
//进栈
public void Push(T frame)
{
this.frames[pointer++] = frame;
}
//出栈
public object Pop()
{
return this.frames[--pointer];
}
}
public class Rectangle
{
public static void Main()
{
int iterations = 10000000; //循环次数
//RegularStack s = new RegularStack(iterations); //执行非泛型
GenericStack<int> s = new GenericStack<int>(iterations); //执行泛型
DateTime start = DateTime.Now; //开始时间
for (int i = 0; i < iterations; i++)
s.Push(i); //进栈
for (int i = 0; i < iterations; i++)
s.Pop(); //出栈
float ticks = DateTime.Now.Ticks - start.Ticks;
float duration = ticks / TimeSpan.TicksPerSecond; //花费时间
Console.WriteLine("Duration = " + string.Format("{0:#0.0000}", duration));
}
}
}
// int iterations = 100000; //循环次数
// 执行非泛型花费时间: 0.0156
// 执行泛型花费时间: 0.0000
// int iterations = 1000000; //循环次数
// 执行非泛型花费时间: 0.0938
// 执行泛型花费时间: 0.0313
// int iterations = 10000000; //循环次数
// 执行非泛型花费时间: 2.7183
// 执行泛型花费时间: 0.4063
using System.Collections.Generic;
using System.Text;
using System.Collections;
namespace ConsoleApplication1
{
//非泛型类
public class RegularStack
{
private object[] frames;
private int pointer = 0;
public RegularStack(int size)
{
this.frames = new object[size];
}
//进栈
public void Push(object frame)
{
this.frames[pointer++] = frame;
}
//出栈
public object Pop()
{
return this.frames[--pointer];
}
}
//泛型类
public class GenericStack<T>
{
private T[] frames;
private int pointer = 0;
public GenericStack(int size)
{
this.frames = new T[size];
}
//进栈
public void Push(T frame)
{
this.frames[pointer++] = frame;
}
//出栈
public object Pop()
{
return this.frames[--pointer];
}
}
public class Rectangle
{
public static void Main()
{
int iterations = 10000000; //循环次数
//RegularStack s = new RegularStack(iterations); //执行非泛型
GenericStack<int> s = new GenericStack<int>(iterations); //执行泛型
DateTime start = DateTime.Now; //开始时间
for (int i = 0; i < iterations; i++)
s.Push(i); //进栈
for (int i = 0; i < iterations; i++)
s.Pop(); //出栈
float ticks = DateTime.Now.Ticks - start.Ticks;
float duration = ticks / TimeSpan.TicksPerSecond; //花费时间
Console.WriteLine("Duration = " + string.Format("{0:#0.0000}", duration));
}
}
}
// int iterations = 100000; //循环次数
// 执行非泛型花费时间: 0.0156
// 执行泛型花费时间: 0.0000
// int iterations = 1000000; //循环次数
// 执行非泛型花费时间: 0.0938
// 执行泛型花费时间: 0.0313
// int iterations = 10000000; //循环次数
// 执行非泛型花费时间: 2.7183
// 执行泛型花费时间: 0.4063