import std import statistics as stat check_num = [1, 2, 4, 7] test1 = std.standard_dev(check_num) test2 = stat.stdev(check_num) print(f"Stats std num {test1}") print(f"C --- std num {test2}") import sumC sumC.uni_reg([1, 2, 3, 4], [1, 2, 3]) sumC.uni_reg([1, 2, 3, 4], [1, 2, 3, 4]) sumC.uni_reg([1, 2, 3, 4], [1, 2, 3, 4], eta=10, epochs=100) sumC.uni_reg([1, 2, 3, 4], [1, 2, 3, 4], eta=-1, epochs=100) sumC.uni_reg([1, 2, 3, 4], [1, 2, 3, 4], eta=0.05, epochs=1000)
lens = range(10, 300, 10) py_time = [] np_time = [] c_time = [] for l in lens: rands = [random.random() for _ in range(0, l)] numpy_rands = np.array(rands) py_time = np.append( py_time, timeit.timeit(lambda: standard_deviation(rands), number=10000)) np_time = np.append( np_time, timeit.timeit(lambda: np.std(numpy_rands), number=10000)) c_time = np.append( c_time, timeit.timeit(lambda: std.standard_dev(rands), number=10000)) data = np.array( [np.transpose(py_time), np.transpose(np_time), np.transpose(c_time)]) df = pd.DataFrame(data.transpose(), index=lens, columns=['Python', 'Numpy', 'C++']) plt.figure() df.plot() plt.legend(loc='best') plt.ylabel('Time (Seconds)') plt.xlabel('Number of Elements') plt.title('10k Runs of Standard Deviation')
import std import stdcy import stdcyc import stdcyt import stdpy import numpy as np import random random.seed(100) rands = [random.random() for _ in range(0, 5)] cyc_rands = stdcyc.pystd(rands) cyt_rands = stdcyt.pystd(rands) print('std: ', std.standard_dev(rands)) print('stdcy: ', stdcy.standard_dev(rands)) print('stdcyc: ', cyc_rands.standard_dev()) print('stdcyt: ', cyt_rands.standard_dev()) print('stdpy: ', stdpy.standard_dev(rands)) print('numpy: ', np.std(rands))
cy_time = [] cyc_time = [] pybind_time = [] for l in lens: rands = [random.random() for _ in range(0, l)] numpy_rands = np.array( rands) # If you don't do this, It will convert every time # and there will be a some performance issues. cyc_rands = stdcyc.pystd(rands) np_time = np.append( np_time, timeit.timeit(lambda: np.std(numpy_rands), number=100)) c_time = np.append( c_time, timeit.timeit(lambda: std.standard_dev(rands), number=100)) cy_time = np.append( cy_time, timeit.timeit(lambda: stdcy.standard_dev(rands), number=100)) cyc_time = np.append( cyc_time, timeit.timeit(lambda: cyc_rands.standard_dev(), number=100)) pybind_time = np.append( pybind_time, timeit.timeit(lambda: stdpy.standard_dev(rands), number=100)) if include_pure_py: py_time = np.append( py_time, timeit.timeit(lambda: standard_deviation(rands), number=100))
import random import timeit import math import sys import std if __name__ == '__main__': lens = range(10, 300, 10) c_time = [] for l in lens: rands = [random.random() for _ in range(0, l)] execution_time = timeit.timeit(lambda: std.standard_dev(rands), number=10000) c_time.append(execution_time) print("array_size: %3d, execution_time:%f" % (l, execution_time)) with open("data/time_per_array_size_c.dat", "w") as f: for i in range(len(c_time)): f.write("%d %f\n" % (lens[i], c_time[i]))