56 lines
975 B
Python
56 lines
975 B
Python
"""
|
|
Compare passing a dict to passing a dict as kwargs to a stupid transformation
|
|
|
|
Last results (1 mill calls):
|
|
|
|
j1 1.5026444319955772
|
|
k1 1.8377482700016117
|
|
j2 1.1962292949901894
|
|
k2 1.5545833489886718
|
|
j3 1.0014333260041894
|
|
k3 1.353256585993222
|
|
|
|
"""
|
|
import json
|
|
import timeit
|
|
|
|
|
|
def j1(d):
|
|
return {"prepend": "foo", **d, "append": "bar"}
|
|
|
|
|
|
def k1(**d):
|
|
return {"prepend": "foo", **d, "append": "bar"}
|
|
|
|
|
|
def j2(d):
|
|
return {**d}
|
|
|
|
|
|
def k2(**d):
|
|
return {**d}
|
|
|
|
|
|
def j3(d):
|
|
return None
|
|
|
|
|
|
def k3(**d):
|
|
return None
|
|
|
|
|
|
if __name__ == "__main__":
|
|
import timeit
|
|
|
|
with open("person.json") as f:
|
|
json_data = json.load(f)
|
|
|
|
for i in 1, 2, 3:
|
|
print(
|
|
"j{}".format(i), timeit.timeit("j{}({!r})".format(i, json_data), setup="from __main__ import j{}".format(i))
|
|
)
|
|
print(
|
|
"k{}".format(i),
|
|
timeit.timeit("k{}(**{!r})".format(i, json_data), setup="from __main__ import k{}".format(i)),
|
|
)
|