Performance Aspects

When working with NaturalONE, following these aspects can improve the performance - especially when working with huge projects:


Keep your Objects in Local Projects...

... instead of working from the Natural Server view.

The preferred working method with NaturalONE is the local mode, where you work with Natural projects in the Eclipse workspace (see also NaturalONE and the Eclipse Workspace).

If you work in the local mode, the connections to the Natural development (NDV) server will be reduced to a minimum and you can take advantage of the variety of features provided for Natural projects and Eclipse projects in general. Only to mention a few:

  • The Natural Builder keeps the information which sources have been changed. Moreover, it knows which other objects depend on the changed sources and allows to catalog only the relevant objects on the server.

  • The Natural Navigator view offers several options for changing the arrangement of the Natural project’s objects. Moreover, it is possible to define various types of filters.

  • The Deployment Wizard collects all required application information (such as the access information for the versioning repository and the Natural server) and writes it to an Ant script which is used to start the deployment process. This Ant script makes the deployment task highly configurable and repeatable and allows you to run the deployment process unattended. For more information see section Deploying Natural Applications of Using NaturalONE.

  • The Dependencies View shows the dependencies to other Natural objects that are referenced from the source in the active editor. It is described in the Associated Views sections that are available for each editor described in section Using the Natural Editors of Using NaturalONE.

  • The Debugger which allows to debug the different types of applications that can be created with NaturalONE.

  • The Application Testing component allows testing your application, creating Unit tests for your application and generating Ant scripts for starting these tests automatically.

Define Filters...

... to display only relevant objects.

If you are working with a huge number of objects within your libraries and projects, you should consider working with filters to reduce the number of visible Natural objects to the number of objects you are currently working with.

This can improve the performance dramatically.

Filters can be defined in the Natural Navigator view and the Natural Server view.

Let the Natural Builder Decide...

... which objects must be updated.

The Natural Builder keeps the information which objects must be updated and cataloged on the server.

If you have huge projects, it is faster to update only these objects instead of rebuilding the entire project. So, after changing a source of a Natural project you should better use the command Build Natural Project instead of Update, Upload or Rebuild Natural Project.

In case you are using Natural deployment, you should use the Deployment Mode Incremental instead of Full.

When a Natural Ant build file is used the first time for deployment, the complete project is deployed and a cache file (cache _< deployFileName >_<projectName>.properties) is created. This cache file will be used for the next incremental deployment and must not be deleted from the project.

Close Projects...

... which you do not currently work on.

Yes, it is that simple: Close all projects in your workspace, which you do not need for your current work.

Look Closer at Git Label Decorations

Using a source repository is a must in modern software development. If you are working with Git as your repository, projects will show decorators that indicate, in what state the source currently is.

However, the Git label decorations could cause general performance problems with all active label decorations, because if a source change occurs, the Git Eclipse plugin sends update events for all visible project tree nodes (could be Navigator, Natural Navigator or Project Explorer view). This causes a label decoration calculation for all these nodes from all plugins with activated label decorations.

The following hints can reduce the label decoration drawing performance problem. If possible, you should:

  • reduce the number of visible project tree nodes and/or,

  • work with the Natural Navigator view, which is faster than the Project Explorer view if you have a huge number of visible project tree nodes (> 10000) and/or,

  • define filters in the Natural Navigator view to reduce the number of visible project nodes.

If all above mentioned tips are not feasible in your environment, you could also deselect the Git label decorations under the Eclipse Preferences > Appearance > Label Decorations. If you want to check your Git changes, use the Team Synchronize view or the Git Staging view in Eclipse. Moreover, there are several other tools which offer a very good Git support outside of Eclipse.

Improve Mainframe Access

When many libraries are available on the Natural system file, or a huge number of objects are contained in a library on the mainframe, the listing of these objects in the Natural Server view can take a long time. Natural provides the following hyperdescriptors that can significantly improve the database access required for this purpose:

  • H1 – Fast read of Natural object names (requires Natural for Mainframes version 9.1.2)

  • H2 – Fast read of Natural library names (requires Natural for Mainframes version 9.2.1)

