DataBasic Reference > Programming in DataBasic > Efficiency Guidelines > Efficient Use of Subroutines and External Functions

Comment on this topic

Documentation Comments

Use this form to comment on this topic. You can also provide any general observations about the Online Documentation, or request that additional information be added in a future release.

RealityV15.1Online Documentation (MoTW) Revision 7

Efficient Use of Subroutines and External Functions (DataBasic) (m618705+egsubroutines.htm)

To

Reality

Version

Topic

Submitted by

Company

Location

Email address

Comment

 

 

Efficient Use of Subroutines and External Functions

See also the topic Subroutines.

Internal Subroutines

The overhead of calling an internal subroutine is very small. This is because all parameter passing is via global variables. For a small subroutine that is used in more than one program, consider using the INCLUDE statement to add it to the main program as an internal subroutine.

Note: Because all identifiers used in a module are global in scope, you will need to be careful that internal subroutines included in this way do not use the same identifiers as the programs that call them.

External Subroutines and Functions

External subroutines and functions are started in a similar way to cataloged DataBasic programs and therefore have the same performance overheads. However, the memory structures required by each user to run the routine are cached, and these overheads are therefore only incurred the first time each user calls the routine. Subsequent calls use the copy in the cache. The size of the cache has been chosen to balance program efficiency and overall system performance; it favours the use of a small number of frequently called routines. If your application uses a large number of external subroutines and/or functions, a larger cache might make it more efficient; contact Northgate Public Services for advice.

The following points should be considered when using external subroutines and functions if performance is or may be a problem:

RealityV15.1 (MoTW) Revision 7Comment on this topic