https://bugzilla.novell.com/show_bug.cgi?id=386715


           Summary: Performance Problem when filling a TreeView
           Product: Mono: Class Libraries
           Version: 1.9.0
          Platform: x86-64
        OS/Version: SLES 10
            Status: NEW
          Severity: Critical
          Priority: P5 - None
         Component: Windows.Forms
        AssignedTo: [email protected]
        ReportedBy: [EMAIL PROTECTED]
         QAContact: [email protected]
          Found By: ---


Created an attachment (id=212329)
 --> (https://bugzilla.novell.com/attachment.cgi?id=212329)
Profiler output

The Mono (1.9.3) TreeView shows a dramatic performance compared with the .NET's
TreeView when adding new nodes. The more nodes my program adds, the worse the
performance is. When I'm inspecting the profiler output I'm having the
impression that my program is mainly occupied with sending messages and
updating controls.

That is my program:

// TestTreeViewPerf.cs created with MonoDevelop

using System;
using System.Windows.Forms;

namespace TestTreeViewPerf
{
    public class TestTreeViewPerf : Form
    {
        public TestTreeViewPerf() : base ()
        {
            TableLayoutPanel lp = new TableLayoutPanel ();
            lp.RowCount = 2;
            lp.ColumnCount = 1;
            lp.RowStyles.Add (new RowStyle (SizeType.Percent, 100));
            lp.RowStyles.Add (new RowStyle (SizeType.AutoSize));

            Button FillTree = new Button ();
            FillTree.Text = "Fill Tree";
            FillTree.Click += new EventHandler (FillTree_Click);

            lp.Controls.Add (m_Tree);
            m_Tree.Dock = DockStyle.Fill;
            lp.Controls.Add (FillTree);

            Controls.Add (lp);
            lp.Dock = DockStyle.Fill;
        }

        private void FillTree_Click (object sender, EventArgs args)
        {
            for (int i = 0; i < 2000; i++)
            {
                TreeNode tn = new TreeNode (i.ToString ());
                tn.Name = i.ToString ();
                m_Tree.Nodes.Add (tn);

                for (int j = 0; j < 5; j++)
                {
                    TreeNode subtn = new TreeNode (j.ToString ());
                    subtn.Name = j.ToString ();
                    tn.Nodes.Add (subtn);
                }
            }
        }

        TreeView m_Tree = new TreeView ();

        public static void Main (string [] args)
        {
            Application.EnableVisualStyles ();
            Application.SetCompatibleTextRenderingDefault (false);
            Application.Run (new TestTreeViewPerf ());
        }
    }
}


I've added the profiler output file as attachment.


-- 
Configure bugmail: https://bugzilla.novell.com/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.
You are the assignee for the bug.
_______________________________________________
mono-bugs maillist  -  [email protected]
http://lists.ximian.com/mailman/listinfo/mono-bugs

Reply via email to