import timeit
import numpy as np
f = lambda x: x ** 2
vf = np.vectorize(f)
def test_array(x, n):
t = timeit.timeit(
'np.array([f(xi) for xi in x])',
'from __main__ import np, x, f', number=n)
print('array: ' + str(t))
def test_fromiter(x, n):
t = timeit.timeit(
'np.fromiter((f(xi) for xi in x), x.dtype, count=len(x))',
'from __main__ import np, x, f', number=n)
print('fromiter: ' + str(t))
def test_vectorized(x, n):
t = timeit.timeit(
'vf(x)',
'from __main__ import x, vf', number=n)
print('vectorized: ' + str(t))
def test_direct(x, n):
t = timeit.timeit(
'f(x)',
'from __main__ import x, f', number=n)
print('direct: ' + str(t))
x = np.arange(1000)
n = 1000
test_array(x, n)
test_fromiter(x, n)
test_vectorized(x, n)
test_direct(x, n)
aW1wb3J0IHRpbWVpdAppbXBvcnQgbnVtcHkgYXMgbnAKCmYgPSBsYW1iZGEgeDogeCAqKiAyCnZmID0gbnAudmVjdG9yaXplKGYpCgpkZWYgdGVzdF9hcnJheSh4LCBuKToKICAgIHQgPSB0aW1laXQudGltZWl0KAogICAgICAgICducC5hcnJheShbZih4aSkgZm9yIHhpIGluIHhdKScsCiAgICAgICAgJ2Zyb20gX19tYWluX18gaW1wb3J0IG5wLCB4LCBmJywgbnVtYmVyPW4pCiAgICBwcmludCgnYXJyYXk6ICcgKyBzdHIodCkpCgpkZWYgdGVzdF9mcm9taXRlcih4LCBuKToKICAgIHQgPSB0aW1laXQudGltZWl0KAogICAgICAgICducC5mcm9taXRlcigoZih4aSkgZm9yIHhpIGluIHgpLCB4LmR0eXBlLCBjb3VudD1sZW4oeCkpJywKICAgICAgICAnZnJvbSBfX21haW5fXyBpbXBvcnQgbnAsIHgsIGYnLCBudW1iZXI9bikKICAgIHByaW50KCdmcm9taXRlcjogJyArIHN0cih0KSkKCmRlZiB0ZXN0X3ZlY3Rvcml6ZWQoeCwgbik6CiAgICB0ID0gdGltZWl0LnRpbWVpdCgKICAgICAgICAndmYoeCknLAogICAgICAgICdmcm9tIF9fbWFpbl9fIGltcG9ydCB4LCB2ZicsIG51bWJlcj1uKQogICAgcHJpbnQoJ3ZlY3Rvcml6ZWQ6ICcgKyBzdHIodCkpCgpkZWYgdGVzdF9kaXJlY3QoeCwgbik6CiAgICB0ID0gdGltZWl0LnRpbWVpdCgKICAgICAgICAnZih4KScsCiAgICAgICAgJ2Zyb20gX19tYWluX18gaW1wb3J0IHgsIGYnLCBudW1iZXI9bikKICAgIHByaW50KCdkaXJlY3Q6ICcgKyBzdHIodCkpCgp4ID0gbnAuYXJhbmdlKDEwMDApCm4gPSAxMDAwCnRlc3RfYXJyYXkoeCwgbikKdGVzdF9mcm9taXRlcih4LCBuKQp0ZXN0X3ZlY3Rvcml6ZWQoeCwgbikKdGVzdF9kaXJlY3QoeCwgbik=