今天扩展一个Type的扩展方法New:性能
public static object New(this Type type, params object[] args) { Guard.ArgumentNull(type, "type"); return Activator.CreateInstance(type, args); }
而后想到了测试一下其性能,因此就和直接使用Activator.CreateInstance方法做一下比较:测试
public void TestCreateInstance() { Console.WriteLine(TimeWatcher.Watch(() => { for (var i = 0; i < 10000; i++) { var o = Activator.CreateInstance(typeof(TestSerializeClass1)); } })); Console.WriteLine(TimeWatcher.Watch(() => { for (var i = 0; i < 10000; i++) { var o = typeof(TestSerializeClass1).New(); } })); }
这彷佛是画蛇添足的无用测试,却着实使我大吃一惊!this
public static object New(this Type type, params object[] args) { Guard.ArgumentNull(type, "type"); if (args == null || args.Length == 0) { return Activator.CreateInstance(type); } return Activator.CreateInstance(type, args); }
再次测试的时间以下:spa