Slide 1

Slide 1 text

Create libcsv based ruby/csv compatible CSV library Asakusa.rb @284km

Slide 2

Slide 2 text

http://rubykaigi.org/2018/parties Talked in the title: “Super fast CSV parser” - libcsv based - ruby/csv compatible

Slide 3

Slide 3 text

# libcsv based - fast - standard

Slide 4

Slide 4 text

# ruby/csv compatible - small && easy to read - Backward compatibility

Slide 5

Slide 5 text

## Motivation - CSV is often used - Sometimes I use a large CSV

Slide 6

Slide 6 text

## 284km/csv/tree/libcsv ``` # 100,000 lines Comparison: (libcsv) quoted: 81022184 allocated (libcsv) unquoted: 82071384 allocated - 1.01x more unquoted: 110535101 allocated - 1.36x more quoted: 133536546 allocated - 1.65x more ```

Slide 7

Slide 7 text

## libcsv - columns↑ performance↓ - rows↑ performance➘

Slide 8

Slide 8 text

## memory usage ``` # 5 columns, 10,000 lines Comparison: (libcsv) quoted: 8090304 allocated (libcsv) unquoted: 9139504 allocated - 1.13x more unquoted: 11053221 allocated - 1.37x more quoted: 13354666 allocated - 1.65x more ```

Slide 9

Slide 9 text

## memory usage ``` # 5 columns, 100,000 lines Comparison: (libcsv) quoted: 81022184 allocated (libcsv) unquoted: 82071384 allocated - 1.01x more unquoted: 110535101 allocated - 1.36x more quoted: 133536546 allocated - 1.65x more ```

Slide 10

Slide 10 text

## memory usage ``` # 10 columns, 10,000 lines Comparison: unquoted: 13954361 allocated (libcsv) quoted: 14090304 allocated - 1.01x more (libcsv) unquoted: 15139504 allocated - 1.08x more quoted: 18555121 allocated - 1.33x more ```

Slide 11

Slide 11 text

## memory usage ``` # 10 columns, 1,000,000 lines Comparison: unquoted: 1396650961 allocated (libcsv) quoted: 1411636904 allocated - 1.01x more (libcsv) unquoted: 1412686104 allocated - 1.01x more quoted: 1856651721 allocated - 1.33x more ```

Slide 12

Slide 12 text

# What/How to do after this talk ## Continue development - libcsv multibyte support - column↑ performance→ - ffi gem replace to fiddle

Slide 13

Slide 13 text

RubyKaigi 2018 Thank you