PDS Auto completion on multilevel classes is slow ( > 3se

Posted by vimerAKANEA on 02-Oct-2018 09:26

Hello Community,

I'm facing a rather annoying issue that I can't seem to solve yet, and I wonder if one of you might have the solution.

I'm building a class / sub-class architecture for a software feature.

 

The setup

- Progress 11.6.2

- Class-oriented feature

- Using classes class with multiple level of inheritance (up to 6)

Say FClass inherits EClass, inheriting DClass, inheriting CClass,inheriting BClass, inheriting AClass

          Say SimpleClass is a very simple class with a few properties

- FClass is of a fair size (around 20 methods, with 10 of them override methods), ~1300 lines

- A-B-C-D-EClass have between 3 to 10 methods, ranging from 120 to 350 lines

 

The Issue

In any .p file if I do:

Def var myvar as SimpleClass no-undo.

Pressing ctrl-space avec ‘myvar:’ is pretty fast.

Pressing Ctrl space after ‘SUBS’ (to get SUBSTITUTE) is also immediate

 

However, if I do the same two actions in FClass: then the completion popup takes between 5 and 9 seconds to raise, with 100% of a CPU-Core used by javaw.exe

It seems to be faster in the source code of classes higher in the hierarchy.  (~1 or 2 seconds)

It feels like everytime I try to auto complete a variable, a method name or a function, PDS is processing and reflecting in all the classes above the one being written.

Does this issue ring a bell ? I've searched a little to see the options that might be consuming process time or help to reduce the "auto completion time to process" but I hardly find anything.

I've seen something called "Meta Catalog" in PDS, not sure if this might be a solution.

if needs be I can provide some more information

All Replies

Posted by Matt Baker on 02-Oct-2018 09:35

Stay away from the meta catalog.  It won't help with this.  

1. Make sure your PROPATH isn't absurdly long.

2. Make sure your source and r-code folders are not on a network drive.  local disks only.

3. Make sure your workspace metadata folders on not on a network drive. local disks only.

4.  Make sure enough memory is allocated.  Use 64 bit install, and setup to use at least -Xmx of 2GB

5. Make sure you have compile on save.  Otherwise PDSOE has to reparse every file it needs to look at.  reading r-code is much faster than building AST

6. Turn off auto complete. Leave it triggered on ctrl+space.

Posted by Mike Fechner on 02-Oct-2018 09:36

PDSOE 11.7 (don’t remember if a service pack was required) is a huge performance improvement. I really suggest an upgrade.

Posted by Matt Baker on 02-Oct-2018 09:37

7. Consider refactoring your code so you don't have such a deep class hierarchy.  Having more than 3 (arguably even less) levels of inheritance is usually a sign that your code is a good candidate for composition.

Posted by Mike Fechner on 02-Oct-2018 09:46

Plus, consider using OEDT as an add-on to PDSOE: https://www.omecra.de/

Posted by Matt Baker on 02-Oct-2018 09:52

Mike, does OEDT require PDSOE?  Is it an extension or is it a standalone tool?

Posted by jankeir on 02-Oct-2018 09:59

It depends on PDSOE

Posted by Mike Fechner on 02-Oct-2018 10:00

It’s built on top of PDSOE. It’s not a replacement.

Posted by vimerAKANEA on 02-Oct-2018 10:01

Hello

1 - switched the PROPATH locations of classes as the first folder to watch : no improvement

I'm working on local disks only, so 2 and 3 are good.

4 - I can't sadly push Allocated memory to 2GB due to

5 - Already set

6 - Same

Thanks a lot for the suggestions.

I'm afraid that unless point 4 is to blame, they gave little positive results.

Posted by Ramadevi Dhavala on 03-Oct-2018 09:29

Hi,

Few performance improvements are done w.r.t content assist and initialize tooling operations in 11.7.2 release. Upgrading to 11.7.2 or 11.7.3 can solve the performance issues w.r.t content assist.

Thanks,

Ramadevi

This thread is closed