summaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
authorMario Mulansky <mario.mulansky@gmx.net>2014-09-29 18:45:10 +0200
committerMario Mulansky <mario.mulansky@gmx.net>2014-09-29 18:45:10 +0200
commitaeec6cfafed8df110e60743073cff6d778f65af0 (patch)
tree407c4224c3e7c3bbde2068f517879efb88a1b514 /examples
parentb726773a29f85d465ff71867fab4fa5b8e5bcfe1 (diff)
+cython version for isi and performance tests
Diffstat (limited to 'examples')
-rw-r--r--examples/perf_isi.py46
-rw-r--r--examples/perf_spike.py39
2 files changed, 85 insertions, 0 deletions
diff --git a/examples/perf_isi.py b/examples/perf_isi.py
new file mode 100644
index 0000000..8b44946
--- /dev/null
+++ b/examples/perf_isi.py
@@ -0,0 +1,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))
diff --git a/examples/perf_spike.py b/examples/perf_spike.py
new file mode 100644
index 0000000..37154ae
--- /dev/null
+++ b/examples/perf_spike.py
@@ -0,0 +1,39 @@
+# 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
+
+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\texecution time [ms]")
+
+# 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 = measure_perf(partial(spk.spike_distance, t1, t2))
+
+ print("%d\t%.1f" % (N, t*1000))