 |
BorlandTalk.com Borland discussion newsgroups
|
| View previous topic :: View next topic |
| Author |
Message |
Alain Quesnel Guest
|
Posted: Thu Sep 07, 2006 6:41 am Post subject: How to speed up several calls to the same webservice |
|
|
I'm using Delphi 2005 Pro. I call the same webservice anywhere from 70 to
900 times as I scan through the records of a table. I'm wondering if there's
a way to keep the connection alive between calls, so that the whole process
is faster. I'm using the HTTPRIO component.
Thanks,
--
Alain Quesnel
alainsansspam (AT) logiquel (DOT) com
www.logiquel.com |
|
| Back to top |
|
 |
Bob Swart Guest
|
Posted: Thu Sep 07, 2006 2:08 pm Post subject: Re: How to speed up several calls to the same webservice |
|
|
Hi Alain,
| Quote: | I'm using Delphi 2005 Pro. I call the same webservice anywhere from 70 to
900 times as I scan through the records of a table. I'm wondering if there's
a way to keep the connection alive between calls, so that the whole process
is faster. I'm using the HTTPRIO component.
|
Perhaps you can combine calls, returning more than one record at the
same time perhaps?
Groetjes,
Bob Swart
--
Bob Swart Training & Consultancy (eBob42.com) Forever Loyal to Delphi
Blog: http://www.drbob42.com/blog - RSS: http://drbob42.com/weblog.xml
New Delphi 2006 Courseware e-books at http://www.eBob42.com/courseware |
|
| Back to top |
|
 |
Alain Quesnel Guest
|
Posted: Thu Sep 07, 2006 10:24 pm Post subject: Re: How to speed up several calls to the same webservice |
|
|
I'm not sure I understand what you mean. The webservice in question takes 5
parameters and returns a single value. How can I invoke it and pass more
than one record (a set of 5 parameters) at a time?
Here's the description of the webservice:
http://tinyurl.com/rjhcg
You can use the following params if you want to try it:
-73.88114, 45.53117, METERS, -1, 0
It should yield the following result (in meters):
22.8709983825684
Thank you,
--
Alain Quesnel
alainsansspam (AT) logiquel (DOT) com
www.logiquel.com
"Bob Swart" <b.swart (AT) chello (DOT) nl> wrote in message
news:44FFE187.9040202 (AT) chello (DOT) nl...
| Quote: | Hi Alain,
I'm using Delphi 2005 Pro. I call the same webservice anywhere from 70 to
900 times as I scan through the records of a table. I'm wondering if
there's a way to keep the connection alive between calls, so that the
whole process is faster. I'm using the HTTPRIO component.
Perhaps you can combine calls, returning more than one record at the same
time perhaps?
Groetjes,
Bob Swart
--
Bob Swart Training & Consultancy (eBob42.com) Forever Loyal to Delphi
Blog: http://www.drbob42.com/blog - RSS: http://drbob42.com/weblog.xml
New Delphi 2006 Courseware e-books at http://www.eBob42.com/courseware |
|
|
| Back to top |
|
 |
Bob Swart Guest
|
Posted: Fri Sep 08, 2006 1:21 am Post subject: Re: How to speed up several calls to the same webservice |
|
|
Hi Alain,
| Quote: | I'm not sure I understand what you mean. The webservice in question takes 5
parameters and returns a single value. How can I invoke it and pass more
than one record (a set of 5 parameters) at a time?
|
By changing or extending the web service. Are you the author of the web
service (or do you have influence on its implementation?), then you can
for example add a new method with a special implementation.
| Quote: | You can use the following params if you want to try it:
-73.88114, 45.53117, METERS, -1, 0
It should yield the following result (in meters):
22.8709983825684
|
And it looks like you are calling this method between 70 and 900 times
for different records. But are you calling it with different values to
lookup or to calculate? Perhaps you could move some of the business
logic to the server, and just pass the input of your search criteria,
moving the 70-900 calls to the special new method on the server...
Groetjes,
Bob Swart
--
Bob Swart Training & Consultancy (eBob42.com) Forever Loyal to Delphi
Blog: http://www.drbob42.com/blog - RSS: http://drbob42.com/weblog.xml
New Delphi 2006 Courseware e-books at http://www.eBob42.com/courseware |
|
| Back to top |
|
 |
