[Numpy-discussion] Unnecessarily bad performance of elementwise operators with Fortran-arrays
david at ar.media.kyoto-u.ac.jp
Thu Nov 8 23:05:16 EST 2007
Travis E. Oliphant wrote:
> Christopher Barker wrote:
>> This discussion makes me wonder if the basic element-wise operations
>> could (should?) be special cased for contiguous arrays, reducing them to
>> simple pointer incrementing from the start to the finish of the data
>> block. The same code would work for C and Fortran order arrays, and be
>> pretty simple.
>> This would address Hans' issue, no?
>> It's a special case but a common one.
> There is a special case for this already. It's just that the specific
> operations he is addressing requires creation of output arrays that by
> default are in C-order. This would need to change in order to take
> advantage of the special case.
For copy and array creation, I understand this, but for element-wise
operations (mean, min, and max), this is not enough to explain the
difference, no ? For example, I can understand a 50 % or 100 % time
increase for simple operations (by simple, I mean one element operation
taking only a few CPU cycles), because of copies, but a 5 fold time
increase seems too big, no (mayb a cache problem, though) ? Also, the
fact that mean is slower than min/max for both cases (F vs C) seems a
bit counterintuitive (maybe cache effects are involved somehow ?).
Again, I see huge differences between my Xeon PIV @ 3.2 Ghz and my
pentium M @ 1.2 Ghz for those operations: pentium M gives more
"intuitive results (and is almost as fast, and sometimes even faster
than my Xeon for arrays which can stay in cache).
More information about the NumPy-Discussion