DataSet.ReadXml is very slow

H

hs

Hi
I'm doing the following code

DataSet ds = new DataSet();
ds.ReadXml("product.xml"); //product.xml is 3Mb
//or ds.ReadXml(new FileStream("product.xml", File.Open));
//or ds.ReadXml(new XmlTextReader(new StringReader("<root>very long
xml</root>")));
dataGrid1.DataSource = ds.Tables[0];

the ReadXml method is taking a long time to complete (12 seconds approx, in
debug).
It doesnt matter if I use a XmlTextReader, or a Stream in the ReadXml
constructor, it still takes about 12 seconds. Can someone tell me how I
could improve this speed.


thanks
 
S

Scot Rose [MSFT]

You have given no information about the size of the XML (How many rows are we talking about?) For a small file , 12 seconds may be a long time, for a large file it might be really
good... WIthout that information as a frame of reference it is hard to determine either way.

Want to know more? Check out the MSDN Library at http://msdn.microsoft.com or the Microsoft Knowledge Base at http://support.microsoft.com

Scot Rose, MCSD
Microsoft Visual Basic Developer Support
Email : (e-mail address removed) <Remove word online. from address>

This posting is provided “AS IS”, with no warranties, and confers no rights.




--------------------
 
H

hs

Hi Scot
product.xml, a file i created using DataSet.WriteXml(), is about 3Mb (i
mentioned this in my first post) and is 3000 records approximately (which i
didn't mention).
I've looked at alot of links on msdn but can't find anything about my issue.

thanks



Scot Rose said:
You have given no information about the size of the XML (How many rows are
we talking about?) For a small file , 12 seconds may be a long time, for a
large file it might be really
good... WIthout that information as a frame of reference it is hard to determine either way.

Want to know more? Check out the MSDN Library at http://msdn.microsoft.com
or the Microsoft Knowledge Base at http://support.microsoft.com
Scot Rose, MCSD
Microsoft Visual Basic Developer Support
Email : (e-mail address removed) <Remove word online. from address>

This posting is provided "AS IS", with no warranties, and confers no rights.
--------------------
Reply-To: "hs" <[email protected]>
From: "hs" <[email protected]>
Subject: DataSet.ReadXml is very slow
Date: Wed, 23 Jul 2003 15:31:32 +0100
Lines: 23
X-Priority: 3
X-MSMail-Priority: Normal
X-Newsreader: Microsoft Outlook Express 6.00.2800.1158
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1165
Message-ID: <[email protected]>
Newsgroups: microsoft.public.dotnet.framework.adonet
NNTP-Posting-Host: mailgate.synergy-logistics.co.uk 62.49.130.162
Path: cpmsftngxa06.phx.gbl!TK2MSFTNGP08.phx.gbl!tk2msftngp13.phx.gbl
Xref: cpmsftngxa06.phx.gbl microsoft.public.dotnet.framework.adonet:56527
X-Tomcat-NG: microsoft.public.dotnet.framework.adonet

Hi
I'm doing the following code

DataSet ds = new DataSet();
ds.ReadXml("product.xml"); //product.xml is 3Mb
//or ds.ReadXml(new FileStream("product.xml", File.Open));
//or ds.ReadXml(new XmlTextReader(new StringReader("<root>very long
xml</root>")));
dataGrid1.DataSource = ds.Tables[0];

the ReadXml method is taking a long time to complete (12 seconds approx, in
debug).
It doesnt matter if I use a XmlTextReader, or a Stream in the ReadXml
constructor, it still takes about 12 seconds. Can someone tell me how I
could improve this speed.


thanks
 
S

Scot Rose [MSFT]

I missed that<G> 3mb is a pretty large file for only 3000 records. Are some of the fields Long text fields or Binary fields? How long does it take to write out the XMLin the fist place?

Want to know more? Check out the MSDN Library at http://msdn.microsoft.com or the Microsoft Knowledge Base at http://support.microsoft.com

Scot Rose, MCSD
Microsoft Visual Basic Developer Support
Email : (e-mail address removed) <Remove word online. from address>

This posting is provided “AS IS”, with no warranties, and confers no rights.




--------------------
Reply-To: "hs" <[email protected]>
From: "hs" <[email protected]>
References: <[email protected]> <[email protected]>
Subject: Re: DataSet.ReadXml is very slow
Date: Thu, 24 Jul 2003 15:27:05 +0100
Lines: 77
X-Priority: 3
X-MSMail-Priority: Normal
X-Newsreader: Microsoft Outlook Express 6.00.2800.1158
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1165
Message-ID: <u4Vgp#[email protected]>
Newsgroups: microsoft.public.dotnet.framework.adonet
NNTP-Posting-Host: mailgate.synergy-logistics.co.uk 62.49.130.162
Path: cpmsftngxa06.phx.gbl!TK2MSFTNGP08.phx.gbl!TK2MSFTNGP11.phx.gbl
Xref: cpmsftngxa06.phx.gbl microsoft.public.dotnet.framework.adonet:56632
X-Tomcat-NG: microsoft.public.dotnet.framework.adonet

Hi Scot
product.xml, a file i created using DataSet.WriteXml(), is about 3Mb (i
mentioned this in my first post) and is 3000 records approximately (which i
didn't mention).
I've looked at alot of links on msdn but can't find anything about my issue.

thanks



Scot Rose said:
You have given no information about the size of the XML (How many rows are
we talking about?) For a small file , 12 seconds may be a long time, for a
large file it might be really
good... WIthout that information as a frame of reference it is hard to determine either way.

Want to know more? Check out the MSDN Library at http://msdn.microsoft.com
or the Microsoft Knowledge Base at http://support.microsoft.com
Scot Rose, MCSD
Microsoft Visual Basic Developer Support
Email : (e-mail address removed) <Remove word online. from address>

This posting is provided "AS IS", with no warranties, and confers no rights.
--------------------
Reply-To: "hs" <[email protected]>
From: "hs" <[email protected]>
Subject: DataSet.ReadXml is very slow
Date: Wed, 23 Jul 2003 15:31:32 +0100
Lines: 23
X-Priority: 3
X-MSMail-Priority: Normal
X-Newsreader: Microsoft Outlook Express 6.00.2800.1158
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1165
Message-ID: <[email protected]>
Newsgroups: microsoft.public.dotnet.framework.adonet
NNTP-Posting-Host: mailgate.synergy-logistics.co.uk 62.49.130.162
Path: cpmsftngxa06.phx.gbl!TK2MSFTNGP08.phx.gbl!tk2msftngp13.phx.gbl
Xref: cpmsftngxa06.phx.gbl microsoft.public.dotnet.framework.adonet:56527
X-Tomcat-NG: microsoft.public.dotnet.framework.adonet

Hi
I'm doing the following code

DataSet ds = new DataSet();
ds.ReadXml("product.xml"); //product.xml is 3Mb
//or ds.ReadXml(new FileStream("product.xml", File.Open));
//or ds.ReadXml(new XmlTextReader(new StringReader("<root>very long
xml</root>")));
dataGrid1.DataSource = ds.Tables[0];

the ReadXml method is taking a long time to complete (12 seconds approx, in
debug).
It doesnt matter if I use a XmlTextReader, or a Stream in the ReadXml
constructor, it still takes about 12 seconds. Can someone tell me how I
could improve this speed.


thanks
 
H

hs

Hi Scott,
It doesn't take that long to write out the xml (about 1-2 seconds). Most of
the fields are strings, some are datetimes but no binary or longs. There are
some ints as well.
The table the dataset is reading (ds.ReadXml) has about 30 fields per
datarow. An end user probably wouldn't request this much information but i
am trying out the worst case scenario.


thanks



Scot Rose said:
I missed that<G> 3mb is a pretty large file for only 3000 records. Are
some of the fields Long text fields or Binary fields? How long does it take
to write out the XMLin the fist place?
Want to know more? Check out the MSDN Library at http://msdn.microsoft.com
or the Microsoft Knowledge Base at http://support.microsoft.com
Scot Rose, MCSD
Microsoft Visual Basic Developer Support
Email : (e-mail address removed) <Remove word online. from address>

This posting is provided "AS IS", with no warranties, and confers no rights.
Subject: Re: DataSet.ReadXml is very slow
Date: Thu, 24 Jul 2003 15:27:05 +0100
Lines: 77
X-Priority: 3
X-MSMail-Priority: Normal
X-Newsreader: Microsoft Outlook Express 6.00.2800.1158
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1165
Message-ID: <u4Vgp#[email protected]>
Newsgroups: microsoft.public.dotnet.framework.adonet
NNTP-Posting-Host: mailgate.synergy-logistics.co.uk 62.49.130.162
Path: cpmsftngxa06.phx.gbl!TK2MSFTNGP08.phx.gbl!TK2MSFTNGP11.phx.gbl
Xref: cpmsftngxa06.phx.gbl microsoft.public.dotnet.framework.adonet:56632
X-Tomcat-NG: microsoft.public.dotnet.framework.adonet

Hi Scot
product.xml, a file i created using DataSet.WriteXml(), is about 3Mb (i
mentioned this in my first post) and is 3000 records approximately (which i
didn't mention).
I've looked at alot of links on msdn but can't find anything about my issue.

thanks



Scot Rose said:
You have given no information about the size of the XML (How many rows
are
we talking about?) For a small file , 12 seconds may be a long time, for a
large file it might be really
good... WIthout that information as a frame of reference it is hard to determine either way.

Want to know more? Check out the MSDN Library at
http://msdn.microsoft.com
or the Microsoft Knowledge Base at http://support.microsoft.com
Scot Rose, MCSD
Microsoft Visual Basic Developer Support
Email : (e-mail address removed) <Remove word online. from address>

This posting is provided "AS IS", with no warranties, and confers no rights.




--------------------
Reply-To: "hs" <[email protected]>
From: "hs" <[email protected]>
Subject: DataSet.ReadXml is very slow
Date: Wed, 23 Jul 2003 15:31:32 +0100
Lines: 23
X-Priority: 3
X-MSMail-Priority: Normal
X-Newsreader: Microsoft Outlook Express 6.00.2800.1158
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1165
Message-ID: <[email protected]>
Newsgroups: microsoft.public.dotnet.framework.adonet
NNTP-Posting-Host: mailgate.synergy-logistics.co.uk 62.49.130.162
Path: cpmsftngxa06.phx.gbl!TK2MSFTNGP08.phx.gbl!tk2msftngp13.phx.gbl
Xref: cpmsftngxa06.phx.gbl microsoft.public.dotnet.framework.adonet:56527
X-Tomcat-NG: microsoft.public.dotnet.framework.adonet

Hi
I'm doing the following code

DataSet ds = new DataSet();
ds.ReadXml("product.xml"); //product.xml is 3Mb
//or ds.ReadXml(new FileStream("product.xml", File.Open));
//or ds.ReadXml(new XmlTextReader(new StringReader("<root>very long
xml</root>")));
dataGrid1.DataSource = ds.Tables[0];

the ReadXml method is taking a long time to complete (12 seconds
approx,
in
debug).
It doesnt matter if I use a XmlTextReader, or a Stream in the ReadXml
constructor, it still takes about 12 seconds. Can someone tell me how I
could improve this speed.


thanks
 
H

hs

The code as follows
DataSet ds = new DataSet();
ds.ReadXml("product.xml");
dataGrid1.DataSource = ds.Tables[0];

when product.xml = 3000 records ds.ReadXml() takes 11.7 seconds
when product.xml = 2000 records ds.ReadXml() takes 4.2 seconds
when product.xml = 1000 records ds.ReadXml() takes 2.4 seconds

I can't send you a copy of product.xml but it has the following format.
<?xml version="1.0" standalone="yes" ?>
<NewDataSet>
<Table>
<PRO_CODE>XXXX</PRO_CODE>
<PRO_STATUS>00</PRO_STATUS>
<PRO_DESCRIPTION>XXXXXXXXXXXXXX</PRO_DESCRIPTION>
<PRO_SHORT_DESC>XXXXXXXXXX</PRO_SHORT_DESC>
<PRO_OWN_ID>XXXX</PRO_OWN_ID>
<PRO_PRG_CODE>XXXXXXXXXX</PRO_PRG_CODE>
<PRO_PRG_SUB_CODE>XXX</PRO_PRG_SUB_CODE>
<PRO_CLASS>100</PRO_CLASS>
<PRO_VALUE>02</PRO_VALUE>
<PRO_LIFE_COST>10004.0000</PRO_LIFE_COST>
<PRO_TEAM>100</PRO_TEAM>
<PRO_ITEM_GOM_CODE>XXX</PRO_ITEM_GOM_CODE>
<PRO_COM_QTY>0</PRO_COM_QTY>
<PRO_TYPE_HEIGHT>0</PRO_TYPE_HEIGHT>
<PRO_TYPE_WIDTH>0</PRO_TYPE_WIDTH>
<PRO_TYPE_DEPTH>0</PRO_TYPE_DEPTH>
<PRO_TYPE_WEIGHT>0</PRO_TYPE_WEIGHT>
<PRO_EXPIRY_DATE>0</PRO_EXPIRY_DATE>
<PRO_CUSTO_DATE>0</PRO_CUSTO_DATE>
<PRO_SIZEDT_CODE>0</PRO_SIZEDT_CODE>
<PRO_SERIAL_NO>0</PRO_SERIAL_NO>
<PRO_BATCH_ROTAS>01</PRO_BATCH_ROTAS>
<PRO_PUBS_REQUIRED>0</PRO_PUBS_REQUIRED>
<PRO_MAINT_INT>0</PRO_MAINT_IND>
</Table>
....3000 or 2000 or 1000 <Tables all with same format>
</NewDataSet>

My problem is, I have customers who will pull their hair out if any data
appearing on the client takes more than 3 seconds.
On top of this, i'm planning to send the xml as a string via SOAP!
If I return the dataset via SOAP, times are quicker (as I can bind this
dataset to the datagrid immediately). But SOAP itself takes up time
serializing/deserializing etc.

I'm surprised MS never thought about having a "retrieve as needed" approach
(where you send only a fraction of the requested data (say only 50 records),
display it and then go back getting the rest in the background...or
something like this).
My customers see the information on screen instantly, thinking its the
worlds fastest software using the internet/intranet, and we're all happy. If
i could create something like this, then i probably wouldn't would be
asking for help about why readxml takes so long.


Scot Rose said:
That is still a pretty good size text file to be read in (And read in
Sequentially) so it could take a bit of time. Do you have a small sample you
could send to me that reproduces this
behavior? I'd be glad to take a look at it and see if I can get a handle
on whether or not this would be considered a 'normal' amount of time for
this operation or not. Also, IF the file
were say, 1500 records instead of 3000 does it take exactly half as long
to load? (6 seconds instead of 12). In other words, does there apppear to be
a pattern, say 1000 records
takes 4 seconds, 2000 takes 8.. etc...

Want to know more? Check out the MSDN Library at http://msdn.microsoft.com
or the Microsoft Knowledge Base at http://support.microsoft.com
Scot Rose, MCSD
Microsoft Visual Basic Developer Support
Email : (e-mail address removed) <Remove word online. from address>

This posting is provided "AS IS", with no warranties, and confers no rights.
Subject: Re: DataSet.ReadXml is very slow
Date: Mon, 28 Jul 2003 08:53:07 +0100
Lines: 141
X-Priority: 3
X-MSMail-Priority: Normal
X-Newsreader: Microsoft Outlook Express 6.00.2800.1158
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1165
Message-ID: <[email protected]>
Newsgroups: microsoft.public.dotnet.framework.adonet
NNTP-Posting-Host: mailgate.synergy-logistics.co.uk 62.49.130.162
Path: cpmsftngxa06.phx.gbl!TK2MSFTNGP08.phx.gbl!TK2MSFTNGP09.phx.gbl
Xref: cpmsftngxa06.phx.gbl microsoft.public.dotnet.framework.adonet:56837
X-Tomcat-NG: microsoft.public.dotnet.framework.adonet

Hi Scott,
It doesn't take that long to write out the xml (about 1-2 seconds). Most of
the fields are strings, some are datetimes but no binary or longs. There are
some ints as well.
The table the dataset is reading (ds.ReadXml) has about 30 fields per
datarow. An end user probably wouldn't request this much information but i
am trying out the worst case scenario.


thanks



Scot Rose said:
I missed that<G> 3mb is a pretty large file for only 3000 records. Are
some of the fields Long text fields or Binary fields? How long does it take
to write out the XMLin the fist place?
Want to know more? Check out the MSDN Library at
http://msdn.microsoft.com
or the Microsoft Knowledge Base at http://support.microsoft.com
Scot Rose, MCSD
Microsoft Visual Basic Developer Support
Email : (e-mail address removed) <Remove word online. from address>

This posting is provided "AS IS", with no warranties, and confers no rights.
Subject: Re: DataSet.ReadXml is very slow
Date: Thu, 24 Jul 2003 15:27:05 +0100
Lines: 77
X-Priority: 3
X-MSMail-Priority: Normal
X-Newsreader: Microsoft Outlook Express 6.00.2800.1158
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1165
Message-ID: <u4Vgp#[email protected]>
Newsgroups: microsoft.public.dotnet.framework.adonet
NNTP-Posting-Host: mailgate.synergy-logistics.co.uk 62.49.130.162
Path: cpmsftngxa06.phx.gbl!TK2MSFTNGP08.phx.gbl!TK2MSFTNGP11.phx.gbl
Xref: cpmsftngxa06.phx.gbl microsoft.public.dotnet.framework.adonet:56632
X-Tomcat-NG: microsoft.public.dotnet.framework.adonet

Hi Scot
product.xml, a file i created using DataSet.WriteXml(), is about 3Mb (i
mentioned this in my first post) and is 3000 records approximately
(which
i
didn't mention).
I've looked at alot of links on msdn but can't find anything about my issue.

thanks



You have given no information about the size of the XML (How many
rows
are
we talking about?) For a small file , 12 seconds may be a long time,
for
a
large file it might be really
good... WIthout that information as a frame of reference it is hard to
determine either way.

Want to know more? Check out the MSDN Library at http://msdn.microsoft.com
or the Microsoft Knowledge Base at http://support.microsoft.com

Scot Rose, MCSD
Microsoft Visual Basic Developer Support
Email : (e-mail address removed) <Remove word online. from address>

This posting is provided "AS IS", with no warranties, and confers no
rights.




--------------------
Reply-To: "hs" <[email protected]>
From: "hs" <[email protected]>
Subject: DataSet.ReadXml is very slow
Date: Wed, 23 Jul 2003 15:31:32 +0100
Lines: 23
X-Priority: 3
X-MSMail-Priority: Normal
X-Newsreader: Microsoft Outlook Express 6.00.2800.1158
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1165
Message-ID: <[email protected]>
Newsgroups: microsoft.public.dotnet.framework.adonet
NNTP-Posting-Host: mailgate.synergy-logistics.co.uk 62.49.130.162
Path: cpmsftngxa06.phx.gbl!TK2MSFTNGP08.phx.gbl!tk2msftngp13.phx.gbl
Xref: cpmsftngxa06.phx.gbl microsoft.public.dotnet.framework.adonet:56527
X-Tomcat-NG: microsoft.public.dotnet.framework.adonet

Hi
I'm doing the following code

DataSet ds = new DataSet();
ds.ReadXml("product.xml"); //product.xml is 3Mb
//or ds.ReadXml(new FileStream("product.xml", File.Open));
//or ds.ReadXml(new XmlTextReader(new StringReader("<root>very long
xml</root>")));
dataGrid1.DataSource = ds.Tables[0];

the ReadXml method is taking a long time to complete (12 seconds approx,
in
debug).
It doesnt matter if I use a XmlTextReader, or a Stream in the ReadXml
constructor, it still takes about 12 seconds. Can someone tell me
how
I
could improve this speed.


thanks
 
S

Scot Rose [MSFT]

One thing to keep in mind when designing, ADO.Net was designed and optimized for SMALL recordsets, performance takes a hit with more than a few hundred records, and this is
probably what you are seeing. Unfortuanately The internet doesn't make something like an Asyncronous access like you mentioned practicle. Now IF you were using Client side
code you could build the recordet by retrieiving the first 50 then the others after populating the controls, then just add additional info to the dataset, but this isn't going to work on
ASPX or other serverside code, but coding this would be up to you, no provision was built into ADOX for this (You could always suggest that as a feature request at the feedback
site)

http://register.microsoft.com/mswis...=/isapi/gomscom.asp?target=/mswish/thanks.htm

Want to know more? Check out the MSDN Library at http://msdn.microsoft.com or the Microsoft Knowledge Base at http://support.microsoft.com

Scot Rose, MCSD
Microsoft Visual Basic Developer Support
Email : (e-mail address removed) <Remove word online. from address>

This posting is provided “AS IS”, with no warranties, and confers no rights.




--------------------
Subject: Re: DataSet.ReadXml is very slow
Date: Thu, 31 Jul 2003 10:36:25 +0100
Lines: 266
X-Priority: 3
X-MSMail-Priority: Normal
X-Newsreader: Microsoft Outlook Express 6.00.2800.1158
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1165
Message-ID: <[email protected]>
Newsgroups: microsoft.public.dotnet.framework.adonet
NNTP-Posting-Host: mailgate.synergy-logistics.co.uk 62.49.130.162
Path: cpmsftngxa06.phx.gbl!TK2MSFTNGP08.phx.gbl!TK2MSFTNGP09.phx.gbl
Xref: cpmsftngxa06.phx.gbl microsoft.public.dotnet.framework.adonet:57121
X-Tomcat-NG: microsoft.public.dotnet.framework.adonet

The code as follows
DataSet ds = new DataSet();
ds.ReadXml("product.xml");
dataGrid1.DataSource = ds.Tables[0];

when product.xml = 3000 records ds.ReadXml() takes 11.7 seconds
when product.xml = 2000 records ds.ReadXml() takes 4.2 seconds
when product.xml = 1000 records ds.ReadXml() takes 2.4 seconds

I can't send you a copy of product.xml but it has the following format.
<?xml version="1.0" standalone="yes" ?>
<NewDataSet>
<Table>
<PRO_CODE>XXXX</PRO_CODE>
<PRO_STATUS>00</PRO_STATUS>
<PRO_DESCRIPTION>XXXXXXXXXXXXXX</PRO_DESCRIPTION>
<PRO_SHORT_DESC>XXXXXXXXXX</PRO_SHORT_DESC>
<PRO_OWN_ID>XXXX</PRO_OWN_ID>
<PRO_PRG_CODE>XXXXXXXXXX</PRO_PRG_CODE>
<PRO_PRG_SUB_CODE>XXX</PRO_PRG_SUB_CODE>
<PRO_CLASS>100</PRO_CLASS>
<PRO_VALUE>02</PRO_VALUE>
<PRO_LIFE_COST>10004.0000</PRO_LIFE_COST>
<PRO_TEAM>100</PRO_TEAM>
<PRO_ITEM_GOM_CODE>XXX</PRO_ITEM_GOM_CODE>
<PRO_COM_QTY>0</PRO_COM_QTY>
<PRO_TYPE_HEIGHT>0</PRO_TYPE_HEIGHT>
<PRO_TYPE_WIDTH>0</PRO_TYPE_WIDTH>
<PRO_TYPE_DEPTH>0</PRO_TYPE_DEPTH>
<PRO_TYPE_WEIGHT>0</PRO_TYPE_WEIGHT>
<PRO_EXPIRY_DATE>0</PRO_EXPIRY_DATE>
<PRO_CUSTO_DATE>0</PRO_CUSTO_DATE>
<PRO_SIZEDT_CODE>0</PRO_SIZEDT_CODE>
<PRO_SERIAL_NO>0</PRO_SERIAL_NO>
<PRO_BATCH_ROTAS>01</PRO_BATCH_ROTAS>
<PRO_PUBS_REQUIRED>0</PRO_PUBS_REQUIRED>
<PRO_MAINT_INT>0</PRO_MAINT_IND>
</Table>
....3000 or 2000 or 1000 <Tables all with same format>
</NewDataSet>

My problem is, I have customers who will pull their hair out if any data
appearing on the client takes more than 3 seconds.
On top of this, i'm planning to send the xml as a string via SOAP!
If I return the dataset via SOAP, times are quicker (as I can bind this
dataset to the datagrid immediately). But SOAP itself takes up time
serializing/deserializing etc.

I'm surprised MS never thought about having a "retrieve as needed" approach
(where you send only a fraction of the requested data (say only 50 records),
display it and then go back getting the rest in the background...or
something like this).
My customers see the information on screen instantly, thinking its the
worlds fastest software using the internet/intranet, and we're all happy. If
i could create something like this, then i probably wouldn't would be
asking for help about why readxml takes so long.


Scot Rose said:
That is still a pretty good size text file to be read in (And read in
Sequentially) so it could take a bit of time. Do you have a small sample you
could send to me that reproduces this
behavior? I'd be glad to take a look at it and see if I can get a handle
on whether or not this would be considered a 'normal' amount of time for
this operation or not. Also, IF the file
were say, 1500 records instead of 3000 does it take exactly half as long
to load? (6 seconds instead of 12). In other words, does there apppear to be
a pattern, say 1000 records
takes 4 seconds, 2000 takes 8.. etc...

Want to know more? Check out the MSDN Library at http://msdn.microsoft.com
or the Microsoft Knowledge Base at http://support.microsoft.com
Scot Rose, MCSD
Microsoft Visual Basic Developer Support
Email : (e-mail address removed) <Remove word online. from address>

This posting is provided "AS IS", with no warranties, and confers no rights.
Subject: Re: DataSet.ReadXml is very slow
Date: Mon, 28 Jul 2003 08:53:07 +0100
Lines: 141
X-Priority: 3
X-MSMail-Priority: Normal
X-Newsreader: Microsoft Outlook Express 6.00.2800.1158
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1165
Message-ID: <[email protected]>
Newsgroups: microsoft.public.dotnet.framework.adonet
NNTP-Posting-Host: mailgate.synergy-logistics.co.uk 62.49.130.162
Path: cpmsftngxa06.phx.gbl!TK2MSFTNGP08.phx.gbl!TK2MSFTNGP09.phx.gbl
Xref: cpmsftngxa06.phx.gbl microsoft.public.dotnet.framework.adonet:56837
X-Tomcat-NG: microsoft.public.dotnet.framework.adonet

Hi Scott,
It doesn't take that long to write out the xml (about 1-2 seconds). Most of
the fields are strings, some are datetimes but no binary or longs. There are
some ints as well.
The table the dataset is reading (ds.ReadXml) has about 30 fields per
datarow. An end user probably wouldn't request this much information but i
am trying out the worst case scenario.


thanks



I missed that<G> 3mb is a pretty large file for only 3000 records. Are
some of the fields Long text fields or Binary fields? How long does it take
to write out the XMLin the fist place?

Want to know more? Check out the MSDN Library at http://msdn.microsoft.com
or the Microsoft Knowledge Base at http://support.microsoft.com

Scot Rose, MCSD
Microsoft Visual Basic Developer Support
Email : (e-mail address removed) <Remove word online. from address>

This posting is provided "AS IS", with no warranties, and confers no
rights.




--------------------
Reply-To: "hs" <[email protected]>
From: "hs" <[email protected]>
References: <[email protected]>
<[email protected]>
Subject: Re: DataSet.ReadXml is very slow
Date: Thu, 24 Jul 2003 15:27:05 +0100
Lines: 77
X-Priority: 3
X-MSMail-Priority: Normal
X-Newsreader: Microsoft Outlook Express 6.00.2800.1158
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1165
Message-ID: <u4Vgp#[email protected]>
Newsgroups: microsoft.public.dotnet.framework.adonet
NNTP-Posting-Host: mailgate.synergy-logistics.co.uk 62.49.130.162
Path: cpmsftngxa06.phx.gbl!TK2MSFTNGP08.phx.gbl!TK2MSFTNGP11.phx.gbl
Xref: cpmsftngxa06.phx.gbl microsoft.public.dotnet.framework.adonet:56632
X-Tomcat-NG: microsoft.public.dotnet.framework.adonet

Hi Scot
product.xml, a file i created using DataSet.WriteXml(), is about 3Mb (i
mentioned this in my first post) and is 3000 records approximately (which
i
didn't mention).
I've looked at alot of links on msdn but can't find anything about my
issue.

thanks



You have given no information about the size of the XML (How many rows
are
we talking about?) For a small file , 12 seconds may be a long time, for
a
large file it might be really
good... WIthout that information as a frame of reference it is hard to
determine either way.

Want to know more? Check out the MSDN Library at
http://msdn.microsoft.com
or the Microsoft Knowledge Base at http://support.microsoft.com

Scot Rose, MCSD
Microsoft Visual Basic Developer Support
Email : (e-mail address removed) <Remove word online. from address>

This posting is provided "AS IS", with no warranties, and confers no
rights.




--------------------
Reply-To: "hs" <[email protected]>
From: "hs" <[email protected]>
Subject: DataSet.ReadXml is very slow
Date: Wed, 23 Jul 2003 15:31:32 +0100
Lines: 23
X-Priority: 3
X-MSMail-Priority: Normal
X-Newsreader: Microsoft Outlook Express 6.00.2800.1158
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1165
Message-ID: <[email protected]>
Newsgroups: microsoft.public.dotnet.framework.adonet
NNTP-Posting-Host: mailgate.synergy-logistics.co.uk 62.49.130.162
Path: cpmsftngxa06.phx.gbl!TK2MSFTNGP08.phx.gbl!tk2msftngp13.phx.gbl
Xref: cpmsftngxa06.phx.gbl
microsoft.public.dotnet.framework.adonet:56527
X-Tomcat-NG: microsoft.public.dotnet.framework.adonet

Hi
I'm doing the following code

DataSet ds = new DataSet();
ds.ReadXml("product.xml"); //product.xml is 3Mb
//or ds.ReadXml(new FileStream("product.xml", File.Open));
//or ds.ReadXml(new XmlTextReader(new StringReader("<root>very long
xml</root>")));
dataGrid1.DataSource = ds.Tables[0];

the ReadXml method is taking a long time to complete (12 seconds
approx,
in
debug).
It doesnt matter if I use a XmlTextReader, or a Stream in the ReadXml
constructor, it still takes about 12 seconds. Can someone tell me how
I
could improve this speed.


thanks
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top