高效代码指泛型代替非泛型
用泛型代替非泛型,提高效率。
今天测试了一下使用泛型和非泛型的效率问题,结果一目了然。
例子代码如下:
public class Test
{
static int collectionCount = 0;
static Stopwatch watch = null;
static int testCount = 1000000;
public static void TestBegin()
{
GC.Collect();////强制对所有代码进行垃圾回收
GC.WaitForPendingFinalizers();////挂起线程,直到处理终结器队列的线程清空改队列。
GC.Collect();////再此回收。
collectionCount = GC.CollectionCount(0);////返回在代码执行中垃圾回收次数
watch = new Stopwatch();
watch.Start();
}
public static void TestEnd()
{
watch.Stop();
Console.WriteLine("消耗的时间:{0}",watch.ElapsedMilliseconds.ToString());
Console.WriteLine("垃圾回收的次数:{0}",GC.CollectionCount(0)-collectionCount);
}
/// <summary>
/// 测试arraylist性能
/// </summary>
public static void TestArrayList()
{
ArrayList arrayList = new ArrayList();
int temp = 0;
for (int i = 0; i < testCount; i++)
{
arrayList.Add(i);
temp=(int)arrayList[i];
}
arrayList = null;
}
/// <summary>
/// 测试泛型的性能
/// </summary>
public static void TestGenericList()
{
List<int> list = new List<int>();
int temp = 0;
for (int i = 0; i < testCount;i++ )
{
list.Add(i);
temp=list[i];
}
list = null;
}
public static void main(string []args)
{
Console.WriteLine("开始测试性能arraylist");
TestBegin();
TestArrayList();
TestEnd();
Console.WriteLine("开始测试性能List<T>泛型:");
TestBegin();
TestGenericList();
TestEnd();
Console.ReadLine();
}
}
运行结果如下:
可以看到,泛型的效率高很多。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)