Skip to content

Commit db44794

Browse files
committed
Add IO base class
1 parent 6f58ad4 commit db44794

File tree

3 files changed

+34
-32
lines changed

3 files changed

+34
-32
lines changed

asv_bench/benchmarks/hdfstore_bench.py

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,11 @@
1-
import os
2-
31
import numpy as np
42
from pandas import DataFrame, Panel, date_range, HDFStore
53
import pandas.util.testing as tm
64

7-
from .pandas_vb_common import setup # noqa
5+
from .pandas_vb_common import BaseIO, setup # noqa
86

97

10-
class HDF5(object):
8+
class HDF5(BaseIO):
119

1210
goal_time = 0.2
1311

@@ -48,7 +46,7 @@ def setup(self):
4846

4947
def teardown(self):
5048
self.store.close()
51-
os.remove(self.f)
49+
self.remove(self.f)
5250

5351
def time_read_store(self):
5452
self.store.get('fixed')
@@ -101,7 +99,7 @@ def time_store_info(self):
10199
self.store.info()
102100

103101

104-
class HDF5Panel(object):
102+
class HDF5Panel(BaseIO):
105103

106104
goal_time = 0.2
107105

@@ -116,7 +114,7 @@ def setup(self):
116114

117115
def teardown(self):
118116
self.store.close()
119-
os.remove(self.f)
117+
self.remove(self.f)
120118

121119
def time_read_store_table_panel(self):
122120
self.store.select('p1')

asv_bench/benchmarks/io_bench.py

Lines changed: 9 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -8,23 +8,7 @@
88
import timeit
99

1010

11-
class _BenchTeardown(object):
12-
"""
13-
base class for teardown method implementation
14-
"""
15-
fname = None
16-
17-
def remove(self, f):
18-
try:
19-
os.remove(f)
20-
except:
21-
pass
22-
23-
def teardown(self):
24-
self.remove(self.fname)
25-
26-
27-
class frame_to_csv(_BenchTeardown):
11+
class frame_to_csv(BaseIO):
2812
goal_time = 0.2
2913
fname = '__test__.csv'
3014

@@ -35,7 +19,7 @@ def time_frame_to_csv(self):
3519
self.df.to_csv(self.fname)
3620

3721

38-
class frame_to_csv2(_BenchTeardown):
22+
class frame_to_csv2(BaseIO):
3923
goal_time = 0.2
4024
fname = '__test__.csv'
4125

@@ -49,7 +33,7 @@ def time_frame_to_csv2(self):
4933
self.df.to_csv(self.fname)
5034

5135

52-
class frame_to_csv_date_formatting(_BenchTeardown):
36+
class frame_to_csv_date_formatting(BaseIO):
5337
goal_time = 0.2
5438
fname = '__test__.csv'
5539

@@ -61,7 +45,7 @@ def time_frame_to_csv_date_formatting(self):
6145
self.data.to_csv(self.fname, date_format='%Y%m%d')
6246

6347

64-
class frame_to_csv_mixed(_BenchTeardown):
48+
class frame_to_csv_mixed(BaseIO):
6549
goal_time = 0.2
6650
fname = '__test__.csv'
6751

@@ -114,7 +98,7 @@ def time_read_csv_infer_datetime_format_ymd(self):
11498
read_csv(StringIO(self.data), header=None, names=['foo'], parse_dates=['foo'], infer_datetime_format=True)
11599

116100

117-
class read_csv_skiprows(_BenchTeardown):
101+
class read_csv_skiprows(BaseIO):
118102
goal_time = 0.2
119103
fname = '__test__.csv'
120104

@@ -127,7 +111,7 @@ def time_read_csv_skiprows(self):
127111
read_csv(self.fname, skiprows=10000)
128112

129113

130-
class read_csv_standard(_BenchTeardown):
114+
class read_csv_standard(BaseIO):
131115
goal_time = 0.2
132116
fname = '__test__.csv'
133117

@@ -174,7 +158,7 @@ def time_read_uint64_na_values(self):
174158
read_csv(StringIO(self.data1), header=None, na_values=self.na_values)
175159

176160

177-
class write_csv_standard(_BenchTeardown):
161+
class write_csv_standard(BaseIO):
178162
goal_time = 0.2
179163
fname = '__test__.csv'
180164

@@ -218,14 +202,14 @@ def time_read_nrows(self, compression, engine):
218202
compression=compression, engine=engine)
219203

220204

221-
class read_json_lines(_BenchTeardown):
205+
class read_json_lines(BaseIO):
222206
goal_time = 0.2
223207
fname = "__test__.json"
224208

225209
def setup(self):
226210
self.N = 100000
227211
self.C = 5
228-
self.df = DataFrame({('float{0}'.format(i), randn(self.N)) for i in range(self.C)})
212+
self.df = DataFrame({'float{0}'.format(i): randn(self.N) for i in range(self.C)})
229213
self.df.to_json(self.fname,orient="records",lines=True)
230214

231215
def time_read_json_lines(self):

asv_bench/benchmarks/pandas_vb_common.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import os
12
from pandas import *
23
import pandas as pd
34
from numpy.random import randn
@@ -19,6 +20,25 @@
1920
def setup(*args, **kwargs):
2021
np.random.seed(1234)
2122

23+
24+
class BaseIO(object):
25+
"""
26+
Base class for IO benchmarks
27+
"""
28+
fname = None
29+
30+
def remove(self, f):
31+
"""Remove created files"""
32+
try:
33+
os.remove(f)
34+
except:
35+
# On Windows, attempting to remove a file that is in use
36+
# causes an exception to be raised
37+
pass
38+
39+
def teardown(self):
40+
self.remove(self.fname)
41+
2242
# try em until it works!
2343
for imp in ['pandas._libs.lib', 'pandas.lib', 'pandas_tseries']:
2444
try:

0 commit comments

Comments
 (0)