Three Ways To Create An Object
Enjoy!
Type type = typeof(StringBuilder); //can be any type ConstructorInfo ci = type.GetConstructor(new Type [ 0 ]); Stopwatch watch = new Stopwatch(); watch.Start(); for (Int32 i = 0; i < 100; ++i) { StringBuilder obj = Activator.CreateInstance(type) as StringBuilder; } Int64 time1 = watch.ElapsedTicks; watch.Reset(); watch.Start(); for (Int32 i = 0; i < 100; ++i) { StringBuilder obj = ci.Invoke(null) as StringBuilder; } Int64 time2 = watch.ElapsedTicks; DynamicMethod m = new DynamicMethod(String.Empty, typeof(Object), null, type, true); ILGenerator il = m.GetILGenerator(); il.Emit(OpCodes.Newobj, ci); il.Emit(OpCodes.Ret); Func<Object> creator = m.CreateDelegate(typeof(Func<Object>)) as Func<Object>; watch.Reset(); watch.Start(); for (Int32 i = 0; i < 100; ++i) { StringBuilder obj = creator() as StringBuilder; } Int64 time3 = watch.ElapsedTicks;