cisv 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/workflows/ci.yml +158 -0
- package/.github/workflows/release.yml +167 -0
- package/Dockerfile +63 -0
- package/LICENSE +7 -0
- package/Makefile +160 -0
- package/README.md +249 -0
- package/SIMD_benchmarks.md +658 -0
- package/benchmark/benchmark.js +287 -0
- package/benchmark_cli_reader.sh +236 -0
- package/benchmark_cli_writer.sh +280 -0
- package/binding.gyp +57 -0
- package/debug-addon.js +64 -0
- package/examples/basic-parse.js +65 -0
- package/examples/large-file.js +35 -0
- package/examples/transform.js +152 -0
- package/examples/typescript.ts +38 -0
- package/index.d.ts +336 -0
- package/install_benchmark_deps.sh +156 -0
- package/package.json +47 -0
- package/run_benchmarks.sh +53 -0
- package/src/cisv_addon.cc +614 -0
- package/src/cisv_parser.c +988 -0
- package/src/cisv_parser.h +55 -0
- package/src/cisv_simd.h +53 -0
- package/src/cisv_transformer.c +537 -0
- package/src/cisv_transformer.h +145 -0
- package/src/cisv_writer.c +535 -0
- package/src/cisv_writer.h +60 -0
- package/src/index.ts +2 -0
- package/src/test/typescript.test.ts +43 -0
- package/src/win_getopt.h +100 -0
- package/src/win_sys_time.h +50 -0
- package/test/basic.test.js +104 -0
- package/test_select.sh +92 -0
- package/test_transform.sh +167 -0
- package/test_transform_leak_test.js +94 -0
- package/tsconfig.json +17 -0
- package/types/cisv.d.ts +8 -0
- package/valgrind-node.supp +69 -0
|
@@ -0,0 +1,658 @@
|
|
|
1
|
+
## BEFORE
|
|
2
|
+
|
|
3
|
+
$ bash ./benchmark_cli_reader.sh
|
|
4
|
+
=== CSV CLI Tools Benchmark ===
|
|
5
|
+
|
|
6
|
+
Generating test files...
|
|
7
|
+
Creating small.csv (1K rows)...
|
|
8
|
+
Creating medium.csv (100K rows)...
|
|
9
|
+
Creating large.csv (1M rows)...
|
|
10
|
+
Creating xlarge.csv (10M rows)...
|
|
11
|
+
|
|
12
|
+
Test files created:
|
|
13
|
+
-rw-rw-r-- 1 dk dk 98M Aug 7 23:47 large.csv
|
|
14
|
+
-rw-rw-r-- 1 dk dk 9.2M Aug 7 23:47 medium.csv
|
|
15
|
+
-rw-rw-r-- 1 dk dk 84K Aug 7 23:47 small.csv
|
|
16
|
+
-rw-rw-r-- 1 dk dk 36 Jul 29 23:43 test.csv
|
|
17
|
+
-rw-rw-r-- 1 dk dk 1.1G Aug 7 23:48 xlarge.csv
|
|
18
|
+
|
|
19
|
+
=== Testing with small.csv ===
|
|
20
|
+
|
|
21
|
+
Row counting test:
|
|
22
|
+
|
|
23
|
+
--- cisv ---
|
|
24
|
+
Time: .003454255 seconds
|
|
25
|
+
Memory: 3444 KB
|
|
26
|
+
--- wc -l (baseline) ---
|
|
27
|
+
Time: .003698894 seconds
|
|
28
|
+
Memory: 3276 KB
|
|
29
|
+
--- rust-csv (Rust library) ---
|
|
30
|
+
Time: .005211807 seconds
|
|
31
|
+
Memory: 3268 KB
|
|
32
|
+
--- xsv (Rust CLI) ---
|
|
33
|
+
Time: .019139847 seconds
|
|
34
|
+
Memory: 5744 KB
|
|
35
|
+
qsv (faster xsv fork): Not installed
|
|
36
|
+
|
|
37
|
+
--- csvkit (Python) ---
|
|
38
|
+
Time: .389906267 seconds
|
|
39
|
+
Memory: 25604 KB
|
|
40
|
+
--- miller ---
|
|
41
|
+
Time: .005465541 seconds
|
|
42
|
+
Memory: 3404 KB
|
|
43
|
+
Column selection test (columns 0,2,3):
|
|
44
|
+
|
|
45
|
+
--- cisv ---
|
|
46
|
+
Time: .005140956 seconds
|
|
47
|
+
Memory: 3348 KB
|
|
48
|
+
--- rust-csv ---
|
|
49
|
+
Time: .004899935 seconds
|
|
50
|
+
Memory: 3160 KB
|
|
51
|
+
--- xsv ---
|
|
52
|
+
Time: .015615774 seconds
|
|
53
|
+
Memory: 5732 KB
|
|
54
|
+
qsv: Not installed
|
|
55
|
+
|
|
56
|
+
--- csvkit ---
|
|
57
|
+
Time: .370897805 seconds
|
|
58
|
+
Memory: 25080 KB
|
|
59
|
+
--- miller ---
|
|
60
|
+
Time: .008411697 seconds
|
|
61
|
+
Memory: 3308 KB
|
|
62
|
+
==================================================
|
|
63
|
+
|
|
64
|
+
=== Testing with medium.csv ===
|
|
65
|
+
|
|
66
|
+
Row counting test:
|
|
67
|
+
|
|
68
|
+
--- cisv ---
|
|
69
|
+
Time: .012855018 seconds
|
|
70
|
+
Memory: 8696 KB
|
|
71
|
+
--- wc -l (baseline) ---
|
|
72
|
+
Time: .010436686 seconds
|
|
73
|
+
Memory: 3356 KB
|
|
74
|
+
--- rust-csv (Rust library) ---
|
|
75
|
+
Time: .076268404 seconds
|
|
76
|
+
Memory: 3312 KB
|
|
77
|
+
--- xsv (Rust CLI) ---
|
|
78
|
+
Time: .063432975 seconds
|
|
79
|
+
Memory: 5780 KB
|
|
80
|
+
qsv (faster xsv fork): Not installed
|
|
81
|
+
|
|
82
|
+
--- csvkit (Python) ---
|
|
83
|
+
Time: 1.002472719 seconds
|
|
84
|
+
Memory: 80992 KB
|
|
85
|
+
--- miller ---
|
|
86
|
+
Time: .003949264 seconds
|
|
87
|
+
Memory: 3484 KB
|
|
88
|
+
Column selection test (columns 0,2,3):
|
|
89
|
+
|
|
90
|
+
--- cisv ---
|
|
91
|
+
Time: .194812322 seconds
|
|
92
|
+
Memory: 8456 KB
|
|
93
|
+
--- rust-csv ---
|
|
94
|
+
Time: .107812861 seconds
|
|
95
|
+
Memory: 3320 KB
|
|
96
|
+
--- xsv ---
|
|
97
|
+
Time: .084669622 seconds
|
|
98
|
+
Memory: 5704 KB
|
|
99
|
+
qsv: Not installed
|
|
100
|
+
|
|
101
|
+
--- csvkit ---
|
|
102
|
+
Time: 1.388574721 seconds
|
|
103
|
+
Memory: 24992 KB
|
|
104
|
+
--- miller ---
|
|
105
|
+
Time: .401692577 seconds
|
|
106
|
+
Memory: 11896 KB
|
|
107
|
+
==================================================
|
|
108
|
+
|
|
109
|
+
=== Testing with large.csv ===
|
|
110
|
+
|
|
111
|
+
Row counting test:
|
|
112
|
+
|
|
113
|
+
--- cisv ---
|
|
114
|
+
Time: .113134726 seconds
|
|
115
|
+
Memory: 97344 KB
|
|
116
|
+
--- wc -l (baseline) ---
|
|
117
|
+
Time: .081953593 seconds
|
|
118
|
+
Memory: 3328 KB
|
|
119
|
+
--- rust-csv (Rust library) ---
|
|
120
|
+
Time: .867276385 seconds
|
|
121
|
+
Memory: 3452 KB
|
|
122
|
+
--- xsv (Rust CLI) ---
|
|
123
|
+
Time: .563000612 seconds
|
|
124
|
+
Memory: 5896 KB
|
|
125
|
+
qsv (faster xsv fork): Not installed
|
|
126
|
+
|
|
127
|
+
--- csvkit (Python) ---
|
|
128
|
+
Time: 9.668958975 seconds
|
|
129
|
+
Memory: 582168 KB
|
|
130
|
+
--- miller ---
|
|
131
|
+
Time: .004417748 seconds
|
|
132
|
+
Memory: 3420 KB
|
|
133
|
+
Column selection test (columns 0,2,3):
|
|
134
|
+
|
|
135
|
+
--- cisv ---
|
|
136
|
+
Time: 1.856142346 seconds
|
|
137
|
+
Memory: 101416 KB
|
|
138
|
+
--- rust-csv ---
|
|
139
|
+
Time: 1.064498714 seconds
|
|
140
|
+
Memory: 3308 KB
|
|
141
|
+
--- xsv ---
|
|
142
|
+
Time: .745167991 seconds
|
|
143
|
+
Memory: 5776 KB
|
|
144
|
+
qsv: Not installed
|
|
145
|
+
|
|
146
|
+
--- csvkit ---
|
|
147
|
+
Time: 11.481508682 seconds
|
|
148
|
+
Memory: 24976 KB
|
|
149
|
+
--- miller ---
|
|
150
|
+
Time: 3.587480127 seconds
|
|
151
|
+
Memory: 102560 KB
|
|
152
|
+
==================================================
|
|
153
|
+
|
|
154
|
+
=== Testing with xlarge.csv (limited tools) ===
|
|
155
|
+
|
|
156
|
+
Row counting test:
|
|
157
|
+
|
|
158
|
+
--- cisv ---
|
|
159
|
+
Time: 1.027678668 seconds
|
|
160
|
+
Memory: 1056188 KB
|
|
161
|
+
--- wc -l (baseline) ---
|
|
162
|
+
Time: .735034280 seconds
|
|
163
|
+
Memory: 3244 KB
|
|
164
|
+
Column selection test (columns 0,2,3):
|
|
165
|
+
|
|
166
|
+
--- cisv ---
|
|
167
|
+
Time: 19.634665027 seconds
|
|
168
|
+
Memory: 1060368 KB
|
|
169
|
+
==================================================
|
|
170
|
+
|
|
171
|
+
=== CISV Benchmark Mode ===
|
|
172
|
+
|
|
173
|
+
small.csv:
|
|
174
|
+
Benchmarking file: small.csv
|
|
175
|
+
File size: 0.08 MB
|
|
176
|
+
|
|
177
|
+
Run 1: 0.06 ms, 1001 rows
|
|
178
|
+
Run 2: 0.04 ms, 1001 rows
|
|
179
|
+
Run 3: 0.03 ms, 1001 rows
|
|
180
|
+
Run 4: 0.03 ms, 1001 rows
|
|
181
|
+
Run 5: 0.03 ms, 1001 rows
|
|
182
|
+
|
|
183
|
+
medium.csv:
|
|
184
|
+
Benchmarking file: medium.csv
|
|
185
|
+
File size: 9.20 MB
|
|
186
|
+
|
|
187
|
+
Run 1: 4.10 ms, 100001 rows
|
|
188
|
+
Run 2: 3.89 ms, 100001 rows
|
|
189
|
+
Run 3: 4.05 ms, 100001 rows
|
|
190
|
+
Run 4: 3.94 ms, 100001 rows
|
|
191
|
+
Run 5: 3.15 ms, 100001 rows
|
|
192
|
+
|
|
193
|
+
large.csv:
|
|
194
|
+
Benchmarking file: large.csv
|
|
195
|
+
File size: 97.70 MB
|
|
196
|
+
|
|
197
|
+
Run 1: 33.20 ms, 1000001 rows
|
|
198
|
+
Run 2: 32.19 ms, 1000001 rows
|
|
199
|
+
Run 3: 31.98 ms, 1000001 rows
|
|
200
|
+
Run 4: 31.93 ms, 1000001 rows
|
|
201
|
+
Run 5: 31.94 ms, 1000001 rows
|
|
202
|
+
|
|
203
|
+
xlarge.csv:
|
|
204
|
+
Benchmarking file: xlarge.csv
|
|
205
|
+
File size: 1034.18 MB
|
|
206
|
+
|
|
207
|
+
Run 1: 329.84 ms, 10000001 rows
|
|
208
|
+
Run 2: 323.77 ms, 10000001 rows
|
|
209
|
+
Run 3: 359.50 ms, 10000001 rows
|
|
210
|
+
Run 4: 375.55 ms, 10000001 rows
|
|
211
|
+
Run 5: 324.35 ms, 10000001 rows
|
|
212
|
+
|
|
213
|
+
Cleaning up test files...
|
|
214
|
+
Benchmark complete!
|
|
215
|
+
|
|
216
|
+
## AFTER
|
|
217
|
+
|
|
218
|
+
$ bash ./benchmark_cli_reader.sh
|
|
219
|
+
=== CSV CLI Tools Benchmark === Generating test files...
|
|
220
|
+
Creating small.csv (1K rows)...
|
|
221
|
+
Creating medium.csv (100K rows)...
|
|
222
|
+
Creating large.csv (1M rows)...
|
|
223
|
+
Creating xlarge.csv (10M rows)...
|
|
224
|
+
|
|
225
|
+
Test files created:
|
|
226
|
+
-rw-rw-r-- 1 dk dk 98M Aug 8 00:01 large.csv
|
|
227
|
+
-rw-rw-r-- 1 dk dk 9.2M Aug 8 00:00 medium.csv
|
|
228
|
+
-rw-rw-r-- 1 dk dk 84K Aug 8 00:00 small.csv
|
|
229
|
+
-rw-rw-r-- 1 dk dk 36 Jul 29 23:43 test.csv
|
|
230
|
+
-rw-rw-r-- 1 dk dk 1.1G Aug 8 00:01 xlarge.csv
|
|
231
|
+
|
|
232
|
+
=== Testing with small.csv ===
|
|
233
|
+
|
|
234
|
+
Row counting test:
|
|
235
|
+
|
|
236
|
+
--- cisv ---
|
|
237
|
+
Time: .004275249 seconds
|
|
238
|
+
Memory: 3388 KB
|
|
239
|
+
--- wc -l (baseline) ---
|
|
240
|
+
Time: .003821359 seconds
|
|
241
|
+
Memory: 3384 KB
|
|
242
|
+
--- rust-csv (Rust library) ---
|
|
243
|
+
Time: .005872746 seconds
|
|
244
|
+
Memory: 3252 KB
|
|
245
|
+
--- xsv (Rust CLI) ---
|
|
246
|
+
Time: .018956288 seconds
|
|
247
|
+
Memory: 5740 KB
|
|
248
|
+
qsv (faster xsv fork): Not installed
|
|
249
|
+
|
|
250
|
+
--- csvkit (Python) ---
|
|
251
|
+
Time: .324120841 seconds
|
|
252
|
+
Memory: 25556 KB
|
|
253
|
+
--- miller ---
|
|
254
|
+
Time: .003103605 seconds
|
|
255
|
+
Memory: 3280 KB
|
|
256
|
+
Column selection test (columns 0,2,3):
|
|
257
|
+
|
|
258
|
+
--- cisv ---
|
|
259
|
+
Time: .005032685 seconds
|
|
260
|
+
Memory: 3280 KB
|
|
261
|
+
--- rust-csv ---
|
|
262
|
+
Time: .004845613 seconds
|
|
263
|
+
Memory: 3332 KB
|
|
264
|
+
--- xsv ---
|
|
265
|
+
Time: .014999463 seconds
|
|
266
|
+
Memory: 5888 KB
|
|
267
|
+
qsv: Not installed
|
|
268
|
+
|
|
269
|
+
--- csvkit ---
|
|
270
|
+
Time: .327290599 seconds
|
|
271
|
+
Memory: 24888 KB
|
|
272
|
+
--- miller ---
|
|
273
|
+
Time: .006923448 seconds
|
|
274
|
+
Memory: 3356 KB
|
|
275
|
+
==================================================
|
|
276
|
+
|
|
277
|
+
=== Testing with medium.csv ===
|
|
278
|
+
|
|
279
|
+
Row counting test:
|
|
280
|
+
|
|
281
|
+
--- cisv ---
|
|
282
|
+
Time: .008108207 seconds
|
|
283
|
+
Memory: 8656 KB
|
|
284
|
+
--- wc -l (baseline) ---
|
|
285
|
+
Time: .010016111 seconds
|
|
286
|
+
Memory: 3432 KB
|
|
287
|
+
--- rust-csv (Rust library) ---
|
|
288
|
+
Time: .074509915 seconds
|
|
289
|
+
Memory: 3408 KB
|
|
290
|
+
--- xsv (Rust CLI) ---
|
|
291
|
+
Time: .053966146 seconds
|
|
292
|
+
Memory: 5704 KB
|
|
293
|
+
qsv (faster xsv fork): Not installed
|
|
294
|
+
|
|
295
|
+
--- csvkit (Python) ---
|
|
296
|
+
Time: .913265702 seconds
|
|
297
|
+
Memory: 81048 KB
|
|
298
|
+
--- miller ---
|
|
299
|
+
Time: .003564636 seconds
|
|
300
|
+
Memory: 3376 KB
|
|
301
|
+
Column selection test (columns 0,2,3):
|
|
302
|
+
|
|
303
|
+
--- cisv ---
|
|
304
|
+
Time: .135671992 seconds
|
|
305
|
+
Memory: 22716 KB
|
|
306
|
+
--- rust-csv ---
|
|
307
|
+
Time: .093014675 seconds
|
|
308
|
+
Memory: 3344 KB
|
|
309
|
+
--- xsv ---
|
|
310
|
+
Time: .073360775 seconds
|
|
311
|
+
Memory: 5720 KB
|
|
312
|
+
qsv: Not installed
|
|
313
|
+
|
|
314
|
+
--- csvkit ---
|
|
315
|
+
Time: 1.184642626 seconds
|
|
316
|
+
Memory: 24916 KB
|
|
317
|
+
--- miller ---
|
|
318
|
+
Time: .312788023 seconds
|
|
319
|
+
Memory: 11888 KB
|
|
320
|
+
==================================================
|
|
321
|
+
|
|
322
|
+
=== Testing with large.csv ===
|
|
323
|
+
|
|
324
|
+
Row counting test:
|
|
325
|
+
|
|
326
|
+
--- cisv ---
|
|
327
|
+
Time: .055322179 seconds
|
|
328
|
+
Memory: 97356 KB
|
|
329
|
+
--- wc -l (baseline) ---
|
|
330
|
+
Time: .083222782 seconds
|
|
331
|
+
Memory: 3340 KB
|
|
332
|
+
--- rust-csv (Rust library) ---
|
|
333
|
+
Time: .664236076 seconds
|
|
334
|
+
Memory: 3424 KB
|
|
335
|
+
--- xsv (Rust CLI) ---
|
|
336
|
+
Time: .441226534 seconds
|
|
337
|
+
Memory: 5648 KB
|
|
338
|
+
qsv (faster xsv fork): Not installed
|
|
339
|
+
|
|
340
|
+
--- csvkit (Python) ---
|
|
341
|
+
Time: 9.787511258 seconds
|
|
342
|
+
Memory: 582200 KB
|
|
343
|
+
--- miller ---
|
|
344
|
+
Time: .003772011 seconds
|
|
345
|
+
Memory: 3152 KB
|
|
346
|
+
Column selection test (columns 0,2,3):
|
|
347
|
+
|
|
348
|
+
--- cisv ---
|
|
349
|
+
Time: 1.370785745 seconds
|
|
350
|
+
Memory: 218840 KB
|
|
351
|
+
--- rust-csv ---
|
|
352
|
+
Time: .932174528 seconds
|
|
353
|
+
Memory: 3272 KB
|
|
354
|
+
--- xsv ---
|
|
355
|
+
Time: .654072621 seconds
|
|
356
|
+
Memory: 5880 KB
|
|
357
|
+
qsv: Not installed
|
|
358
|
+
|
|
359
|
+
--- csvkit ---
|
|
360
|
+
Time: 9.656998755 seconds
|
|
361
|
+
Memory: 25020 KB
|
|
362
|
+
--- miller ---
|
|
363
|
+
Time: 3.237759447 seconds
|
|
364
|
+
Memory: 102540 KB
|
|
365
|
+
==================================================
|
|
366
|
+
|
|
367
|
+
=== Testing with xlarge.csv (limited tools) ===
|
|
368
|
+
|
|
369
|
+
Row counting test:
|
|
370
|
+
|
|
371
|
+
--- cisv ---
|
|
372
|
+
Time: .590418509 seconds
|
|
373
|
+
Memory: 1056268 KB
|
|
374
|
+
--- wc -l (baseline) ---
|
|
375
|
+
Time: .783242068 seconds
|
|
376
|
+
Memory: 3272 KB
|
|
377
|
+
Column selection test (columns 0,2,3):
|
|
378
|
+
|
|
379
|
+
--- cisv ---
|
|
380
|
+
Time: 14.384985245 seconds
|
|
381
|
+
Memory: 2372932 KB
|
|
382
|
+
==================================================
|
|
383
|
+
|
|
384
|
+
=== CISV Benchmark Mode ===
|
|
385
|
+
|
|
386
|
+
small.csv:
|
|
387
|
+
Benchmarking file: small.csv
|
|
388
|
+
File size: 0.08 MB
|
|
389
|
+
|
|
390
|
+
Run 1: 0.02 ms, 1001 rows
|
|
391
|
+
Run 2: 0.01 ms, 1001 rows
|
|
392
|
+
Run 3: 0.01 ms, 1001 rows
|
|
393
|
+
Run 4: 0.01 ms, 1001 rows
|
|
394
|
+
Run 5: 0.01 ms, 1001 rows
|
|
395
|
+
|
|
396
|
+
medium.csv:
|
|
397
|
+
Benchmarking file: medium.csv
|
|
398
|
+
File size: 9.20 MB
|
|
399
|
+
|
|
400
|
+
Run 1: 1.64 ms, 100001 rows
|
|
401
|
+
Run 2: 1.24 ms, 100001 rows
|
|
402
|
+
Run 3: 1.13 ms, 100001 rows
|
|
403
|
+
Run 4: 1.22 ms, 100001 rows
|
|
404
|
+
Run 5: 2.00 ms, 100001 rows
|
|
405
|
+
|
|
406
|
+
large.csv:
|
|
407
|
+
Benchmarking file: large.csv
|
|
408
|
+
File size: 97.70 MB
|
|
409
|
+
|
|
410
|
+
Run 1: 19.82 ms, 1000001 rows
|
|
411
|
+
Run 2: 19.06 ms, 1000001 rows
|
|
412
|
+
Run 3: 19.29 ms, 1000001 rows
|
|
413
|
+
Run 4: 19.49 ms, 1000001 rows
|
|
414
|
+
Run 5: 19.41 ms, 1000001 rows
|
|
415
|
+
|
|
416
|
+
xlarge.csv:
|
|
417
|
+
Benchmarking file: xlarge.csv
|
|
418
|
+
File size: 1034.18 MB
|
|
419
|
+
|
|
420
|
+
Run 1: 192.34 ms, 10000001 rows
|
|
421
|
+
Run 2: 193.72 ms, 10000001 rows
|
|
422
|
+
Run 3: 195.66 ms, 10000001 rows
|
|
423
|
+
Run 4: 196.29 ms, 10000001 rows
|
|
424
|
+
Run 5: 203.84 ms, 10000001 rows
|
|
425
|
+
|
|
426
|
+
Cleaning up test files...
|
|
427
|
+
Benchmark complete!
|
|
428
|
+
|
|
429
|
+
|
|
430
|
+
=====================================================================================
|
|
431
|
+
from npm :
|
|
432
|
+
=====================================================================================
|
|
433
|
+
|
|
434
|
+
## BEFORE
|
|
435
|
+
|
|
436
|
+
$ npm run benchmark ./fixtures/data.csv
|
|
437
|
+
|
|
438
|
+
> cisv@0.0.1 benchmark
|
|
439
|
+
> node benchmark/benchmark.js ./fixtures/data.csv
|
|
440
|
+
|
|
441
|
+
Starting benchmark with file: ./fixtures/data.csv
|
|
442
|
+
All tests will retrieve row index: 857010
|
|
443
|
+
|
|
444
|
+
File size: 0.00 MB
|
|
445
|
+
Warning: File has fewer than 857011 rows. Tests will run but may not retrieve data.
|
|
446
|
+
|
|
447
|
+
|
|
448
|
+
--- Running: Sync (Parse only) Benchmarks ---
|
|
449
|
+
cisv (sync) x 120,816 ops/sec ±4.48% (68 runs sampled)
|
|
450
|
+
Speed: 54.27 MB/s | Avg Time: 0.01 ms | Ops/sec: 120816
|
|
451
|
+
(cooling down...)
|
|
452
|
+
|
|
453
|
+
csv-parse (sync) x 30,106 ops/sec ±2.87% (87 runs sampled)
|
|
454
|
+
Speed: 13.52 MB/s | Avg Time: 0.03 ms | Ops/sec: 30106
|
|
455
|
+
(cooling down...)
|
|
456
|
+
|
|
457
|
+
papaparse (sync) x 55,327 ops/sec ±1.43% (95 runs sampled)
|
|
458
|
+
Speed: 24.85 MB/s | Avg Time: 0.02 ms | Ops/sec: 55327
|
|
459
|
+
(cooling down...)
|
|
460
|
+
|
|
461
|
+
|
|
462
|
+
>>>>> Fastest Sync is cisv (sync)
|
|
463
|
+
|
|
464
|
+
--------------------------------------------------
|
|
465
|
+
|
|
466
|
+
--- Running: Sync (Parse + Access) Benchmarks ---
|
|
467
|
+
cisv (sync) x 57,755 ops/sec ±0.44% (95 runs sampled)
|
|
468
|
+
Speed: 25.94 MB/s | Avg Time: 0.02 ms | Ops/sec: 57755
|
|
469
|
+
(cooling down...)
|
|
470
|
+
|
|
471
|
+
csv-parse (sync) x 31,905 ops/sec ±0.61% (96 runs sampled)
|
|
472
|
+
Speed: 14.33 MB/s | Avg Time: 0.03 ms | Ops/sec: 31905
|
|
473
|
+
(cooling down...)
|
|
474
|
+
|
|
475
|
+
papaparse (sync) x 56,011 ops/sec ±0.43% (95 runs sampled)
|
|
476
|
+
Speed: 25.16 MB/s | Avg Time: 0.02 ms | Ops/sec: 56011
|
|
477
|
+
(cooling down...)
|
|
478
|
+
|
|
479
|
+
|
|
480
|
+
>>>>> Fastest Sync is cisv (sync)
|
|
481
|
+
|
|
482
|
+
--------------------------------------------------
|
|
483
|
+
|
|
484
|
+
--- Running: Async (Parse only) Benchmarks ---
|
|
485
|
+
cisv (async/stream) x 153,475 ops/sec ±1.02% (71 runs sampled)
|
|
486
|
+
Speed: 68.94 MB/s | Avg Time: 0.01 ms | Ops/sec: 153475
|
|
487
|
+
(cooling down...)
|
|
488
|
+
|
|
489
|
+
papaparse (async/stream) x 33,315 ops/sec ±3.23% (78 runs sampled)
|
|
490
|
+
Speed: 14.96 MB/s | Avg Time: 0.03 ms | Ops/sec: 33315
|
|
491
|
+
(cooling down...)
|
|
492
|
+
|
|
493
|
+
neat-csv (async/promise) x 16,668 ops/sec ±3.24% (76 runs sampled)
|
|
494
|
+
Speed: 7.49 MB/s | Avg Time: 0.06 ms | Ops/sec: 16668
|
|
495
|
+
(cooling down...)
|
|
496
|
+
|
|
497
|
+
|
|
498
|
+
>>>>> Fastest Async is cisv (async/stream)
|
|
499
|
+
|
|
500
|
+
--------------------------------------------------
|
|
501
|
+
|
|
502
|
+
--- Running: Async (Parse + Access) Benchmarks ---
|
|
503
|
+
cisv (async/stream) x 48,911 ops/sec ±1.36% (82 runs sampled)
|
|
504
|
+
Speed: 21.97 MB/s | Avg Time: 0.02 ms | Ops/sec: 48911
|
|
505
|
+
(cooling down...)
|
|
506
|
+
|
|
507
|
+
papaparse (async/stream) x 35,469 ops/sec ±2.58% (83 runs sampled)
|
|
508
|
+
Speed: 15.93 MB/s | Avg Time: 0.03 ms | Ops/sec: 35469
|
|
509
|
+
(cooling down...)
|
|
510
|
+
|
|
511
|
+
neat-csv (async/promise) x 17,121 ops/sec ±2.26% (80 runs sampled)
|
|
512
|
+
Speed: 7.69 MB/s | Avg Time: 0.06 ms | Ops/sec: 17121
|
|
513
|
+
(cooling down...)
|
|
514
|
+
|
|
515
|
+
|
|
516
|
+
>>>>> Fastest Async is cisv (async/stream)
|
|
517
|
+
|
|
518
|
+
--------------------------------------------------
|
|
519
|
+
|
|
520
|
+
Benchmark Results Table (Markdown)
|
|
521
|
+
|
|
522
|
+
### Synchronous Results
|
|
523
|
+
|
|
524
|
+
| Library | Speed (MB/s) | Avg Time (ms) | Operations/sec |
|
|
525
|
+
|--------------------|--------------|---------------|----------------|
|
|
526
|
+
| cisv (sync) | 54.27 | 0.01 | 120816 |
|
|
527
|
+
| csv-parse (sync) | 13.52 | 0.03 | 30106 |
|
|
528
|
+
| papaparse (sync) | 24.85 | 0.02 | 55327 |
|
|
529
|
+
| cisv (sync) | 25.94 | 0.02 | 57755 |
|
|
530
|
+
| csv-parse (sync) | 14.33 | 0.03 | 31905 |
|
|
531
|
+
| papaparse (sync) | 25.16 | 0.02 | 56011 |
|
|
532
|
+
|
|
533
|
+
|
|
534
|
+
### Asynchronous Results
|
|
535
|
+
|
|
536
|
+
| Library | Speed (MB/s) | Avg Time (ms) | Operations/sec |
|
|
537
|
+
|--------------------------|--------------|---------------|----------------|
|
|
538
|
+
| cisv (async/stream) | 68.94 | 0.01 | 153475 |
|
|
539
|
+
| papaparse (async/stream) | 14.96 | 0.03 | 33315 |
|
|
540
|
+
| neat-csv (async/promise) | 7.49 | 0.06 | 16668 |
|
|
541
|
+
| cisv (async/stream) | 21.97 | 0.02 | 48911 |
|
|
542
|
+
| papaparse (async/stream) | 15.93 | 0.03 | 35469 |
|
|
543
|
+
| neat-csv (async/promise) | 7.69 | 0.06 | 17121 |
|
|
544
|
+
|
|
545
|
+
|
|
546
|
+
=====================================================================================
|
|
547
|
+
from npm :
|
|
548
|
+
=====================================================================================
|
|
549
|
+
|
|
550
|
+
## AFTER
|
|
551
|
+
|
|
552
|
+
> cisv@0.0.1 benchmark
|
|
553
|
+
> node benchmark/benchmark.js ./fixtures/data.csv
|
|
554
|
+
|
|
555
|
+
Starting benchmark with file: ./fixtures/data.csv
|
|
556
|
+
All tests will retrieve row index: 857010
|
|
557
|
+
|
|
558
|
+
File size: 0.00 MB
|
|
559
|
+
Warning: File has fewer than 857011 rows. Tests will run but may not retrieve data.
|
|
560
|
+
|
|
561
|
+
|
|
562
|
+
--- Running: Sync (Parse only) Benchmarks ---
|
|
563
|
+
cisv (sync) x 135,349 ops/sec ±5.05% (73 runs sampled)
|
|
564
|
+
Speed: 60.80 MB/s | Avg Time: 0.01 ms | Ops/sec: 135349
|
|
565
|
+
(cooling down...)
|
|
566
|
+
|
|
567
|
+
csv-parse (sync) x 32,656 ops/sec ±1.14% (96 runs sampled)
|
|
568
|
+
Speed: 14.67 MB/s | Avg Time: 0.03 ms | Ops/sec: 32656
|
|
569
|
+
(cooling down...)
|
|
570
|
+
|
|
571
|
+
papaparse (sync) x 55,933 ops/sec ±1.55% (91 runs sampled)
|
|
572
|
+
Speed: 25.12 MB/s | Avg Time: 0.02 ms | Ops/sec: 55933
|
|
573
|
+
(cooling down...)
|
|
574
|
+
|
|
575
|
+
|
|
576
|
+
>>>>> Fastest Sync is cisv (sync)
|
|
577
|
+
|
|
578
|
+
--------------------------------------------------
|
|
579
|
+
|
|
580
|
+
--- Running: Sync (Parse + Access) Benchmarks ---
|
|
581
|
+
cisv (sync) x 131,372 ops/sec ±3.48% (78 runs sampled)
|
|
582
|
+
Speed: 59.01 MB/s | Avg Time: 0.01 ms | Ops/sec: 131372
|
|
583
|
+
(cooling down...)
|
|
584
|
+
|
|
585
|
+
csv-parse (sync) x 31,761 ops/sec ±1.21% (93 runs sampled)
|
|
586
|
+
Speed: 14.27 MB/s | Avg Time: 0.03 ms | Ops/sec: 31761
|
|
587
|
+
(cooling down...)
|
|
588
|
+
|
|
589
|
+
papaparse (sync) x 54,544 ops/sec ±0.50% (96 runs sampled)
|
|
590
|
+
Speed: 24.50 MB/s | Avg Time: 0.02 ms | Ops/sec: 54544
|
|
591
|
+
(cooling down...)
|
|
592
|
+
|
|
593
|
+
|
|
594
|
+
>>>>> Fastest Sync is cisv (sync)
|
|
595
|
+
|
|
596
|
+
--------------------------------------------------
|
|
597
|
+
|
|
598
|
+
--- Running: Async (Parse only) Benchmarks ---
|
|
599
|
+
cisv (async/stream) x 155,400 ops/sec ±1.79% (68 runs sampled)
|
|
600
|
+
Speed: 69.80 MB/s | Avg Time: 0.01 ms | Ops/sec: 155400
|
|
601
|
+
(cooling down...)
|
|
602
|
+
|
|
603
|
+
papaparse (async/stream) x 32,404 ops/sec ±3.89% (75 runs sampled)
|
|
604
|
+
Speed: 14.56 MB/s | Avg Time: 0.03 ms | Ops/sec: 32404
|
|
605
|
+
(cooling down...)
|
|
606
|
+
|
|
607
|
+
neat-csv (async/promise) x 16,670 ops/sec ±2.47% (76 runs sampled)
|
|
608
|
+
Speed: 7.49 MB/s | Avg Time: 0.06 ms | Ops/sec: 16670
|
|
609
|
+
(cooling down...)
|
|
610
|
+
|
|
611
|
+
|
|
612
|
+
>>>>> Fastest Async is cisv (async/stream)
|
|
613
|
+
|
|
614
|
+
--------------------------------------------------
|
|
615
|
+
|
|
616
|
+
--- Running: Async (Parse + Access) Benchmarks ---
|
|
617
|
+
cisv (async/stream) x 107,916 ops/sec ±1.13% (75 runs sampled)
|
|
618
|
+
Speed: 48.47 MB/s | Avg Time: 0.01 ms | Ops/sec: 107916
|
|
619
|
+
(cooling down...)
|
|
620
|
+
|
|
621
|
+
papaparse (async/stream) x 34,477 ops/sec ±2.88% (75 runs sampled)
|
|
622
|
+
Speed: 15.49 MB/s | Avg Time: 0.03 ms | Ops/sec: 34477
|
|
623
|
+
(cooling down...)
|
|
624
|
+
|
|
625
|
+
neat-csv (async/promise) x 17,038 ops/sec ±2.34% (81 runs sampled)
|
|
626
|
+
Speed: 7.65 MB/s | Avg Time: 0.06 ms | Ops/sec: 17038
|
|
627
|
+
(cooling down...)
|
|
628
|
+
|
|
629
|
+
|
|
630
|
+
>>>>> Fastest Async is cisv (async/stream)
|
|
631
|
+
|
|
632
|
+
--------------------------------------------------
|
|
633
|
+
|
|
634
|
+
Benchmark Results Table (Markdown)
|
|
635
|
+
|
|
636
|
+
### Synchronous Results
|
|
637
|
+
|
|
638
|
+
| Library | Speed (MB/s) | Avg Time (ms) | Operations/sec |
|
|
639
|
+
|--------------------|--------------|---------------|----------------|
|
|
640
|
+
| cisv (sync) | 60.80 | 0.01 | 135349 |
|
|
641
|
+
| csv-parse (sync) | 14.67 | 0.03 | 32656 |
|
|
642
|
+
| papaparse (sync) | 25.12 | 0.02 | 55933 |
|
|
643
|
+
| cisv (sync) | 59.01 | 0.01 | 131372 |
|
|
644
|
+
| csv-parse (sync) | 14.27 | 0.03 | 31761 |
|
|
645
|
+
| papaparse (sync) | 24.50 | 0.02 | 54544 |
|
|
646
|
+
|
|
647
|
+
|
|
648
|
+
### Asynchronous Results
|
|
649
|
+
|
|
650
|
+
| Library | Speed (MB/s) | Avg Time (ms) | Operations/sec |
|
|
651
|
+
|--------------------------|--------------|---------------|----------------|
|
|
652
|
+
| cisv (async/stream) | 69.80 | 0.01 | 155400 |
|
|
653
|
+
| papaparse (async/stream) | 14.56 | 0.03 | 32404 |
|
|
654
|
+
| neat-csv (async/promise) | 7.49 | 0.06 | 16670 |
|
|
655
|
+
| cisv (async/stream) | 48.47 | 0.01 | 107916 |
|
|
656
|
+
| papaparse (async/stream) | 15.49 | 0.03 | 34477 |
|
|
657
|
+
| neat-csv (async/promise) | 7.65 | 0.06 | 17038 |
|
|
658
|
+
|