Alain Quesnel Guest
|
Posted: Fri Sep 08, 2006 5:26 am Post subject: Re: How to speed up several calls to the same webservice |
|
|
Now I see what you mean. And no, unfortunately I don't work for the USGS.
And the values I pass are always different. They are actually a list of
waypoints (lat-long coordinates) along a bike route, and I need the
elevation of each of these points in order to draw an elevation graph
(elevation vs distance). Just to see how hard I will pedal (or already have
pedaled).
Perhaps moving the data to a webserver (and also creating my own webservice)
might be the idea. I'll have to check the size of the database and if it's
available for download. It must be pretty big since it covers most of North
America, with a value every 10 meters or so.
Thanks for the suggestion.
--
Alain Quesnel
alainsansspam (AT) logiquel (DOT) com
www.logiquel.com
"Bob Swart" <b.swart (AT) chello (DOT) nl> wrote in message
news:45007F5D.6040202 (AT) chello (DOT) nl...
| Quote: | Hi Alain,
I'm not sure I understand what you mean. The webservice in question takes
5 parameters and returns a single value. How can I invoke it and pass
more than one record (a set of 5 parameters) at a time?
By changing or extending the web service. Are you the author of the web
service (or do you have influence on its implementation?), then you can
for example add a new method with a special implementation.
You can use the following params if you want to try it:
-73.88114, 45.53117, METERS, -1, 0
It should yield the following result (in meters):
22.8709983825684
And it looks like you are calling this method between 70 and 900 times for
different records. But are you calling it with different values to lookup
or to calculate? Perhaps you could move some of the business logic to the
server, and just pass the input of your search criteria, moving the 70-900
calls to the special new method on the server...
Groetjes,
Bob Swart
--
Bob Swart Training & Consultancy (eBob42.com) Forever Loyal to Delphi
Blog: http://www.drbob42.com/blog - RSS: http://drbob42.com/weblog.xml
New Delphi 2006 Courseware e-books at http://www.eBob42.com/courseware |
|
|
| Back to top |
|
 |
Very nice site! Good work Guest
|
Posted: Thu Mar 01, 2007 9:14 am Post subject: RE: How to speed up several calls to the same webservice |
|
|
| Quote: | I'm using Delphi 2005 Pro. I call the same webservice anywhere from 70 to
900 times as I scan through the records of a table. I'm wondering if there's
a way to keep the connection alive between calls, so that the whole process
is faster. I'm using the HTTPRIO component.
Thanks,
--
Alain Quesnel
alainsansspam (AT) logiquel (DOT) com
www.logiquel.com
|
Very nice site! Good work. http://www.sessit.port5.com
BizTalk Utilities - Frustration free BizTalk Adapters
http://www.topxml.com/biztalkutilities |
|
| Back to top |
|
 |
Jean-Marie Babet Guest
|
Posted: Tue Mar 06, 2007 10:42 pm Post subject: Re: How to speed up several calls to the same webservice |
|
|
Hello Alain,
I suspect this is the case for all versions but the current version of
SOAPHTTPTrans.pas does enable the INTERNET_FLAG_KEEP_CONNECTION (See
THTTPReqResp.Send) that enables keep-alive, if possible.
Depending on the data being sent, it's the SOAP serialization logic that's
typically slow. Recently we made a HOTFIX available that addresses some
issues with serializing arrays and multiref objects. The changes there
helped some scenarios but not all of them. Still outstanding are (a)
improvements to the (Invoke)Registry lookups - currently it's all linear;
hence slow (b) Caching of RTTI - for example, currently when serializing an
array of objects, each element does a lookup for its RTTI; the lookup should
be done only once for all elements of the array (with the provision to check
for cases where some of the elements might be of a derived type) (c) The
TXSxxxx types have an unnecessarily cluttered hierarchy (specially the
TXSDateTime/Duration family)... There are probably a few other items but
these are the ones I'm currently targeting.
If you'd like to try the array & multiref improvements, I'd be happy to
email you the files. Borland has released them officially for BDS2006 but
the changes are D2005/D7 compatible.
Cheers,
Bruneau. |
|
| Back to top |
|
 |
