Re: Two numbers

"Tim Bradshaw (as tfb at cley dot com)" <[email protected]> Sat, 11 Apr 2026 12:39:59 +0100
Newsgroups gmane.lisp.lispworks.general
Message-ID <[email protected]>
On 11 Apr 2026, at 11:49, Yuri Davidovsky <[email protected]> wrote:
> 
> While it could be a reason for the difference, there isn’t much wiggle room for optimising 2D array access.

What I was thinking about was how good things were at knowing how many columns the array has.  If they don't know then they have to read it from the array object.  They *can* know because the macro inserts declarations which say the dimensions are (* 7) say, but whether they listen to that.  Certainly if you don't let LW know at least the rank things are hopeless.

Perhaps more significant is that the old version used to compile things like (aref v (+ c (* i 7))) for the c'th part of particle i, while the new one compiles (aref a i c), where the array is known to be (* 7) and may be SBCL generates equivalent code but LW can do more with the second version.

I can't believe the FP parts vary much, because they're literally the same in each version.

I wish (a) that SBCL and LW produced assembler output which was more similar (same instruction mnemonics, register naming: LW's is currently better I think) and (b) that ARM's documentation was less shit.  I suspect it's shit for a reason.

--tim

_______________________________________________
Lisp Hug - the mailing list for LispWorks users
[email protected]
http://www.lispworks.com/support/lisp-hug.html