If a hyperdescriptor is available, Natural Development Server (NDV) uses it for a high-performance read. The installation of the hyperdescriptor exit and the allocation of the associated hyperdescriptor are described in the following sections:

Installing the Hyperdescriptor Exit

  1. Identify the Natural system file to be improved.

  2. Add the following ADARUN card to the Adabas startup job of the database which contains the Natural system file:

    ADARUN HEX15=NATHX15
  3. Copy the hyperdescriptor exit NATHX15 to an (APF-authorized) Adabas load library. For Natural for mainframe version, as of, 8.2.8 and 9.1.2 the hyperdescriptor exit is delivered as load fix (NAT828L001 and NAT912L001, respectively). For later versions it is delivered in the Natural load library PRD.NATvrs.MVSLOAD.

  4. Restart the Adabas nucleus.

Allocating the Hyperdescriptors

  1. To allocate the H1 hyperdescriptor, execute the Adabas ADAINV utility with the following settings:

    ADAINV  INVERT FILE=fnr
    ADAINV  HYPDE='15,H1,18,A,NU=LJ,LK,LL,LM'

    where fnr is the file number of the Natural system file to be improved.

  2. To allocate the H2 hyperdescriptor, execute the Adabas ADAINV utility with the following settings:

    ADAINV  INVERT FILE=fnr
    ADAINV  HYPDE='15,H2,9,A,NU=LJ,LL,LO'

    where fnr is the file number of the Natural system file to be improved.

Repeat these steps for every Natural system file on which a hyperdescriptor should be used.

For further information regarding hyperdescriptors and the Adabas ADAINV utility, see the Adabas for Mainframes documentation.

Performance Example

In the following test, the program, subprogram and subroutine nodes in the Natural Server view are opened. The library contains in total about 15,000 objects, including 10,000 programs, 1,500 subprograms, and 100 subroutines. The image below shows the elapsed times of the NDV server component.

elapsed times of NDV using hyperdescriptor versus without

Checking the Availability of the Hyperdescriptors

The USR9203P example program in the SYSEXT library can be used to check whether the Natural hyperdescriptors are installed in the current FNAT or FUSER system file.

You can start the program from SYSEXT or directly in the Natural Tools and Utilities. To start the program in the Natural Tools and Utilities, invoke the context menu of a project in which you want to check the availability of the hyperdescriptors. Choose NaturalONE > Tools and Utilities > Check Hyperdescriptor.

Deleting a Hyperdescriptor

If a hyperdescriptor should not be used anymore, it can be deleted with the Adabas Online System (AOS). Proceed as follows:

  1. Start Natural Tools and Utilities from NaturalONE and select AOS in the menu.

    Or start AOS on the mainframe server with the following Natural commands:

    LOGON SYSAOS
    MENU
  2. Open the File Maintenance.

  3. Select Release Descriptor with

    • the file number and DBID of the Natural system file in which the hyperdescriptor was defined, and

    • the descriptor name H1 or H2.

  4. Confirm the release (that is, deletion) of the specified descriptor.

If you want to use the hyperdescriptor again, you must rerun the Adabas ADAINV utility. If there is no Natural hyperdescriptor on the Natural system files anymore for a given database, you may remove the ADARUN cards for NATHX15 from the Adabas startup job.

Maintaining the Natural System file

A Natural system file which contains the hyperdescriptor can be unloaded and reloaded with Adabas utilities. If you load the file, the hyperdescriptor exit must be known to the target database as described in the section Installing the Hyperdescriptor Exit. If the file is loaded and the ADARUN card is not defined, or the hyperdescriptor exit NATHX15 is not found, you will receive the following message when modifying Natural objects or libraries:

NAT3079 Descriptor exit error occurred. DB/FNR/Subcode .../.../1.

In this case proceed as follows:

  • If you need the hyperdescriptor in the target environment, follow the steps described in the section Installing the Hyperdescriptor Exit. A reallocation of the hyperdescriptor (Adabas ADAINV utility) is not required.

  • If the hyperdescriptor is not wanted in the target file, you can delete it with the Adabas Online System as described in the section Deleting the Hyperdescriptor.