Thanks Jonathan,

as for the bug on Linq I hope this can help to improve performance of mono.

At 16.01 23/12/2009, Jonathan Chambers wrote:
Hello,

Here is some summarized profiler output in case anyone is interested in where the time is going. This is the above sample for 1000 rows instead of 10000, and with --profiler=default:time.

Thanks,
Jonathan

On Wed, Dec 9, 2009 at 9:20 AM, Oskar Berggren <<mailto:oskar.bergg...@gmail.com>oskar.bergg...@gmail.com> wrote:
2009/12/9 APS <<mailto:dev.ma...@apsystems.it>dev.ma...@apsystems.it>:
> For sure I can pass a test case, is better that I file a bug report? I think > that Mono team already knows where datasets are slower than MS.Net and maybe
> can suggest me some "best practice".
> Btw with the code provided below with MS.Net on a standard developer machine
> and Mono on a bi-processor testing machine (with 2GB of ram):
>
> 1000 rows
> MS.Net: 130ms
> Mono 2.4.3:  1.2s
> Mono 2.0.1:  3.5s
>
> 10.000 rows
> MS.Net: less than a second
> Mono 2.4.3: 114s
> Mono 2.0.1: 361s


So when the data size increase by a factor of 10, on <http://ms.net>ms.net the time
taken also seem to increase by a factor of 10, but on mono by a factor
of 100. Seems like an an O(N) versus an O(N²) algorithm.

The code below contains a loop and you claim the Select part is taking
the most time. If that is true, it seems to indicate that <http://ms.net>ms.net
Select() for this case is O(1) but mono's O(N), with N being the
number of rows in the table.

/Oskar


> I have tables with more than 50.000 rows...I don't know how much it takes to
> perform the elaboration. RowFilter speed up only if applied on small
> rowsets.
> The problem is in the .Select method, removing those lines the elaboration
> is quicker in Mono. Testing machines are not with the same resources but the
> difference is too much to think to an hardware difference.
> Here is the code...
>
>             DataSet ds1 = new DataSet();
>             ds1.Tables.Add();
>             ds1.Tables[0].Columns.Add("COL1", typeof(string));
>             ds1.Tables[0].Columns.Add("COL2", typeof(int));
>             ds1.Tables[0].Columns.Add("COL3", typeof(bool));
>             for (int i = 0; i < 10000; i++) {
>                 ds1.Tables[0].Rows.Add(new object[] { "test", i, true });
>             }
>             DataSet ds2 = new DataSet();
>             ds2.Tables.Add();
>             ds2.Tables[0].Columns.Add("COL1", typeof(string));
>             ds2.Tables[0].Columns.Add("COL2", typeof(int));
>             ds2.Tables[0].Columns.Add("COL3", typeof(bool));
>             for (int i = 0; i < 10000; i++) {
>                 ds2.Tables[0].Rows.Add(new object[] { "test", i, true });
>             }
>             DataSet ds3 = new DataSet();
>             ds3.Tables.Add();
>             ds3.Tables[0].Columns.Add("COL1", typeof(string));
>             ds3.Tables[0].Columns.Add("COL2", typeof(int));
>             ds3.Tables[0].Columns.Add("COL3", typeof(bool));
>             for (int i = 0; i < 10000; i++) {
>                 ds3.Tables[0].Rows.Add(new object[] { "test", i, true });
>             }
>             int idx=0;
>             foreach (DataRow dr in ds1.Tables[0].Rows) {
>                 DataRow[] dr2 = ds2.Tables[0].Select("COL2=" + idx);
>                 DataRow[] dr3 = ds3.Tables[0].Select("COL2=" + idx);
>
>                 idx++;
>             }
>
>
>
>
> At 21.59 02/12/2009, Nagappan Alagappan wrote:
>
> Hello,
>
> Do you have a test case to reproduce this issue, which you could share with
> the Mono team ?
>
> Thanks
> Nagappan
>
> On Wed, Dec 2, 2009 at 4:05 AM, APS <<mailto:dev.ma...@apsystems.it>dev.ma...@apsystems.it > wrote:
> Hi,
>
> I'm testing some old elaboration that cycles on a large datatable and
> for every rows makes several selections on separated datatables.
> This elaboration is really slow on mono and fast on <http://MS.NET>MS.NET, let say
> 400secs vs 4 secs.
> It seems that last rows are slower that first rows.
> I made some test on datasets scroll and I saw that mono performance
> is better than <http://MS.NET>MS.NET so the delay is due to inner selections.
> I changed datatable.select in defaultview.sort and I gained 200secs,
> still too slow.
> Now I've identified some datatable.compute as the main delay source.
> I'll try to change them using Linq but the question is: there's some
> known performance problem in dataset heavy usage, there's some best
> pratice that you can suggest to speed up elaborations?
> Thanks in advance.
>
>
> _______________________________________________
> Mono-devel-list mailing list
> <mailto:Mono-devel-list@lists.ximian.com>Mono-devel-list@lists.ximian.com
> http://lists.ximian.com/mailman/listinfo/mono-devel-list
>
>
>
>
> --
> Linux Desktop (GUI Application) Testing Project -
> <http://ldtp.freedesktop.org>http://ldtp.freedesktop.org
> http://nagappanal.blogspot.com
>
> --
> Il messaggio e' stato analizzato alla ricerca di virus o
> contenuti pericolosi da MailScanner, ed e'
> risultato non infetto.
>
> _______________________________________________
> Mono-devel-list mailing list
> <mailto:Mono-devel-list@lists.ximian.com>Mono-devel-list@lists.ximian.com
> http://lists.ximian.com/mailman/listinfo/mono-devel-list
>
>
_______________________________________________
Mono-devel-list mailing list
<mailto:Mono-devel-list@lists.ximian.com>Mono-devel-list@lists.ximian.com
http://lists.ximian.com/mailman/listinfo/mono-devel-list



--
Il messaggio e' stato analizzato alla ricerca di virus o
contenuti pericolosi da <http://www.mailscanner.info/>MailScanner, ed e'
risultato non infetto.
Content-Type: text/plain; charset=US-ASCII; name="out.txt"
Content-Disposition: attachment; filename="out.txt"
X-Attachment-Id: f_g3k896wd0

_______________________________________________
Mono-devel-list mailing list
Mono-devel-list@lists.ximian.com
http://lists.ximian.com/mailman/listinfo/mono-devel-list

Reply via email to