I am with Bernd on the Rexx I/O has been a bottleneck, but logically speaking 
I/O can be a bottleneck being slow than memory functions. My Rexx experience is 
with VM, Netview, TSO, z/OS. Also Orexx on Linux and Windows. So I speak from 
experience as I am sure Bernd does.


Scott ford
www.identityforge.com
from my IPAD




> On Oct 23, 2014, at 10:08 PM, David Crayford <dcrayf...@gmail.com> wrote:
> 
>> On 24/10/2014 6:50 AM, Bernd Oppolzer wrote:
>> Doesn't the example in the benchmark show performance problems in EXECIO
>> instead of REXX? EXECIO, IMO, is not part of the REXX interpreter, but 
>> instead
>> it is a vehicle (an external function) to do I/O from REXX on z/OS. Other 
>> REXX implementations
>> (for example, on Linux or Windows) don't use EXECIO etc.; I/O there is done 
>> with
>> native REXX functions.
> 
> I don't want to be too disparaging about REXX but I've profiled it 
> extensively and it is not an effecient implementation. The variable access 
> routines are where it spends a lot of time so any address SUBCOM interface is 
> slow
> when compared to fast scripting languages.  Compiled REXX has a serious flaw 
> in it's memory management. I profiled it using IBM APA and it appears to do a 
> GETMAIN every time it wants a new stem varaible element.
> It could be dramatically improved just be using a better storage manager. I 
> would want my money back if I paid for the REXX compiler.
> 
>> So to be fair, the REXX interpreter functions should be compared with Lua
>> interpreter functions, for example: some loop control or arithmetic.
>> Compiled languages like C will always outperform interpreted languages
>> in this area, so such comparisons are only of academic interest.
> 
> Lua is written in C and the majority of it's libraries are too. In some cases 
> there is only 10% overhead for the Lua VM. I've got an SQL bench-test where 
> Lua is not too far off C. And much easier to code and maintain.
> 
> OK, let's try simple matrix multiplication which should test both array 
> access and math.
> 
> /* REXX */
> arg count
> if count = "" then count = 1000000
> start = sysvar("SYSCPU")
> do i = 1 to count
>  a.i = i * i
> end
> say 'CPU time = 'sysvar("SYSCPU") - start
> 
> CPU time = 3.57
> 
> local t = require("timer")()
> local count = arg[1]  or 1000000
> local a = {}
> for i = 1, count do a[i]  = a[i] * i end
> t:print_elapsed()
> 
> elapsed time: 0.131965
> 
> 
> That's a huge difference, two orders of magnitude.
> 
>> Kind regards
>> 
>> Bernd
>> 
>> 
>> 
>> Am 24.10.2014 00:24, schrieb Shane Ginnane:
>>> Good one Dave, glad you were able to convince your "powers that be" to get 
>>> this out the door.
>>> Let's hope it gets some acceptance.
>>> 
>>>> Now you have Lua installed why don't you bench-test it against REXX and
>>>> report if you get similar results to what I get on my machine
>>> Now don't you go training everybody out there as to what a slug REXX really 
>>> is ...  ;-)
>>> 
>>> Shane ...
>>> 
>>> ----------------------------------------------------------------------
>>> For IBM-MAIN subscribe / signoff / archive access instructions,
>>> send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
>> 
>> ----------------------------------------------------------------------
>> For IBM-MAIN subscribe / signoff / archive access instructions,
>> send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
> 
> ----------------------------------------------------------------------
> For IBM-MAIN subscribe / signoff / archive access instructions,
> send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN

Reply via email to