Skip to content

Commit 28c393a

Browse files
committed
BENCH: asv csv reading benchmarks no longer read StringIO objects off the end
* benchmarks for read_csv() now properly rewind StringIO objects prior to reading them in; previously, all iterations of an asv repeat timing run would read in no data because the StringIO object was pointing to its end after the first iteration--setup() only runs between repeats, not iterations within repeats of timeit
1 parent bfa4169 commit 28c393a

File tree

1 file changed

+9
-0
lines changed

1 file changed

+9
-0
lines changed

asv_bench/benchmarks/io/csv.py

+9
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@ def setup(self, infer_datetime_format, format):
6969
self.data = StringIO('\n'.join(rng.strftime(dt_format).tolist()))
7070

7171
def time_read_csv(self, infer_datetime_format, format):
72+
self.data.seek(0)
7273
read_csv(self.data, header=None, names=['foo'], parse_dates=['foo'],
7374
infer_datetime_format=infer_datetime_format)
7475

@@ -108,12 +109,15 @@ def setup(self):
108109
self.data2 = StringIO('\n'.join(arr.astype(str).tolist()))
109110

110111
def time_read_uint64(self):
112+
self.data1.seek(0)
111113
read_csv(self.data1, header=None, names=['foo'])
112114

113115
def time_read_uint64_neg_values(self):
116+
self.data2.seek(0)
114117
read_csv(self.data2, header=None, names=['foo'])
115118

116119
def time_read_uint64_na_values(self):
120+
self.data1.seek(0)
117121
read_csv(self.data1, header=None, names=['foo'],
118122
na_values=self.na_values)
119123

@@ -149,6 +153,7 @@ def setup(self):
149153
self.s_data = StringIO('\n'.join(data))
150154

151155
def time_comment(self):
156+
self.s_data.seek(0)
152157
read_csv(self.s_data, comment='#', header=None, names=list('abc'))
153158

154159

@@ -167,10 +172,12 @@ def setup(self, sep, decimal, float_precision):
167172
self.s_data = StringIO(data)
168173

169174
def time_read_csv(self, sep, decimal, float_precision):
175+
self.s_data.seek(0)
170176
read_csv(self.s_data, sep=sep, header=None, names=list('abc'),
171177
float_precision=float_precision)
172178

173179
def time_read_csv_python_engine(self, sep, decimal, float_precision):
180+
self.s_data.seek(0)
174181
read_csv(self.s_data, sep=sep, header=None, engine='python',
175182
float_precision=None, names=list('abc'))
176183

@@ -209,9 +216,11 @@ def setup(self):
209216
self.s_data = StringIO(data)
210217

211218
def time_multiple_date(self):
219+
self.s_data.seek(0)
212220
read_csv(self.s_data, sep=',', header=None,
213221
names=list(string.digits[:9]), parse_dates=[[1, 2], [1, 3]])
214222

215223
def time_baseline(self):
224+
self.s_data.seek(0)
216225
read_csv(self.s_data, sep=',', header=None, parse_dates=[1],
217226
names=list(string.digits[:9]))

0 commit comments

Comments
 (0)