Skip to content

Commit 6312491

Browse files
committed
Add hasattr_dtype microbenchmarks.
1 parent 7e418ca commit 6312491

2 files changed

Lines changed: 60 additions & 0 deletions

File tree

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
import numpy as np
2+
import timeit
3+
4+
setups = {
5+
"hit": """data = np.float64(0.1234)""",
6+
"miss": """data = float(0.1234)""",
7+
}
8+
9+
tests = {
10+
"eafp": """
11+
try:
12+
data.dtype
13+
except AttributeError:
14+
pass
15+
""",
16+
"lbyl": """if hasattr(data, "dtype"): data.dtype""",
17+
}
18+
19+
results = {}
20+
for setup_name, setup_stmt in setups.items():
21+
for test_name, test_stmt in tests.items():
22+
test_name = f"{setup_name}, {test_name}"
23+
times = timeit.repeat(
24+
setup=setup_stmt, stmt=test_stmt, repeat=10, number=100000, globals={"np": np}
25+
)
26+
avg_time = sum(times) / len(times)
27+
results[test_name] = avg_time
28+
29+
for test_name, result in sorted(results.items(), key=lambda x: x[1]):
30+
print(f"{test_name:>18}: {result:03g}")
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
import pandas as pd
2+
import timeit
3+
4+
setups = {
5+
"hit": """data = pd.Series([0.1234])""",
6+
"miss": """data = [0.1234]""",
7+
}
8+
9+
tests = {
10+
"eafp": """
11+
try:
12+
data.dtype
13+
except AttributeError:
14+
pass
15+
""",
16+
"lbyl": """if hasattr(data, "dtype"): data.dtype""",
17+
}
18+
19+
results = {}
20+
for setup_name, setup_stmt in setups.items():
21+
for test_name, test_stmt in tests.items():
22+
test_name = f"{setup_name}, {test_name}"
23+
times = timeit.repeat(
24+
setup=setup_stmt, stmt=test_stmt, repeat=10, number=100000, globals={"pd": pd}
25+
)
26+
avg_time = sum(times) / len(times)
27+
results[test_name] = avg_time
28+
29+
for test_name, result in sorted(results.items(), key=lambda x: x[1]):
30+
print(f"{test_name:>18}: {result:03g}")

0 commit comments

Comments
 (0)