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

User [EMAIL PROTECTED] added comment
https://bugzilla.novell.com/show_bug.cgi?id=357947#c1





--- Comment #1 from Juraj Skripsky <[EMAIL PROTECTED]>  2008-02-01 05:29:43 MST 
---
Created an attachment (id=192762)
 --> (https://bugzilla.novell.com/attachment.cgi?id=192762)
profile

I've changed the foreach containing "dt.Rows.Remove(r);" to the following

for(int x = 0; x < 100; x++) {
    DataRow r = (DataRow)list[x];
    dt.Rows.Remove(r);
}

..so it doesn't take forever when profiling. Then I've run "mono --profile
dt.exe >profile.txt". The result is attached.

The problem is that System.Data.Common.Index::RebuildIndex() is called for the
removal of every single row. Rebuilding the index obviously takes some time.

Updating the index by only removing the right index entry will make things much
faster. System.Data.Common.Index has an internal method "Delete (DataRow row)"
for that purpose.

We should probably change the code in DataView.cs:

private void OnRowDeleted (object sender, DataRowChangeEventArgs args)

{

        /* ItemDeleted */

        int newIndex;

        newIndex = IndexOf (args.Row);

        UpdateIndex (true);

        OnListChanged (new ListChangedEventArgs (ListChangedType.ItemDeleted,
newIndex, -1));

}


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

Reply via email to