OpenEdge.Net library performance

Posted by bronco on 23-Dec-2014 10:47

While playing around with 11.5 I noticed the following:

A simple Ping implemented via REST (PAS) now takes 15ms (vs +/- 40ms in 11.4). -60%, great! The time is measured via Postman, a Google Chrome App.

Now on the subject of this post: when I try to consume this REST service from the 4GL via the OpenEdge.Net library it takes about 2500 to 3000ms.

The code:

httpRequest = RequestBuilder:Get("http://localhost:9080/testapp1/rest/testapp1/system/ping"):Request.
httpRequest:AddHeader("request-id", "abc12345").

t1 = mtime.
httpResponse = HttpClient:Instance():Execute(httpRequest).
t2 = mtime.

Now there's obviously some Json parsing as well, but 2,5 seconds it is still quite a long time, especially when such a call is done on the AppServer where time is measured in milliseconds rather than in seconds. Does anyone have a suggestion how to improve on this? I've been looking into 3rd party solution (dll, so) but these somehow add considerable complexity to the overall solution.

All Replies

Posted by jmls on 23-Dec-2014 10:59

Unfortunately, the abl code that makes the request waits for 2
seconds to see if there is any more data on the socket.

It's in the source code ..

On 23 December 2014 at 16:48, bronco wrote:
> OpenEdge.Net library performance
> Thread created by bronco
>
> While playing around with 11.5 I noticed the following:
>
> A simple Ping implemented via REST (PAS) now takes 15ms (vs +/- 40ms in
> 11.4). -60%, great! The time is measured via Postman, a Google Chrome App.
>
> Now on the subject of this post: when I try to consume this REST service
> from the 4GL via the OpenEdge.Net library it takes about 2500 to 3000ms.
>
> The code:
>
> httpRequest =
> RequestBuilder:Get("http://localhost:9080/testapp1/rest/testapp1/system/ping"):Request.
> httpRequest:AddHeader("request-id", "abc12345").
>
> t1 = mtime.
> httpResponse = HttpClient:Instance():Execute(httpRequest).
> t2 = mtime.
>
> Now there's obviously some Json parsing as well, but 2,5 seconds it is still
> quite a long time, especially when such a call is done on the AppServer
> where time is measured in milliseconds than in seconds. Does anyone have a
> suggestion how to improve on this? I've been looking into 3rd party solution
> (dll, so) but these somehow add considerable complexity to the overall
> solution.
>
> Stop receiving emails on this subject.
>
> Flag this post as spam/abuse.



--
Julian Lyndon-Smith
IT Director,
dot.r
http://www.dotr.com

Posted by Peter Judge on 23-Dec-2014 11:01

Good news/bad news.
 
Bad first: there's a bug in the code that causes the caller to wait for the socket to time out instead of being closed when the payload is completely received.
Good next: I have a fix mostly complete; if you could log a bug, then it'll be formally tracked.
 
-- peter
 
[collapse]
From: bronco [mailto:bounce-bfvo@community.progress.com]
Sent: Tuesday, 23 December, 2014 11:48
To: TU.OE.Development@community.progress.com
Subject: [Technical Users - OE Development] OpenEdge.Net library performance
 
Thread created by bronco

While playing around with 11.5 I noticed the following:

A simple Ping implemented via REST (PAS) now takes 15ms (vs +/- 40ms in 11.4). -60%, great! The time is measured via Postman, a Google Chrome App.

Now on the subject of this post: when I try to consume this REST service from the 4GL via the OpenEdge.Net library it takes about 2500 to 3000ms.

The code:

httpRequest = RequestBuilder:Get("http://localhost:9080/testapp1/rest/testapp1/system/ping"):Request.
httpRequest:AddHeader("request-id", "abc12345").

t1 = mtime.
httpResponse = HttpClient:Instance():Execute(httpRequest).
t2 = mtime.

Now there's obviously some Json parsing as well, but 2,5 seconds it is still quite a long time, especially when such a call is done on the AppServer where time is measured in milliseconds than in seconds. Does anyone have a suggestion how to improve on this? I've been looking into 3rd party solution (dll, so) but these somehow add considerable complexity to the overall solution.

Stop receiving emails on this subject.

Flag this post as spam/abuse.

[/collapse]

Posted by bronco on 23-Dec-2014 12:47

Somehow after switching employer I'm no longer able to log calls via supportlink. I've done several attempts to get this fixed but to no avail yet...

Posted by Peter Judge on 23-Dec-2014 13:00

Bronco,
 
I've logged PSC00324234 for this. I can't add your name to it (internal systems prevent me) but once you've figured out how to get supportlink working for you, you can do so via Tech Support.
 
hth,
-- peter
 
[collapse]
From: bronco [mailto:bounce-bfvo@community.progress.com]
Sent: Tuesday, 23 December, 2014 13:48
To: TU.OE.Development@community.progress.com
Subject: RE: [Technical Users - OE Development] OpenEdge.Net library performance
 
Reply by bronco

Somehow after switching employer I'm no longer able to log calls via supportlink. I've done several attempts to get this fixed but to no avail yet...

Stop receiving emails on this subject.

Flag this post as spam/abuse.

[/collapse]

Posted by bronco on 23-Dec-2014 13:16

thanks Peter, happy holidays!

This thread is closed