view pylearn/sandbox/check_speed.py @ 729:d4e703a617ba

Renamed test_speed.py into check_speed.py so that nosetests does not run it
author Olivier Delalleau <delallea@iro>
date Wed, 27 May 2009 13:25:20 -0400
parents pylearn/sandbox/test_speed.py@71a052a92b05
children c5ed7022054f
line wrap: on
line source

import numpy, time
from pylearn.datasets import *
#from misc import *
from pylearn.old_dataset.dataset import ArrayDataSet, CachedDataSet
from pylearn.old_dataset.lookup_list import LookupList

def print_timing(f):
    def new_f(*lst, **kw):
        start = time.time()
        f(*lst, **kw)
        print "Time elapsed: %s" % (time.time() - start)
    return new_f

def run(array, ds):
    print "test_speed", ds.__class__

    mat = numpy.random.rand(400,100)

    @print_timing
    def f_array_full(a):
        a+1
    @print_timing
    def f_array_index(a):
        for id in range(a.shape[0]):
#            pass
            a[id]+1
#            a[id]*mat
    @print_timing
    def f_array_iter(a):
        for r in a:
#            pass
            r+1
#            r*mat
    @print_timing
    def f_ds_index(ds):
        for id in range(len(ds)):
#            pass
            ds[id][0]+1
#            ds[id][0]*mat
    @print_timing
    def f_ds_iter(ds):
        for ex in ds:
#            pass
            ex[0]+1
#            a[0]*mat
    @print_timing
    def f_ds_mb1(ds,mb_size):
        for exs in ds.minibatches(minibatch_size = mb_size):
            for ex in exs:
#                pass
                ex[0]+1
#                ex[0]*mat

    f_array_full(array)
    f_array_index(array)
    f_array_iter(array)

    f_ds_index(ds)
    f_ds_iter(ds)

    f_ds_mb1(ds,10)
    f_ds_mb1(ds,100)
    f_ds_mb1(ds,1000)
    f_ds_mb1(ds,10000)

# Subset of tests when run by nosetests.
def run_test():
    a2 = numpy.random.rand(100000,400)
    ds1 = ArrayDataSet(a2,{'all':slice(0,a2.shape[1],1)})
    run(a2, ds1)
    return a2, ds1

# Full set of tests when run from command line.
def run_full():
    a2, ds1 = run_test()
    a1 = numpy.random.rand(100000,40)
    ds4 = ArrayDataSet(a1,LookupList(["f"+str(x)for x in range(a1.shape[1])],
                                     range(a1.shape[1])))
    run(a2,ds4)
    ds2=CachedDataSet(ds1,cache_all_upon_construction=False)
    run(a2,ds2)
    del ds2
    ds3=CachedDataSet(ds1,cache_all_upon_construction=True)
    run(a2,ds3)
    del a2,ds1,ds3

if __name__=='__main__':
    run_full()