Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Create libcsv based ruby/csv compatible CSV lib...
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
秒速284km
May 31, 2018
Programming
0
830
Create libcsv based ruby/csv compatible CSV library
RubyKaigi 2018 - Create libcsv based ruby/csv compatible CSV library
秒速284km
May 31, 2018
Tweet
Share
More Decks by 秒速284km
See All by 秒速284km
fukuoka_ruby_2019
284km
0
200
Rubyアソシエーション開発助成成果報告会
284km
0
2.3k
Charty - Visualize Real-world Data with Ruby
284km
1
2.6k
Charty - Visualizing your data in Ruby
284km
0
2.5k
.so にして色々な言語から便利にのっかろう
284km
0
92
Pragmatic Charty
284km
0
2.4k
Charty with Rails
284km
1
99
Charty (RubyGrant 2018)
284km
0
2.5k
Better CSV processing with Ruby 2.6
284km
0
110
Other Decks in Programming
See All in Programming
ノイジーネイバー問題を解決する 公平なキューイング
occhi
0
130
Lambda のコードストレージ容量に気をつけましょう
tattwan718
0
200
AIと一緒にレガシーに向き合ってみた
nyafunta9858
0
430
AI & Enginnering
codelynx
0
140
AI活用のコスパを最大化する方法
ochtum
0
110
Rubyと楽しいをつくる / Creating joy with Ruby
chobishiba
0
190
今更考える「単一責任原則」 / Thinking about the Single Responsibility Principle
tooppoo
2
920
今から始めるClaude Code超入門
448jp
8
9.5k
その「common」ディレクトリ、腐っていませんか?
kinocoboy2
1
110
AI時代でも変わらない技術コミュニティの力~10年続く“ゆるい”つながりが生み出す価値
n_takehata
2
430
ふん…おもしれぇ Parser。RubyKaigi 行ってやるぜ
aki_pin0
0
110
atmaCup #23でAIコーディングを活用した話
ml_bear
4
680
Featured
See All Featured
A Soul's Torment
seathinner
5
2.3k
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
300
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
400
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
180
WCS-LA-2024
lcolladotor
0
470
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
30k
Speed Design
sergeychernyshev
33
1.6k
Navigating Team Friction
lara
192
16k
Rails Girls Zürich Keynote
gr2m
96
14k
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
0
160
Designing Experiences People Love
moore
144
24k
Designing for humans not robots
tammielis
254
26k
Transcript
Create libcsv based ruby/csv compatible CSV library Asakusa.rb @284km
http://rubykaigi.org/2018/parties Talked in the title: “Super fast CSV parser” -
libcsv based - ruby/csv compatible
# libcsv based - fast - standard
# ruby/csv compatible - small && easy to read -
Backward compatibility
## Motivation - CSV is often used - Sometimes I
use a large CSV
## 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 ```
## libcsv - columns↑ performance↓ - rows↑ performance➘
## 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 ```
## 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 ```
## 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 ```
## 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 ```
# What/How to do after this talk ## Continue development
- libcsv multibyte support - column↑ performance→ - ffi gem replace to fiddle
RubyKaigi 2018 Thank you