public static void Run() { CodeTimer.Initialize(); var type = typeof(MessageTest <CmdTest>); var ctor = type.GetConstructors()[2]; ObjectActivator <object> createdActivator = ActivatorHelper.GetActivator <object>(ctor); var input = new CmdTest(); var header = new MessageHeaderTest(); object tmpObj = null; var count = 1000000; CodeTimer.Time("new instance", count, () => { tmpObj = new MessageTest <CmdTest>(input, header); }); CodeTimer.Time("exp tree", count, () => { tmpObj = createdActivator(input, header); }); CodeTimer.Time("Activator.CreateInstance", count, () => { tmpObj = Activator.CreateInstance(type, input, header); }); CodeTimer.Time("exp tree2", count, () => { tmpObj = ActivatorHelper.CreateInstance(type, input, header); }); }
static void Main(string[] args) { var n = 3000000; var stop = Stopwatch.StartNew(); for (int i = 0; i < n; i++) { var instance = new Program2(i); } Console.WriteLine(stop.ElapsedMilliseconds); stop = Stopwatch.StartNew(); for (int i = 0; i < n; i++) { var instance = Activator.CreateInstance(typeof(Program2), i); } Console.WriteLine(stop.ElapsedMilliseconds); stop = Stopwatch.StartNew(); for (int i = 0; i < n; i++) { var ctor = ActivatorHelper.GetActivator <Program2>(); var instance = ctor(i); } Console.WriteLine(stop.ElapsedMilliseconds); stop = Stopwatch.StartNew(); for (int i = 0; i < n; i++) { var ctor = LazyActivatorHelper.Instance.GetActivator <Program2>(); var instance = ctor(i); } Console.WriteLine(stop.ElapsedMilliseconds); //var key = CacheHelper.GetKey(MethodBase.GetCurrentMethod(), 1, 2, bool.TrueString, false); //var ms = (DateTime.Now.Millisecond); //Console.WriteLine(ms); //CacheFactory.Current.Add(key, ms); //Console.WriteLine("aaa"); //Console.WriteLine(CacheFactory.Current.Get<int>(key)); //Console.WriteLine(typeof(Program).FullName); ////Log.ThreadVariablesContext.Set("url", "http://abc.com"); //Log.Debug("b"); //Log.Warn("Asdfasfasf"); //Log.Error("Asdfasfasf"); //Log.Info("Asdfasfasf"); //Log.Fatal("Asdfasfasf"); }