Version 6.30 Build 9111

Speed and performance are the main focuses for this build. Check below, for details on how the features of this build of PxPlus can help improve the performance of your application.

The following new +PxPlus Exclusive features were added to PxPlus with Build 9111
(click here to view information on the prior build -- 8915)

General
  • Access to files using embedded IOLISTS has been improved by caching variable definitions resulting in better file access times reducing the time it takes to parse data fields by up to 40%.
  • The time required to load standard or formatted list boxes has been reduced by a factor of from 5 to 8 times over prior releases.
  • Improved program load times from SERIAL files by up to 25% (increase percentage varies based on program size, larger program have larger load time improvements.
  • All string to numeric conversions have been optimized to increase overall system performance in both file I/O and the NUM function.
  • The *TBRED* interface has been expanded to support alternate keys (MSORT) files.
  • Context sensitive help files for control properties have been split into separate pages to make for easier maintainability and access.
  • OPEN, REFILE, ERASE and SELECT directives have been enhanced to provide access to the file by their Table names based on the information contained in the ProvideX data dictionary.
  • Added an OPEN (<file>) "[odb]*" to return the list of known/configured Data Sources from the ODBC driver. Once opened, a READ will return records consisting of two fields, the first being the DSN name, the second being its description.
  • The command line history buffer was improved by eliminating duplicate command mode inputs.
  • New IOLIST format STR(+) to allow for faster parsing of Windx data packets
  • PREFIX file processing was enhanced to allow file names that contain accented characters.
  • A new version of PxPlus is now available for SCO 6.0.0
   
Directives
  • An OPEN DICTIONARY directive has been added to allow your application to specify the Data dictionary to use when looking up files based on TABLE names
  • Added support for KEY=<seg1$>:<seg2$>:<seg3$> for *MEMORY* files with multi-segmented keys.
  • The READ and SELECT directives can now access keyed files by physical record position rather than by record key. This can reduce disk access up to ten-fold when the order of the data retrieved is not important.
  • Corrected minor problem with KEYED LOAD and reporting of keys with NULL suppression enabled and fixed a problem accessing EFF files after a LOCK or UNLOCK directive.
   
Functions
  • Enhanced the FIN function to return the KEY_DEFINITION and KEY_NAMES properly for *MEMORY* files with alternate keys.
  • Improved the KEP and KEN functions when used in conjunction with the KEY= to allow for the passing of non-existent keys for file positioning and, in the case of KEN, to return the true next logical KEY when duplicate keys exist. See the '+K' system parameter for details.
  • The function PTH(*DICTIONARY) will return the currently active Data dictionary pathname.
  • New TCB(503) will return number of extra characters detected in the data (or missing if negative) on last read using an IOLIST.
   
Mnemonics
  • none
   
Parameters
   
Properties
  • Added a new Property 'SortOnHdrClick for the Grid to control the automatic sorting of Grid contents based on clicking the column header.
  • Two new properties were added to control the scrolling of List boxes and Grids. For List boxes, we added 'TopVisibleItem and for Grids we added 'TopVisibleRow, both of which control the logical item/row number for the top line of the list box or grid respectively.
   
Utilities
  • The system DEMO activation logic was enhanced to include both a standard ProvideX DEMO key and a PxPlus demo key thus avoiding the need to register the DEMO Over the Web.
   

Speed Improvements with Build 9111

There were a number of changes made to PxPlus with this build that will improve the performance of your system. Many of these improvements are specific to particular functionality within the language thus it is impossible to determine what performance gain you will see by switching to this build. To view some of the actual test results, click here.

Embedded IO caching

Prior to this release, when using the IOL= on an OPEN directive to attach an IOLIST to a file, the IOLIST was not optimized. This meant all access to the file using the IOLIST was slower than the corresponding access using an IOLIST within the program or on the directive itself.

With build 9111, we are now fully optimizing the IOLISTs which results in a significant decrease in the time it takes the system to parse the data into their respective fields.

Our tests show up to a 40% reduction in the time it takes to parse and process the IOLIST with the new optimizer in place. Better yet, the new optimizer has been shown to even outperform standard IOL=<label> processing.

List box load improvements

Both standard and formatted list box load times have been greatly decreased through new memory management functions. If you are using these types of list boxes for large lists, you should see a 5-8 fold improvement on the load time.

(Note: This change does not affect list view or tree view list boxes)

Numeric conversions

The internal logic to convert string to numeric values has been reworked to run approximately 5-10% faster. This results in improved system performance when using the NUM function or when reading numeric variables from data files.

Ability to read next physical record

A new KNO=* option has been added to the READ and SELECT directives to allow you to read a file in physical record order sequence instead of in key order sequence. What this allows the system to do is minimize the disc access required to process the complete file. This can reduce the number of disc I/O operations by as much a 90%.

This feature can be very useful when reading complete files, looking for specific records and/or when doing data summations or other such analysis where the order of the data is immaterial.

(Note: Unlike the other performance improvements in 9111, this requires changing the program code in order to take advantage of the feature)

Serial program loads

While not something that is generally used in production systems, the time it takes to load programs from serial files has been improved by as much as 25%. This is due to a new mechanism to convert variable name references into optimized code (a side effect of the Embedded IO caching mentioned above).

If you are using text mode editors to develop your applications, you should see improvements when converting these programs to object form.