On 5/02/2011 12:38 AM, Charles Mills wrote:
@Kirk: I looked at it. I played a little with the in-line TRT to replace an
strchr() or similar. I did not see any performance improvement and backed it
out. (Note *I did not see* a performance improvement; not "there was no ..."
It may have been below my threshold of measurement.)

Charles,

I've noticed quite surprising performance improvements using Metal/C. An interesting optimziation is the HGRP compiler option which tells the compiler to use 64-bit instructions in 31-bit code. A recent whitepaper I read states "it almost always produces faster code" http://www-03.ibm.com/support/techdocs/atsmastr.nsf/WebIndex/WP101796 and profiling has proved that to be correct by about 2%. On new hardware the compiler can use the PFD instruction to pre-fetch data into a cache line, thus preventing cache misses. You would have to be a very good assembler programmer
and have in-depth knowledge of the hardware to hand crank that kind of code.

With the explosion of open source code written in C Metal/C can be used to compile C code into assembler that can be then called from assembler routines. For example grab this code http://adtinfo.org/index.html compile it with the Metal/C compiler and you have a very good balanced binary tree library that can be called from any language - assembler, COBOL, PL/1 etc. You might just want to use the malloc()/calloc()/free() memory alloctor from the Metal/C runtime in your assembler.

To make Metal/C more useful IBM need to provide header files with C struct equivilents of SYS1.MACLIB/MODGEN.

@Rob: It's not an in-house program, but the CPU time measure is a "hidden"
development-only feature. I'm not using any zIIPs or zAAPs and I am just
interested in some general guidance: "is CPU time for this version in line
with CPU time for the last version when the so-and-so feature is turned on?"
My granularity is CPU time used over hours spent 99% in a wait state.
Nothing I am hearing persuades me that TCBTTIME is inappropriate. (I'm not
avoiding an assembler call to save CPU overhead; I'm avoiding an assembler
call to avoid unnecessary complexity. You could argue the point, but I think
the code I quoted is more obvious and more maintainable than an external
call, especially since I am in a situation where there is more C talent than
assembler talent.)

@Chris: Interesting. Do you suppose the technique you describe is "cheaper"
than TIMEUSED with ECT?

Charles

-----Original Message-----
From: IBM Mainframe Discussion List [mailto:IBM-MAIN@bama.ua.edu] On Behalf
Of Kirk Wolf
Sent: Friday, February 04, 2011 8:14 AM
To: IBM-MAIN@bama.ua.edu
Subject: Re: TIMEUSED versus TCBTTIME

Charles,

Related to your comment: have you looked at the new assembler gcc-style
inlining in xlc on z/OS?

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO
Search the archives at http://bama.ua.edu/archives/ibm-main.html

Reply via email to