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 library
Search
秒速284km
May 31, 2018
Programming
0
720
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
120
Rubyアソシエーション開発助成成果報告会
284km
0
1.8k
Charty - Visualize Real-world Data with Ruby
284km
1
2k
Charty - Visualizing your data in Ruby
284km
0
2k
.so にして色々な言語から便利にのっかろう
284km
0
39
Pragmatic Charty
284km
0
1.9k
Charty with Rails
284km
1
33
Charty (RubyGrant 2018)
284km
0
1.9k
Better CSV processing with Ruby 2.6
284km
0
55
Other Decks in Programming
See All in Programming
Java 22 Overview
kishida
1
180
Goのエラースタックトレースの歴史と今後
sonatard
6
590
Git Rebase
bkuhlmann
11
1.6k
Anthropic Cookbook のおすすめレシピ
schroneko
6
680
Netty Chicago Java User Group 2024-04-17
sullis
0
170
Behind VS Code Extensions for JavaScript / TypeScript Linnting and Formatting
unvalley
5
860
AWS Application Composerで始める、 サーバーレスなデータ基盤構築 / 20240406-jawsug-hokuriku-shinkansen
kasacchiful
1
260
Site Reliability Engineering for GMO
pyama86
7
1k
Blue/Greenデプロイの導入による 運用フローの改善
kudoas
1
360
Rubyでたのしむクリエイティブコーディング/Enjoy Creative coding with Ruby
chobishiba
1
170
OpenAPIを中心に考えるAPI開発入門 / Introduction to API Development with a Focus on OpenAPI
seike460
PRO
2
160
Rethinking UI building strategies @ SFI 2024
letelete
0
270
Featured
See All Featured
Pencils Down: Stop Designing & Start Developing
hursman
117
11k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
243
20k
From Idea to $5000 a Month in 5 Months
shpigford
377
45k
What's in a price? How to price your products and services
michaelherold
237
11k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
16
1.4k
KATA
mclloyd
14
12k
Why Our Code Smells
bkeepers
PRO
331
56k
Side Projects
sachag
451
41k
The Language of Interfaces
destraynor
151
23k
Typedesign – Prime Four
hannesfritz
36
2.1k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
77
42k
Reflections from 52 weeks, 52 projects
jeffersonlam
344
19k
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