Thank you - for i = 1, count do a[i] = i * i end fixed the problem. I get an elapsed time of about 0.14 - 0.15 running LUA on both UNIX and MVSs, But the REXX clist yields about 3.3
-----Original Message----- From: IBM Mainframe Discussion List [mailto:IBM-MAIN@LISTSERV.UA.EDU] On Behalf Of Bob Rutledge Sent: Friday, October 24, 2014 3:35 PM To: IBM-MAIN@LISTSERV.UA.EDU Subject: Re: [ANN] Lua4z: the Lua programming language on z/OS, with batteries I would guess that, as previously suggested, for i = 1, count do a[i] = a[i] * i end would really rather be for i = 1, count do a[i] = i * i end Bob Barkow, Eileen wrote: > I keep getting this error both in MVS and UNIX. > > LUA: //'xcics.lua4z.samplib(cpu)':4: attempt to perform arithmetic on field > '? > ' (a nil value) > > stack traceback: > > //'xcics.lua4z.samplib(cpu)':4: in main chunk > > ÝC¨: ? > > *** > > > -----Original Message----- > From: IBM Mainframe Discussion List [mailto:IBM-MAIN@LISTSERV.UA.EDU] > On Behalf Of Bass, Walter W > Sent: Friday, October 24, 2014 2:21 PM > To: IBM-MAIN@LISTSERV.UA.EDU > Subject: Re: [ANN] Lua4z: the Lua programming language on z/OS, with > batteries > >> -----Original Message----- >> From: IBM Mainframe Discussion List [mailto:IBM-MAIN@LISTSERV.UA.EDU] >> On Behalf Of David Crayford >> Sent: Thursday, October 23, 2014 10:08 PM >> To: IBM-MAIN@LISTSERV.UA.EDU >> Subject: Re: [ANN] Lua4z: the Lua programming language on z/OS, with >> batteries> >> >> > > <snip> > >> 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. >> > > <snip remainder> > > Maybe I'm just showing my ignorance of the Lua language syntax, but this > statement: > " a[i] = a[i] * i " > > Does not appear to be the equivalent to the REXX statement: > " a.i = i * i " > > In fact, I would expect that the above Lua statement is actually multiplying > i by an uninitialized variable "a[i]". Assuming the above code executes > without error, then due to the principle of least astonishment, I would > imagine that this uninitialized value is assumed to be zero. > > If that IS what is happening, it will of course be MUCH faster to compute i * > 0 than to compute i squared. > > Can someone with Lua syntax knowledge please enlighten me? > > Thanks, > Bill Bass > United HealthCare / Optum > > > This e-mail, including attachments, may include confidential and/or > proprietary information, and may be used only by the person or entity to > which it is addressed. If the reader of this e-mail is not the intended > recipient or his or her authorized agent, the reader is hereby notified that > any dissemination, distribution or copying of this e-mail is prohibited. If > you have received this e-mail in error, please notify the sender by replying > to this message and delete this e-mail immediately. > > > ---------------------------------------------------------------------- > 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