BorlandTalk.com Forum Index BorlandTalk.com
Borland discussion newsgroups
 
Archives   FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

How to speed up several calls to the same webservice
Goto page 1, 2  Next
 
Post new topic   Reply to topic    BorlandTalk.com Forum Index -> Delphi WebServices SOAP
View previous topic :: View next topic  
Author Message
Alain Quesnel
Guest





PostPosted: Thu Sep 07, 2006 6:41 am    Post subject: How to speed up several calls to the same webservice Reply with 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
Back to top
Bob Swart
Guest





PostPosted: Thu Sep 07, 2006 2:08 pm    Post subject: Re: How to speed up several calls to the same webservice Reply with quote



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





PostPosted: Thu Sep 07, 2006 10:24 pm    Post subject: Re: How to speed up several calls to the same webservice Reply with 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?

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





PostPosted: Fri Sep 08, 2006 1:21 am    Post subject: Re: How to speed up several calls to the same webservice Reply with quote

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





PostPosted: Fri Sep 08, 2006 5:26 am    Post subject: Re: How to speed up several calls to the same webservice Reply with quote

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





PostPosted: Thu Mar 01, 2007 9:14 am    Post subject: RE: How to speed up several calls to the same webservice Reply with quote

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





PostPosted: Tue Mar 06, 2007 10:42 pm    Post subject: Re: How to speed up several calls to the same webservice Reply with 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
mmm.. nice design, I must
Guest





PostPosted: Mon Mar 12, 2007 2:46 pm    Post subject: RE: How to speed up several calls to the same webservice Reply with quote

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





PostPosted: Wed Mar 14, 2007 8:19 pm    Post subject: Re: How to speed up several calls to the same webservice Reply with 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 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





PostPosted: Wed Mar 14, 2007 10:45 pm    Post subject: Re: How to speed up several calls to the same webservice Reply with quote

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





PostPosted: Thu Mar 15, 2007 1:34 am    Post subject: Re: How to speed up several calls to the same webservice Reply with quote

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





PostPosted: Thu Mar 15, 2007 5:51 am    Post subject: RE: How to speed up several calls to the same webservice Reply with quote

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





PostPosted: Sat Mar 17, 2007 4:13 am    Post subject: RE: How to speed up several calls to the same webservice Reply with quote

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





PostPosted: Sun Mar 18, 2007 7:38 pm    Post subject: RE: How to speed up several calls to the same webservice Reply with quote

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





PostPosted: Tue Mar 20, 2007 8:13 am    Post subject: RE: How to speed up several calls to the same webservice Reply with quote

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!Smile http://www.sanzkdni59.org/formula-1

BizTalk Utilities - Frustration free BizTalk Adapters
http://www.topxml.com/biztalkutilities
Back to top
Display posts from previous:   
Post new topic   Reply to topic    BorlandTalk.com Forum Index -> Delphi WebServices SOAP All times are GMT
Goto page 1, 2  Next
Page 1 of 2

 
Jump to:  
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


Powered by phpBB © 2001, 2006 phpBB Group
SEO toolkit © 2004-2006 webmedic.