Why calling internal procedures is so slow in OE32bits?

Posted by joelscampos on 30-Jul-2019 14:23

Hi,

I have noticed that it is extremely slow to run programs with many internal procedures.

For example, the code bellow calls just one empty internal procedure, and takes 84 seconds to run on Windows (OpenEdge-32bits), and 500 milliseconds on Linux:

ETIME(YES).
DEF VAR ix AS INT NO-UNDO.

DO  ix = 1 TO 500000:

    RUN pr-teste.
END.
MESSAGE ETIME VIEW-AS ALERT-BOX.

PROCEDURE pr-teste:
END PROCEDURE.

Someone has already experienced this and knows the solution?

Thanks.

All Replies

Posted by tbergman on 30-Jul-2019 14:52

I tried this on 3 windows PCs.running 11.7 32bit.

The slowest took 1.67 seconds. The other two took about .54 seconds.

I don't know why yours is so slow but maybe it helps to know they're not all like that.

Posted by Rob Fitzpatrick on 30-Jul-2019 15:18

Hi Joel,

You didn't mention your OpenEdge or OS versions, which may be relevant with this question.

I tried your code; here are some average run times in ms with different DLCs on Windows (all GUI):

11.6 32-bit: 570

11.6 64-bit: 765

11.7 32-bit: 555

11.7 64-bit: 750

12.0 64-bit: 690

I ran it in a few recent 64-bit CHUI clients on a couple of different Linux boxes and it was in the 900s to 1300s.

My PC is an old gen-3 Core i7 at 3.4 GHz; Win7, if it matters.  I don't know much about the Linux boxes, as they are VMs on some host with specs, provisioning, and workload that I can't see.

I tried it in 11.7 32-bit CHUI on Win10 (1903) on a gen-1 Core i7 2.67 GHz and it took about 36000 ms.

Same box, 11.6 64-bit CHUI, about 37000 ms.

Same box, 11.7 64-bit GUI, about 1030 ms.

Same box, 11.7 32-bit GUI, about 915 ms.

Tried it in 11.7 64-bit and 12.0 64-bit GUI on Win10 (20H1) on a gen-6 U-series Core i5 2.4 GHz and it was around 560 ms.

Same box, 11.7 64-bit CHUI, about 187000 ms.  During that time, both _progres.exe and its conhost.exe show heavy kernel-mode CPU activity.

Granted, this isn't scientific testing.  But clearly the run time depends on more than just CPU type and speed, given the significant variances I saw in some cases.  I hope Progress can take up this testing and get to the bottom of it.  It is a concern for sure.

Posted by joelscampos on 30-Jul-2019 18:45

The version is 11.6 32-bit on Windows, and 64-bit on Linux.

I just repeated the test without any connection to the databases, and the time was 500 ms on Windows.

I've now repeated the test, with and without database connection, and it is now clear that performance drops when the client session is connect to the databases.

The client session has been connected to 13 databases.

I am going to do more tests now to see if a particular database is the cause of the problem.

Thank you for the test and insight.

Posted by Rob Fitzpatrick on 30-Jul-2019 19:00

No problem.  For reference, all of my tests were without database connections.

This thread is closed