blob: 8b449467dfd3e3af9d3779b8bbdee8488967c585 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
# performance measure of the isi calculation
from __future__ import print_function
import numpy as np
import matplotlib.pyplot as plt
import time
from functools import partial
import pyspike as spk
#import pyspike.distances # for the python functions
def measure_perf(func, loops=10):
times = np.empty(loops)
for i in xrange(loops):
start = time.clock()
func()
times[i] = time.clock() - start
return np.min(times)
print("# approximate number of spikes\tcython time [ms]\tpython time [ms]")
# fix seed to get reproducible results
np.random.seed(1)
# max times
Ns = np.arange(10000, 50001, 10000)
for N in Ns:
# first generate some data
times = 2.0*np.random.random(1.1*N)
t1 = np.cumsum(times)
# only up to T
t1 = spk.add_auxiliary_spikes(t1[t1<N], N)
times = 2.0*np.random.random(N)
t2 = np.cumsum(times)
# only up to T
t2 = spk.add_auxiliary_spikes(t2[t2<N], N)
t_cython = measure_perf(partial(spk.isi_distance, t1, t2))
t_python = measure_perf(partial(spk.distances.isi_distance_python,
t1, t2))
print("%d\t%.3f\t%.1f" % (N, t_cython*1000, t_python*1000))
|