- 精品下载 | 实用查询 | 词典查询 | 桌面壁纸 | 网址 | 笑话 | FLASH频道 | 天气文章资讯 | 站长工具 | 证件办理 | 闪字生成 | 广告代码 | 在线手册 | 有问必答
您现在的位置: 蓝派网 >> 文章中心 >> 网络编程 >> .NET >> .NetFramework >> 正文
站内文章搜索:           

测试函数执行效率的问题

作者:佚名    文章来源:网络转载    更新时间 :2007-11-25 13:34:56

大家一起来看看下面的2个函数,首先大家猜猜哪个函数的运行效率更高?


int a,b;sum=0; 
//a,b,赋值 
//... 
//当a << b 时,下面2个函数哪个更快? 
void fun1(){ 
   for(int i=0;i<a;i++){ 
      for(int j=0;j<b;j++){ 
         sum++; 
      } 
   } 


void fun2(){ 
   for(int i=0;i<b;i++){ 
      for(int j=0;j<a;j++){ 
         sum++; 
      } 
   } 
}    

咋一看,当a 远小于 b 时,fun2应该更快一点吧,fun2 内循环 与外循环的切换要少一些,从堆栈退出的次数要少很多。这只是感觉,于是我又写了如下程序做了一个测试: 


using System; 
using System.Threading;   



class Class1 { 
     static uint a = 100000000; 
     static uint b = 10; 
     static Thread th1; 
     static Thread th2; 

     [STAThread] 
     static void Main(string[] args) { 
         th1 = new Thread(new ThreadStart(foo1)); 
         th2 = new Thread(new ThreadStart(foo2)); 
         th1.Start(); 
         th2.Start(); 
     } 



     static void foo1() { 
         uint i = 0; 
         uint j = 0; 
         uint sum = 0; 
         for(i=0; i<a; i++) { 
              for(j=0;j<b;j++) { 
                   sum=sum+1;   


              } 
         } 
         Console.WriteLine("foo1 Over"); 
     } 



     static void foo2() { 
         uint sum = 0; 
         for(uint i=0; i<b; i++) { 
              for(uint j=0;j<a;j++) { 
                   sum += 1; 
              } 
         } 
         Console.WriteLine("foo2 Over"); 
     } 




  

运行结果如下:   

foo2 Over 

foo1 Over 

 

 
【相关文章:】
没有相关文章

发表评论】【打印此文】【关闭窗口】【点击数:
★好玩的休闲小游戏★
网友评论:
数据载入中,请稍后……