[Numpy-discussion] performance problem

Travis Oliphant oliphant at ee.byu.edu
Mon Jan 30 13:59:02 CST 2006


Gerard Vermeulen wrote:

>>In current SVN, I think improved on the current state by only calling a 
>>scalar a signed integer if it is actually negative (previously only it's 
>>data-type was checked and all Python integers get converted to 
>>PyArray_LONG data-types which are signed integers).
>>
>>This fixes the immediate problem, I think.
>>
>>What are opinions on this scalar-coercion rule?
>>
>>    
>>
>
>Hmm, this is a consequence of your rule:
>
>  
>
>>>>from numpy import *; core.__version__
>>>>        
>>>>
>'0.9.5.2024'
>  
>
>>>>a = arange(3, dtype=uint32)
>>>>a-3
>>>>        
>>>>
>array([4294967293, 4294967294, 4294967295], dtype=uint32)
>  
>
>>>>a+-3
>>>>        
>>>>
>array([-3, -2, -1], dtype=int64)
>  
>
>>>>(a-3) == (a+-3)
>>>>        
>>>>
>array([False, False, False], dtype=bool)
>
>Do you think that the speed-up justifies this? I don't think so.
>
>  
>

It's still hard to say if it justifies it or not.   One way of writing 
a-3 causes automatic upcasting while the other  way doesn't.  This might 
be a good thing, depending on your point of view.  I could see people 
needing both situations. These things are never as clear as we'd like 
them to be.  

But, I could also accept a rule that treated *all* integers as the same 
kind in which case a-3 and a+(-3) would always return the same thing.

I'm fine with it either way.  So what are other opinions?

-Travis





More information about the Numpy-discussion mailing list