From: jpbruyere Date: Fri, 12 Feb 2016 17:04:39 +0000 (+0100) Subject: comments X-Git-Tag: 0.3~4 X-Git-Url: https://git.osiis.dedyn.io/?a=commitdiff_plain;h=f00a7ac44843fb84bd0c43acf458f3e440b7a893;p=jp%2Fcrow.git comments --- 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);