From: Raymond T. <to...@rt...> - 2002-02-01 13:28:25
|
>>>>> "Jefferson" == Jefferson Provost <jp...@cs...> writes: Jefferson> On 1/31/02 5:40 PM, "Tunc Simsek" <si...@ee...> wrote: >> what do you mean by native. both allegro and cmucl produce native code. >> looking at mtimes.lisp; it looks like all the declarations are in place >> for m.*! so the only reason that it may be slow is if the optimization >> flags were not set during compilation. I personally never checked that >> they are. It is worth checking this. Jefferson> Sorry, I misspoke: by native I meant to say implemented in fortran. Jefferson> Here are the average times of a few operations. Jefferson> operation | msecs (mean of 100 runs) Jefferson> -----------+--------- Jefferson> (m.*! a b) | 1351.6 Jefferson> (m.+! a b) | 8.6 Jefferson> (m* c d) | 15.2 Jefferson> A,B = 500x500 real-matrices Jefferson> C = 500x1 real matrix Jefferson> D = 1x500 real matrix You do realize that a*b is O(500^3), a+b is O(500^2) and c*d is also O(500^2). So it's not surprising that a*b takes 157 times longer than a+b and 88 times longer than c*d. To speed things up, you may want to get a copy of ATLAS and build matlisp with that if you haven't already. Ray |