IHierarhyNode interface is designed to accelerate the performance for hierarchical data in XAF application. Compared with
This post describes the results of comparing the performance of the processing of hierarchical data in XAF application. Results was obtained for Win platform. HierarchyNode solution includes 4 types of hierarchical objects:
TreeListObject implements
HierarchyNodeObject implements Xafari.Base.IHierarchyNode interface, it supports only one hierarchy.
HierarchyNodeDescendant implements Xafari.Base.IHierarchyNode interface, it supports 4 hierarchies.
HierarchicalClassifierItemDescendant implements HierarchicalClassifierItem interface.
We have monitored the following values:
- the time of loading the data into List View
- the time of expanding the node
When testing we used the following editors:
- TreeListEditor to display TreeListObject
- WinExplorerListEditor to display HierarchyNodeObject, HierarchyNodeDescendant
- WinHierarchyNodeListEditor to display HierarchyNodeObject, HierarchyNodeDescendant and HierarchicalClassifierItemDescendant
Tested count = 2345 objects. Objects are generated as follows:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | private void SetHierarchyNodeObjectDescendant() { string name = "Node_0"; HierarchyNodeDescendant theObject = ObjectSpace.FindObject(CriteriaOperator.Parse("Name=?", name)); if (theObject == null) { name = "Node_"; for (int i = 0; i < count; i++) { theObject = ObjectSpace.CreateObject(); theObject.Name = name + i; if (i >= count/2) theObject.Parent = ObjectSpace.FindObject(CriteriaOperator.Parse("Name=?", "Node_1")); } } ObjectSpace.CommitChanges(); } |
Other types of data were generated similarly.
The table below shows obtained results (time in milliseconds).
Tree List Editor | Win Explorer List Editor | Win Hierarchy Node List Editor | |||||
Tree List Object | Hierarchy Node Object | Hierarchical Classifier Item | Hierarchy Node Desc | Hierarchy Node Object | Hierarchical Classifier Item | Hierarchy Node Desc | |
1 | 14579 | 701 | 739 | 699 | 14898 | 31644 | 14399 |
2 | 9571 | 653 | 714 | 643 | 9721 | 22048 | 8833 |
1 – the time of loading the data into List View.
2 – the time of expanding the node.
Let see results in diagram form. The first figure shows the time of loading the data into List View, depending on the editor.
The second figure shows the time of first expanding the node, depending on the editor.
When working with large amounts of data, using WinExplorerListEditor was more effective compared to TreeListEditor and WinHierarchyNodeListEditor. WinHierarchyNodeListEditor and TreeListEditor gave almost equal performance. But WinExplorerListEditor uploaded the data 21 times faster and expanded the first node 14 times faster.
WinExplorerListEditor loaded HierarchicalClassifierItem objects 42 times faster and expanded the node 300 times faster.
HierarchyNodeDesc object implements 4 hierarchies, reaching almost the same results with the HierarchyNodeObject object, which implements only one hierarchy. This indicates that the presence of multiple hierarchies has no significant effect on the performance of the editor.
Topics in this section provide detailed information on hierarchical data in Xafari: each UI element.
To learn about the business model design, please refer to the following documentation sections:
The listed topics provide information on how Xafari supports hierarchical data properly declare your data classes