From f00a7ac44843fb84bd0c43acf458f3e440b7a893 Mon Sep 17 00:00:00 2001 From: jpbruyere Date: Fri, 12 Feb 2016 18:04:39 +0100 Subject: [PATCH] comments --- src/GraphicObjects/GraphicObject.cs | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/GraphicObjects/GraphicObject.cs b/src/GraphicObjects/GraphicObject.cs index d5f0e295..610d97f1 100644 --- a/src/GraphicObjects/GraphicObject.cs +++ b/src/GraphicObjects/GraphicObject.cs @@ -428,7 +428,13 @@ namespace Crow Interface.DefaultValuesLoader[thisType.FullName] (this); return; } - + + //Reflexion being very slow compared to dyn method or delegates, + //I compile the initial values coded in the CustomAttribs of the class, + //all other instance of this type would not longer use reflexion to init properly + //but will fetch the dynamic initialisation method compiled for this precise type + //TODO:measure speed gain. + #region Delfault values Loading dynamic compilation DynamicMethod dm = null; ILGenerator il = null; @@ -554,6 +560,7 @@ namespace Crow il.Emit (OpCodes.Callvirt, pi.GetSetMethod ()); } il.Emit(OpCodes.Ret); + #endregion Interface.DefaultValuesLoader[thisType.FullName] = (Interface.loadDefaultInvoker)dm.CreateDelegate(typeof(Interface.loadDefaultInvoker)); Interface.DefaultValuesLoader[thisType.FullName] (this); -- 2.47.3