import ndarray
import Numeric
from time import time
imppsyco=1
if imppsyco:
    import psyco
    print "Psyco active"
else:
    print "Psyco not active"

print "Numeric version:", Numeric.__version__
print "Numeric3 version:", "Very early alpha release...!"

niter = 5
N = 1000*1000
num = Numeric.arange(N,typecode='i')
#na=numarray.array(buffer(num),type=num.typecode(),shape=num.shape)
na=ndarray.arange(N,typecode='i')

def null_loop():
    for j in xrange(niter):
        for i in xrange(N):
            pass

def matrix_loop(object):
    for j in xrange(niter):
        for i in xrange(N):
            p = object[i]

if imppsyco:
    psyco.bind(null_loop)
    psyco.bind(matrix_loop)

t1=time()
null_loop()
caltime = (time()-t1)/float(niter)
print "Calibration loop:", caltime

t1=time()
matrix_loop(na)
natime = (time()-t1)/float(niter)
#print "Time for loop+Numeric3, Numeric3(getitem):", natime, natime-caltime

t1=time()
matrix_loop(num)
numtime = (time()-t1)/float(niter)
#print "Time for loop+Numeric, Numeric(getitem):", numtime, numtime-caltime

print "Time for Numeric3(getitem)/iter:", (natime-caltime)/float(N)
print "Time for Numeric(getitem)/iter:", (numtime-caltime)/float(N)

print "getitem in Numeric is %s times faster" % ((natime-caltime)/(numtime-caltime))
