c# - How expensive is data templating? -
i have performance problems , trying dig reasons.
so far not sure problem , next assumption it's data templating. question: how expensive using data-templating?
lets see how expensive single data template. below mcve.
xaml:
<window.resources> <datatemplate datatype="{x:type local:item}"> <stackpanel> <textblock text="{binding property1}" /> ... add here more things see difference </stackpanel> </datatemplate> </window.resources> <contentcontrol content="{binding content}" /> cs:
class item : inotifypropertychanged { public event propertychangedeventhandler propertychanged; public string property1 { get; set; } = "1"; public string property2 { get; set; } = "2"; public string property3 { get; set; } = "3"; public string property4 { get; set; } = "4"; public string property5 { get; set; } = "5"; } class viewmodel : inotifypropertychanged { public event propertychangedeventhandler propertychanged; public object content { get; set; } = new item(); } public partial class mainwindow : window { public mainwindow() { initializecomponent(); datacontext = new viewmodel(); } } and here results (measured vs profiler - application timeline in ms):
test nb ni presenter items bindings 1 1 2.42 (0.57) 1.8 b 5 5 3.37 (1.15) 1.8, 0.07, 0.1, 0.05, 0.08 c 5 10 3.63 (1.27) 0.06, 0.07, 0.08, 0.04, 0.04 1.7, 0.08, 0.05, 0.06, 0.05 d 0 1 3.38 (0.6) 2.7 explanation:
- nb - number of bindings;
- ni - number of items (elements);
- presenter - time of
contentpresenter(total/self); - items - items without binding times (when applicable);
- bidings - items bindings times (when applicable).
- a - initial test, 1
textblocksingletextbinding. - b - added 4 more
textblockbindtextother properties. - c - added 5 more
textblockstatictext="123". - d - removed except 1
textblockstatic text.
from can see, template takes 0.5 ms. there big cost creating first item (why???).
to honest not sure in correctness of method measure performance. therefore question. should avoid data-templating , start using old winforms way of populating controls manually gain performance or what?
Comments
Post a Comment