|
| 1 | +"""Benchmark: pd.testing.assert_series_equal / assert_frame_equal / assert_index_equal.""" |
| 2 | +import json, time |
| 3 | +import numpy as np |
| 4 | +import pandas as pd |
| 5 | + |
| 6 | +SIZE = 10_000 |
| 7 | +WARMUP = 5 |
| 8 | +ITERATIONS = 100 |
| 9 | + |
| 10 | +numeric_data = np.arange(SIZE, dtype=float) * 0.1 |
| 11 | +string_data = [f"item_{i % 200}" for i in range(SIZE)] |
| 12 | +bool_data = np.arange(SIZE) % 2 == 0 |
| 13 | + |
| 14 | +s1 = pd.Series(numeric_data) |
| 15 | +s2 = pd.Series(numeric_data.copy()) |
| 16 | +s_str1 = pd.Series(string_data) |
| 17 | +s_str2 = pd.Series(string_data.copy()) |
| 18 | + |
| 19 | +df1 = pd.DataFrame({"a": numeric_data, "b": string_data, "c": bool_data}) |
| 20 | +df2 = pd.DataFrame({"a": numeric_data.copy(), "b": string_data.copy(), "c": bool_data.copy()}) |
| 21 | + |
| 22 | +idx1 = pd.Index(np.arange(SIZE)) |
| 23 | +idx2 = pd.Index(np.arange(SIZE)) |
| 24 | + |
| 25 | +for _ in range(WARMUP): |
| 26 | + pd.testing.assert_series_equal(s1, s2) |
| 27 | + pd.testing.assert_series_equal(s_str1, s_str2) |
| 28 | + pd.testing.assert_frame_equal(df1, df2) |
| 29 | + pd.testing.assert_index_equal(idx1, idx2) |
| 30 | + |
| 31 | +start = time.perf_counter() |
| 32 | +for _ in range(ITERATIONS): |
| 33 | + pd.testing.assert_series_equal(s1, s2) |
| 34 | + pd.testing.assert_series_equal(s_str1, s_str2) |
| 35 | + pd.testing.assert_frame_equal(df1, df2) |
| 36 | + pd.testing.assert_index_equal(idx1, idx2) |
| 37 | +total = (time.perf_counter() - start) * 1000 |
| 38 | + |
| 39 | +print(json.dumps({ |
| 40 | + "function": "assert_equal", |
| 41 | + "mean_ms": total / ITERATIONS, |
| 42 | + "iterations": ITERATIONS, |
| 43 | + "total_ms": total, |
| 44 | +})) |
0 commit comments