C#泛型创建实例
1 class Test<T> where T : new() 2 { 3 public static T Instance() 4 { 5 return new T(); 6 } 7 }
就上面这方法, 居然比new object
慢了几十倍(在x86和x64上面表现不一), 我当时就惊呆了, 后来研究一番才发现, new T()
被翻译成System.Activator.CreateInstance()
, 真的是日了狗了.
把代码改成
1 public static Fun<T> Instance = Expression.Lambda<Func<T>>(Expression.New(typeof(T))).Compile()
然后只比new object
慢了四五倍…