Major Performance Fix

Update DBC-2207D fixes a major performance bug in z/XDC. We urge all customers to download and install the fix as soon as possible...

The bug was probably introduced last November by DBC-2111G.
It involved the corruption of a recalculation match field that was used to eliminate unnecessary recalculations of floating address expressions.
The bug kicked in when floating equates were created whose base address expressions would not resolve successfully.

In our testing...

  • We created nine floating equates to label the first nine entries of the TIOT (Task I/O Table): EQ AXX 21C?+C?+18 LFOFFSET=0 LFWIDTH=1 MAXCLONE=9 DATA FLOAT
  • Each equate location was dependent on the location of the prior equate: LIST EQUATES AXX*
  • We then deleted one of the early equates in the sequence: DELETE EQUATE AXX2
  • This caused equates AXX3 thru AXX9 to become unresolvable: LIST EQUATES AXX*

We then issued a WHERE command:

  • Before the fix, the command locked the keyboard for 27 seconds, and internally z/XDC made 9.9 MILLION subroutine calls.
  • After the fix, the command responded instantly and made only 41 thousand internal subroutine calls.

That's a performance improvement factor of nearly 250 to one!


It's good to get this issue fixed, but we know that there is still more to do in the area of performance. During recent research conducted by Frank and myself, we have identified two other areas that we think will help significantly. I will be working on these next. So stay tuned.

Dave Cole


PS: Speaking of performance improvements, did you see our recent article about the T BNC command? If you would like to use conditional expressions but haven't because of how slow they were, then T BNC is your friend. -dbc