mmm.. nice design, I must Guest
|
Posted: Mon Mar 12, 2007 2:46 pm Post subject: RE: How to speed up several calls to the same webservice |
|
|
| Quote: | I'm using Delphi 2005 Pro. I call the same webservice anywhere from 70 to
900 times as I scan through the records of a table. I'm wondering if there's
a way to keep the connection alive between calls, so that the whole process
is faster. I'm using the HTTPRIO component.
Thanks,
--
Alain Quesnel
alainsansspam (AT) logiquel (DOT) com
www.logiquel.com
|
mmm.. nice design, I must say.. http://www.paradistc.org/italia
BizTalk Utilities - Frustration free BizTalk Adapters
http://www.topxml.com/biztalkutilities |
|
| Back to top |
|
 |
Gigi Guest
|
Posted: Wed Mar 14, 2007 8:19 pm Post subject: Re: How to speed up several calls to the same webservice |
|
|
Yes I'd like to have that file.
And if you have some other fix of httprio i'd like to have it too.
I plan to move to Delphi2007 as soon as I can ..
Which enhancement are in delphi 2007 for Soap ?
Thank you
Gigi
Jean-Marie Babet wrote:
| Quote: | Hello Alain,
I suspect this is the case for all versions but the current version of
SOAPHTTPTrans.pas does enable the INTERNET_FLAG_KEEP_CONNECTION (See
THTTPReqResp.Send) that enables keep-alive, if possible.
Depending on the data being sent, it's the SOAP serialization logic
that's typically slow. Recently we made a HOTFIX available that
addresses some issues with serializing arrays and multiref objects.
The changes there helped some scenarios but not all of them. Still
outstanding are (a) improvements to the (Invoke)Registry lookups -
currently it's all linear; hence slow (b) Caching of RTTI - for
example, currently when serializing an array of objects, each element
does a lookup for its RTTI; the lookup should be done only once for
all elements of the array (with the provision to check for cases
where some of the elements might be of a derived type) (c) The
TXSxxxx types have an unnecessarily cluttered hierarchy (specially
the TXSDateTime/Duration family)... There are probably a few other
items but these are the ones I'm currently targeting.
If you'd like to try the array & multiref improvements, I'd be happy
to email you the files. Borland has released them officially for
BDS2006 but the changes are D2005/D7 compatible.
Cheers,
Bruneau. |
|
|
| Back to top |
|
 |
Jean-Marie Babet Guest
|
Posted: Wed Mar 14, 2007 10:45 pm Post subject: Re: How to speed up several calls to the same webservice |
|
|
Hello Gigi,
I'm rushing to the WebService presentation on CodeRage. I'll send you a copy
of the files later today and I'll also post some of the enhancements in
D2007. For now I'll just mentioned that all the enhancements/fixes are
applicable to BDS2006/2005 and D7. The code has a lot of IFDEFs around but
that's what it takes to keep it compatible with the various versions.
Cheers,
Bruneau. |
|
| Back to top |
|
 |
