$30 off During Our Annual Pro Sale. View Details »
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Create libcsv based ruby/csv compatible CSV lib...
Search
秒速284km
May 31, 2018
Programming
0
810
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
190
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.4k
.so にして色々な言語から便利にのっかろう
284km
0
84
Pragmatic Charty
284km
0
2.4k
Charty with Rails
284km
1
91
Charty (RubyGrant 2018)
284km
0
2.4k
Better CSV processing with Ruby 2.6
284km
0
110
Other Decks in Programming
See All in Programming
Developing static sites with Ruby
okuramasafumi
0
320
ELYZA_Findy AI Engineering Summit登壇資料_AIコーディング時代に「ちゃんと」やること_toB LLMプロダクト開発舞台裏_20251216
elyza
2
570
Denoのセキュリティに関する仕組みの紹介 (toranoana.deno #23)
uki00a
0
150
Go コードベースの構成と AI コンテキスト定義
andpad
0
130
新卒エンジニアのプルリクエスト with AI駆動
fukunaga2025
0
230
AIエージェントを活かすPM術 AI駆動開発の現場から
gyuta
0
460
perlをWebAssembly上で動かすと何が嬉しいの??? / Where does Perl-on-Wasm actually make sense?
mackee
0
120
Navigation 3: 적응형 UI를 위한 앱 탐색
fornewid
1
440
Patterns of Patterns
denyspoltorak
0
250
Findy AI+の開発、運用におけるMCP活用事例
starfish719
0
1.7k
gunshi
kazupon
1
110
Microservices rules: What good looks like
cer
PRO
0
1.6k
Featured
See All Featured
Tell your own story through comics
letsgokoyo
0
750
エンジニアに許された特別な時間の終わり
watany
105
220k
Game over? The fight for quality and originality in the time of robots
wayneb77
1
65
Learning to Love Humans: Emotional Interface Design
aarron
274
41k
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
51
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
1
400
Are puppies a ranking factor?
jonoalderson
0
2.4k
Speed Design
sergeychernyshev
33
1.4k
Music & Morning Musume
bryan
46
7k
So, you think you're a good person
axbom
PRO
0
1.8k
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
115
91k
The Art of Programming - Codeland 2020
erikaheidi
56
14k
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