|
From: Raymond T. <to...@rt...> - 2002-02-01 17:34:18
|
>>>>> "Jefferson" == Jefferson Provost <jp...@cs...> writes:
Jefferson> On 2/1/02 7:28 AM, "Raymond Toy" <to...@rt...> wrote:
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.
Jefferson> Yes, I realize that. But I wasn't doing a*b, I was doing a.*b, which is
Jefferson> O(500x500), same as a+b, and c*d.
Sorry, I missed the dot!
You are right. A peek at the generated code on Solaris seems to show
that we are calling out to generic functions way too often and could
be vastly optimized.
I know with CMUCL, a Lisp version of m+ was almost as fast (< 5%
slower?) than Fortran, so m.* should be as fast, even in Lisp.
I'll look in to it soon.
Ray
|