Jean-Marie Babet Guest
|
Posted: Thu Mar 15, 2007 1:34 am Post subject: Re: How to speed up several calls to the same webservice |
|
|
Hello,
| Quote: | Yes I'd like to have that file.
And if you have some other fix of httprio i'd like to have it too.
|
I've sent you a copy of the HOTFIX10 files.
In the next day or two I'll grab D2007 enhancement/fixes and make them
available for D7/2005/2006. With D2007 and CodeRage I have not had the time
to do the merge yet (this evening probably).
| Quote: | Which enhancement are in delphi 2007 for Soap ?
|
Well, it's a continuation of the changes started in HOTFIX 10: Support for
optional (minOccurs="0") elements, unqualified elements, text elements (i.e.
types use simple derivation). Also added was support to send and receive
polymorphic types (as illustrate in the MapPoint service). There were also
several bug fixes. If there's interest, I can find all the QC# and post them
here. The auto-sync. system should also update the QC reports pretty soon.
Cheers,
Bruneau. |
|
| Back to top |
|
 |
Du musst ein Fachmann sei Guest
|
Posted: Thu Mar 15, 2007 5:51 am Post subject: RE: How to speed up several calls to the same webservice |
|
|
| Quote: | I'm using Delphi 2005 Pro. I call the same webservice anywhere from 70 to
900 times as I scan through the records of a table. I'm wondering if there's
a way to keep the connection alive between calls, so that the whole process
is faster. I'm using the HTTPRIO component.
Thanks,
--
Alain Quesnel
alainsansspam (AT) logiquel (DOT) com
www.logiquel.com
|
Du musst ein Fachmann sein - wirklich guter Aufstellungsort, den du hast! http://www.paradistc.org/liberi
BizTalk Utilities - Frustration free BizTalk Adapters
http://www.topxml.com/biztalkutilities |
|
| Back to top |
|
 |
i'am really impressed!! h Guest
|
Posted: Sat Mar 17, 2007 4:13 am Post subject: RE: How to speed up several calls to the same webservice |
|
|
| Quote: | I'm using Delphi 2005 Pro. I call the same webservice anywhere from 70 to
900 times as I scan through the records of a table. I'm wondering if there's
a way to keep the connection alive between calls, so that the whole process
is faster. I'm using the HTTPRIO component.
Thanks,
--
Alain Quesnel
alainsansspam (AT) logiquel (DOT) com
www.logiquel.com
|
i'am really impressed!! http://www.sanzkdni59.org/libera
BizTalk Utilities - Frustration free BizTalk Adapters
http://www.topxml.com/biztalkutilities |
|
| Back to top |
|
 |
luogo grande:) nessun oss Guest
|
Posted: Sun Mar 18, 2007 7:38 pm Post subject: RE: How to speed up several calls to the same webservice |
|
|
| Quote: | I'm using Delphi 2005 Pro. I call the same webservice anywhere from 70 to
900 times as I scan through the records of a table. I'm wondering if there's
a way to keep the connection alive between calls, so that the whole process
is faster. I'm using the HTTPRIO component.
Thanks,
--
Alain Quesnel
alainsansspam (AT) logiquel (DOT) com
www.logiquel.com
|
luogo grande:) nessun osservazioni! http://www.paradistc.org/sardinia
BizTalk Utilities - Frustration free BizTalk Adapters
http://www.topxml.com/biztalkutilities |
|
| Back to top |
|
 |
Chi ha fatto questo? E un Guest
|
Posted: Tue Mar 20, 2007 8:13 am Post subject: RE: How to speed up several calls to the same webservice |
|
|
| Quote: | I'm using Delphi 2005 Pro. I call the same webservice anywhere from 70 to
900 times as I scan through the records of a table. I'm wondering if there's
a way to keep the connection alive between calls, so that the whole process
is faster. I'm using the HTTPRIO component.
Thanks,
--
Alain Quesnel
alainsansspam (AT) logiquel (DOT) com
www.logiquel.com
|
Chi ha fatto questo? E un buon posto per trovare le informazioni importanti! http://www.sanzkdni59.org/formula-1
BizTalk Utilities - Frustration free BizTalk Adapters
http://www.topxml.com/biztalkutilities |
|
| Back to top |
|
 |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|