随笔 - 164  文章 - 0  评论 - 19  阅读 - 11万 

1.         问题

请计算下列代码执行所耗费的时间,给出通用的解决方法?

List<Int32> myList=new List<Int32>();

          for(Int32 i=0;i<ICount;i++)

          {

                                    

          myList.Add(i);

          }

 

2.         解决方法

 

using (OperationTimer op=new OperationTimer ("Generic "))

{

                            List<Int32> myList=new List<Int32>();

                            for(Int32 i=0;i<ICount;i++)

                            {

                                    

                                     myList.Add(i);

                            }

                            }

}

 

OperationTimer 类会在调用构造函数时取得时间t1,在调用Dispose()取得时间t2,中间过程耗费的时间=t2-t1. Using 语法会在using 块的末尾调用using中声明对象的Dispose方法。

 

                  

3.         代码

 

using System;

using System.Diagnostics;

using System.Collections;

using System.Collections.Generic;

namespace genericApp

{

   

    ///计时辅助类

         public class OperationTimer:IDisposable{

                  

                   private Int64 m_startTime;

                   private string m_text;

                   private Int32 m_CollectionCount;

                  

                   public OperationTimer(string text)

                   {

                            m_startTime=Stopwatch.GetTimestamp();

                            m_text=text;

                           

                   }

                  

                   public void Dispose()

                   {

                            string text=string.Format("Time={0,6:###.00}",(Stopwatch.GetTimestamp()-m_startTime)/Stopwatch.Frequency);

                            Console.WriteLine(string.Format("{0}:{1}",m_text,text));

                   }

                  

                  

         }

        

         class MainClass

         {

                   public static void Main(string[] args)

                   {

                            ValueTypePerfermanceTest();

                            Console.Read();

                   }

                  

                   static void ValueTypePerfermanceTest()

                   {

                            const Int32 ICount=20000000;

                           

                            using (OperationTimer op=new OperationTimer ("Generic "))

                            {

                                     List<Int32> myList=new List<Int32>();

                            for(Int32 i=0;i<ICount;i++)

                            {

                                    

                                     myList.Add(i);

                            }

                            }

                            using (OperationTimer op2=new OperationTimer ("ArrayList "))

                            {

                                     ArrayList myList=new ArrayList();

                            for(Int32 i=0;i<ICount;i++)

                            {

                                    

                                     myList.Add(i);

                            }

                            }

                           

                           

                   }

         }

        

        

}

 

4.         Mono 2.4 中的运行结果

Generic.jpg

posted on   8user  阅读(369)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示