Skip to content

Commit b71ecbd

Browse files
mroeschkejreback
authored andcommitted
CLN: ASV binary ops benchmark (#18444)
1 parent 200227e commit b71ecbd

File tree

1 file changed

+44
-47
lines changed

1 file changed

+44
-47
lines changed

asv_bench/benchmarks/binary_ops.py

+44-47
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,20 @@
1-
from .pandas_vb_common import *
1+
import numpy as np
2+
from pandas import DataFrame, Series, date_range
23
try:
34
import pandas.core.computation.expressions as expr
45
except ImportError:
56
import pandas.computation.expressions as expr
67

78

89
class Ops(object):
10+
911
goal_time = 0.2
1012

1113
params = [[True, False], ['default', 1]]
1214
param_names = ['use_numexpr', 'threads']
1315

1416
def setup(self, use_numexpr, threads):
17+
np.random.seed(1234)
1518
self.df = DataFrame(np.random.randn(20000, 100))
1619
self.df2 = DataFrame(np.random.randn(20000, 100))
1720

@@ -20,94 +23,88 @@ def setup(self, use_numexpr, threads):
2023
if not use_numexpr:
2124
expr.set_use_numexpr(False)
2225

23-
2426
def time_frame_add(self, use_numexpr, threads):
25-
(self.df + self.df2)
27+
self.df + self.df2
2628

2729
def time_frame_mult(self, use_numexpr, threads):
28-
(self.df * self.df2)
30+
self.df * self.df2
2931

3032
def time_frame_multi_and(self, use_numexpr, threads):
31-
self.df[((self.df > 0) & (self.df2 > 0))]
33+
self.df[(self.df > 0) & (self.df2 > 0)]
3234

3335
def time_frame_comparison(self, use_numexpr, threads):
34-
(self.df > self.df2)
36+
self.df > self.df2
3537

3638
def teardown(self, use_numexpr, threads):
3739
expr.set_use_numexpr(True)
3840
expr.set_numexpr_threads()
3941

4042

4143
class Ops2(object):
44+
4245
goal_time = 0.2
4346

4447
def setup(self):
45-
self.df = DataFrame(np.random.randn(1000, 1000))
46-
self.df2 = DataFrame(np.random.randn(1000, 1000))
48+
N = 10**3
49+
np.random.seed(1234)
50+
self.df = DataFrame(np.random.randn(N, N))
51+
self.df2 = DataFrame(np.random.randn(N, N))
4752

48-
self.df_int = DataFrame(
49-
np.random.random_integers(np.iinfo(np.int16).min,
50-
np.iinfo(np.int16).max,
51-
size=(1000, 1000)))
52-
self.df2_int = DataFrame(
53-
np.random.random_integers(np.iinfo(np.int16).min,
54-
np.iinfo(np.int16).max,
55-
size=(1000, 1000)))
53+
self.df_int = DataFrame(np.random.randint(np.iinfo(np.int16).min,
54+
np.iinfo(np.int16).max,
55+
size=(N, N)))
56+
self.df2_int = DataFrame(np.random.randint(np.iinfo(np.int16).min,
57+
np.iinfo(np.int16).max,
58+
size=(N, N)))
5659

57-
## Division
60+
# Division
5861

5962
def time_frame_float_div(self):
60-
(self.df // self.df2)
63+
self.df // self.df2
6164

6265
def time_frame_float_div_by_zero(self):
63-
(self.df / 0)
66+
self.df / 0
6467

6568
def time_frame_float_floor_by_zero(self):
66-
(self.df // 0)
69+
self.df // 0
6770

6871
def time_frame_int_div_by_zero(self):
69-
(self.df_int / 0)
72+
self.df_int / 0
7073

71-
## Modulo
74+
# Modulo
7275

7376
def time_frame_int_mod(self):
74-
(self.df / self.df2)
77+
self.df_int % self.df2_int
7578

7679
def time_frame_float_mod(self):
77-
(self.df / self.df2)
80+
self.df % self.df2
7881

7982

8083
class Timeseries(object):
84+
8185
goal_time = 0.2
8286

83-
def setup(self):
84-
self.N = 1000000
87+
params = [None, 'US/Eastern']
88+
param_names = ['tz']
89+
90+
def setup(self, tz):
91+
self.N = 10**6
8592
self.halfway = ((self.N // 2) - 1)
86-
self.s = Series(date_range('20010101', periods=self.N, freq='T'))
93+
self.s = Series(date_range('20010101', periods=self.N, freq='T',
94+
tz=tz))
8795
self.ts = self.s[self.halfway]
8896

89-
self.s2 = Series(date_range('20010101', periods=self.N, freq='s'))
97+
self.s2 = Series(date_range('20010101', periods=self.N, freq='s',
98+
tz=tz))
9099

91-
def time_series_timestamp_compare(self):
92-
(self.s <= self.ts)
100+
def time_series_timestamp_compare(self, tz):
101+
self.s <= self.ts
93102

94-
def time_timestamp_series_compare(self):
95-
(self.ts >= self.s)
103+
def time_timestamp_series_compare(self, tz):
104+
self.ts >= self.s
96105

97-
def time_timestamp_ops_diff1(self):
106+
def time_timestamp_ops_diff(self, tz):
98107
self.s2.diff()
99108

100-
def time_timestamp_ops_diff2(self):
101-
(self.s - self.s.shift())
102-
103-
104-
105-
class TimeseriesTZ(Timeseries):
106-
107-
def setup(self):
108-
self.N = 1000000
109-
self.halfway = ((self.N // 2) - 1)
110-
self.s = Series(date_range('20010101', periods=self.N, freq='T', tz='US/Eastern'))
111-
self.ts = self.s[self.halfway]
112-
113-
self.s2 = Series(date_range('20010101', periods=self.N, freq='s', tz='US/Eastern'))
109+
def time_timestamp_ops_diff_with_shift(self, tz):
110+
self.s - self.s.shift()

0 commit comments

Comments
 (0)