C# 反射和dynamic
来源:互联网 发布:数据降维 量子多体 编辑:程序博客网 时间:2024/06/14 19:22
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061using System;using System.Collections.Generic;using System.Diagnostics;using System.Linq;using System.Text;using System.Threading.Tasks; namespace dynamicDemo{ class Program { static void Main(string[] args) { int times = 1000000; DynamicSample reflectSample = new DynamicSample(); var addMethod = typeof(DynamicSample).GetMethod("Add"); Stopwatch watch1 = Stopwatch.StartNew(); for(var i = 0; i < times; i++) { addMethod.Invoke(reflectSample, new object[] { 1, 2 }); } Console.WriteLine(string.Format("反射耗时:{0}毫秒",watch1.ElapsedMilliseconds)); //Display:反射耗时:630毫秒 dynamic dynamicSample = new DynamicSample(); Stopwatch watch2 = Stopwatch.StartNew(); for(var i = 0; i < times; i++) { dynamicSample.Add(1, 2); } Console.WriteLine(string.Format("dynamic 耗时:{0}毫秒",watch2.ElapsedMilliseconds)); //Display:dynamic耗时:89毫秒 DynamicSample reflectSampleBetter = new DynamicSample(); var addMethod2 = typeof(DynamicSample).GetMethod("Add"); var delg = (Func<DynamicSample,int,int,int>)Delegate.CreateDelegate(typeof(Func<DynamicSample,int, int, int>), addMethod2); Stopwatch watch3 = Stopwatch.StartNew(); for(var i = 0; i < times; i++) { delg(reflectSampleBetter, 1, 2); } Console.WriteLine(string.Format("优化的反射耗时:{0}毫秒",watch3.ElapsedMilliseconds)); //Display:优化的反射耗时:17毫秒 Console.Read(); } } public class DynamicSample { public string Name { get; set; } public int Add(int a,int b) { return a + b; } }}没有优化的反射明显要比dynamic 效率低很多,优化后的反射效率是非常的理想的,但是牺牲了代码整洁.dynamic和优化的反射是在一个数量级上.所以还是推荐使用dynamic来简化反射操作.随着.net的升级反射性能也在提升.测试环境是:.net4.5- vs2015.
0 0
- C# 反射和dynamic
- C#反射对象(C# Dynamic)
- C# 反射、与dynamic最佳组合
- dynamic和反射性能的简单比较
- C# Dynamic关键字之:dynamic为什么比反射快的详解
- C#反射和特性
- c# 反射和特性
- C# 特性和反射
- C#特性和反射
- C# 4.0 特性: dynamic 和 ExpandoObject
- 【C#4.0】dynamic和var及object
- C# var标识符 和 dynamic关键字
- C#中 Var 和 dynamic 整理介绍
- C# dynamic
- 使用dynamic简化反射
- C# 程序集 和 反射
- C#自定义特性和反射
- C# Assembly反射和特性
- Windows下的Objective-C集成开发环境(IDE)的搭建
- MyEclipse8.5集成svn
- image and video processing听课笔记(二)
- JZ2440开发板学习------中级(二十六:下)
- mac CStopping ADB server failed (code -1).
- C# 反射和dynamic
- 捉坐壮拙撞尊撞孜紫鬃庄滋赘渍醉组茁坠
- 实习篇---第三十八天
- 工作杂谈之:程序员鸭梨为什么这么大
- 尊谆揍遵邹准揍桩仔赘宗装赘左桌谆咨尊
- Dalam pada itu Nazri
- Java基础知识了解
- 柞状昨走滋字注坐撰字鬃揍字锥总祖坐走
- Rafizi yang juga Nai