性能报告——反射创建对象

ExpandedBlockStart.gif 代码
         public   void  testperformance()
        {
            
string  assembly  =   " Pixysoft.Framework.Noebe.Orm " ;
            
string  type  =   " Pixysoft.Framework.Noebe.Orm.testdriven.Pojo " ;

            CodeTimer.Initialize();

            CodeTimer.Time(
" reflection " 100000 delegate
            {
                Type _type 
=  Assembly.Load(assembly).GetType(type);
                Object obj 
=  Activator.CreateInstance(_type);
            });

            CodeTimer.Time(
" direct " 100000 delegate
            {
                Object obj 
=   new  Pojo();
            });

            CodeTimer.Time(
" dynamic " 100000 delegate
            {
                Type _type 
=  Assembly.Load(assembly).GetType(type);
                Object obj 
=  ReflectionManager.CreateDynamicType(_type).GetDefaultConstructor().Invoke();
            });
        }

 

 

 

 

------ Test started: Assembly: Pixysoft.Framework.Noebe.Orm.dll ------


reflection

Time Elapsed: 2,422ms

CPU time: 2,421,875,000ns

Gen 0: 19

Gen 1: 0

Gen 2: 0


direct

Time Elapsed: 1ms

CPU time: 0ns

Gen 0: 1

Gen 1: 0

Gen 2: 0


dynamic

Time Elapsed: 2,726ms

CPU time: 2,718,750,000ns

Gen 0: 91

Gen 1: 0

Gen 2: 0



1 passed, 0 failed, 0 skipped, took 5.41 seconds (Ad hoc).



结论:

1. 反射创建对象的开销基本上可以忽略了。

2. 自己使用动态等方法创建对象并没有很大提高性能。

3. 反射创建对象的唯一难点在 参考插件里面出现的问题:加载搜索+多dll版本内存重复。 

 

转载于:https://www.cnblogs.com/zc22/archive/2010/07/27/1786185.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值