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