Hi,
I tried to post results but the file is too big, anyway, here is the benchmark program if you want to run it:
Nicolas
-----
import time
import numpy
from scipy import sparse
def benchmark(xtype = 'numpy.array', xdensity = 0.1,
ytype = 'numpy.array', ydensity = 1.0, n = 1000):
x = numpy.zeros((n,n), dtype = numpy.float64)
xi = int(n*n*xdensity)
x.reshape(n*n)[0:xi] = numpy.random.random((xi,))
y = numpy.zeros((n,1), dtype = numpy.float64)
yi = int(n*ydensity)
y.reshape(n)[0:yi] = numpy.random.random((yi,))
x = eval('%s(x)' % xtype)
y = eval('%s(y)' % ytype)
t0 = time.clock()
if xtype == 'numpy.array' and ytype == 'numpy.array':
for i in range(1000):
z = numpy.dot(x,y)
else:
for i in range(1000):
z = x*y
tf = time.clock() - t0
text = ''
text += (xtype + ' '*20)[0:20]
text += (ytype + ' '*20)[0:20]
text += '%4dx%4d %4dx%4d %.2f %.2f %.2f' % (n,n,n,1,xdensity, ydensity, tf)
return text
xtypes = ['numpy.array',
'numpy.matrix',
'sparse.lil_matrix',
'sparse.csr_matrix',
'sparse.csc_matrix']
ytypes = ['numpy.array',
'numpy.matrix',
'sparse.lil_matrix',
'sparse.csr_matrix',
'sparse.csc_matrix']
xdensities = [0.01, 0.10, 0.25, 0.50, 1.00]
ydensities = [1.00]
print '=================== =================== =========== =========== =========== =========== ======='
print 'X type Y type X size Y size X density Y density Time '
print '------------------- ------------------- ----------- ----------- ----------- ----------- -------'
n = 100
for xdensity in xdensities:
for ydensity in ydensities:
for xtype in xtypes:
for ytype in ytypes:
print benchmark(xtype, xdensity, ytype, ydensity, n)
print '------------------- ------------------- ----------- ----------- ----------- ----------- -------'
n = 1000
for xdensity in xdensities:
for ydensity in ydensities:
for xtype in xtypes:
for ytype in ytypes:
print benchmark(xtype, xdensity, ytype, ydensity, n)
print '------------------- ------------------- ----------- ----------- ----------- ----------- -------'
print '=================== =================== =========== =========== =========== =========== ======='