105 lines
1.7 KiB
Python
105 lines
1.7 KiB
Python
|
|
def slice_copy_to_fast():
|
|
x = list(range(100000))
|
|
y = list(range(100000))
|
|
|
|
for n in range(100000):
|
|
i = x[n]
|
|
j = y[n]
|
|
i + j
|
|
i + j
|
|
i + j
|
|
i + j
|
|
i + j
|
|
|
|
def slice_as_local():
|
|
x = list(range(100000))
|
|
y = list(range(100000))
|
|
|
|
for n in range(100000):
|
|
x[n] + y[n]
|
|
x[n] + y[n]
|
|
x[n] + y[n]
|
|
x[n] + y[n]
|
|
x[n] + y[n]
|
|
|
|
x = 34567890
|
|
y = 12345673
|
|
|
|
def copy_name_to_fast():
|
|
i = x
|
|
j = y
|
|
|
|
for _ in range(100000):
|
|
i + j
|
|
i + j
|
|
i + j
|
|
i + j
|
|
i + j
|
|
|
|
def as_local():
|
|
for _ in range(100000):
|
|
x + y
|
|
x + y
|
|
x + y
|
|
x + y
|
|
x + y
|
|
|
|
|
|
d = {
|
|
"x": 1234,
|
|
"y": 5678,
|
|
}
|
|
|
|
def copy_dict_key_to_fast():
|
|
i = d["x"]
|
|
j = d["y"]
|
|
|
|
for _ in range(100000):
|
|
i + j
|
|
i + j
|
|
i + j
|
|
i + j
|
|
i + j
|
|
|
|
def dont_copy_dict_key_to_fast():
|
|
for _ in range(100000):
|
|
d["x"] + d["y"]
|
|
d["x"] + d["y"]
|
|
d["x"] + d["y"]
|
|
d["x"] + d["y"]
|
|
d["x"] + d["y"]
|
|
|
|
|
|
class Foo:
|
|
x = 1
|
|
y = 2
|
|
|
|
foo = Foo()
|
|
|
|
def copy_attr_to_fast():
|
|
i = foo.x
|
|
j = foo.y
|
|
|
|
for _ in range(100000):
|
|
i + j
|
|
i + j
|
|
i + j
|
|
i + j
|
|
i + j
|
|
|
|
def dont_copy_attr_to_fast():
|
|
for _ in range(100000):
|
|
foo.x + foo.y
|
|
foo.x + foo.y
|
|
foo.x + foo.y
|
|
foo.x + foo.y
|
|
foo.x + foo.y
|
|
|
|
|
|
__benchmarks__ = [
|
|
(slice_as_local, slice_copy_to_fast, "Copy slice to Local"),
|
|
(as_local, copy_name_to_fast, "Copy name to Local"),
|
|
(dont_copy_dict_key_to_fast, copy_dict_key_to_fast, "Copy dict item to Local"),
|
|
(dont_copy_attr_to_fast, copy_attr_to_fast, "Copy class attr to Local"),
|
|
] |