蓝宇网络 www.py668.com

非淡泊无以明志,非宁静无以致远。

统计

常用链接

ASP.NET

阅读排行榜

评论排行榜

静态方法和动态方法的速度对比


昨天看到微软的一编锁定静态类的文章,里面说到静态方法的速度是很慢的,所以特地写了个测试来看看到底有多慢,下面是测试代码,结果,是大家循环1000000000次,静态方法1550,动态方法是1553,动态方法反而还慢,真搞不明白,微软说的速度很慢是什么意思。如果我再加上构造函数,动态方法要25秒多,如果这样测试是合理的话,那我不如在asp.net里全部用静态函数好了。这不是更快?


    
public class T1
    
{
        
public static void Test() {
            
int i = 1;
            i
++;
            
return;
        }

    }


    
public class T2
    
{
        
public T2()
        
{


        }

        
public void Test()
        
{
            
int i = 1;
            i
++;
            
return;
        }

    }



        [TestMethod]
        
public void StaticTest2()
        
{
            Stopwatch s 
= new Stopwatch();
            s.Start();
            
for (int i = 0; i < 1000000000; i++)
            
{
                T1.Test();
            }

            Console.Write(s.ElapsedMilliseconds.ToString() 
+ "\n");

            Console.Write(s.ElapsedMilliseconds.ToString() 
+ "\n");
            s.Reset();
            s.Start();

            T2 t 
= new T2();
            
for (int i = 0; i < 1000000000; i++)
            
{
                t.Test();
            }

            Console.Write(s.ElapsedMilliseconds.ToString() 
+ "\n");
        }

posted on 2006-12-30 20:11 罗记 阅读(200) 评论(2) 编辑 收藏

评论

#1楼 2008-04-22 00:23 dryg[未注册用户]

如果你把T1、T2改为:
public class T1
{
public static void Test() {
return;
}
}

public class T2
{
public T2()
{

那么结果就相反了
}
public void Test()
{
return;
}
 回复 引用   

#2楼 2011-09-16 18:02 楚奔雷      

微软说的静态方法很慢,应该是指多线程环境下吧。现在的应用程序多用户多线程的比较多。所以楼主测试的不够全面。  回复 引用 查看