csv
csv copied to clipboard
Save @parse_method for faster access
On some benchmarks it seems to make a difference:
-
quotedfrombenchmark/parse.yaml -
quote_char_nilfrombenchmark/parse_quote_char_nil.yaml
N_ROWS=5000 rake benchmark:parse benchmark:parse_liberal_parsing benchmark:parse_quote_char_nil benchmark:parse_strip
RUBYLIB= BUNDLER_ORIG_RUBYLIB= /Users/vladimirkochnev/.asdf/installs/ruby/3.3.3/bin/ruby -v -S benchmark-driver /Users/vladimirkochnev/code/csv/benchmark/parse.yaml
ruby 3.3.3 (2024-06-12 revision f1c7b6f435) [arm64-darwin23]
Calculating -------------------------------------
csv 3.3.0 master
unquoted 22.121 22.176 i/s - 100.000 times in 4.520619s 4.509361s
quoted 11.449 12.709 i/s - 100.000 times in 8.734424s 7.868440s
mixed 13.733 14.086 i/s - 100.000 times in 7.281701s 7.099278s
include_col_sep 5.149 5.157 i/s - 100.000 times in 19.422614s 19.391167s
include_row_sep 5.085 5.191 i/s - 100.000 times in 19.665228s 19.264772s
encode_utf-8 15.954 16.134 i/s - 100.000 times in 6.267920s 6.198095s
encode_sjis 16.525 16.279 i/s - 100.000 times in 6.051581s 6.142967s
Comparison:
unquoted
master: 22.2 i/s
csv 3.3.0: 22.1 i/s - 1.00x slower
quoted
master: 12.7 i/s
csv 3.3.0: 11.4 i/s - 1.11x slower
mixed
master: 14.1 i/s
csv 3.3.0: 13.7 i/s - 1.03x slower
include_col_sep
master: 5.2 i/s
csv 3.3.0: 5.1 i/s - 1.00x slower
include_row_sep
master: 5.2 i/s
csv 3.3.0: 5.1 i/s - 1.02x slower
encode_utf-8
master: 16.1 i/s
csv 3.3.0: 16.0 i/s - 1.01x slower
encode_sjis
csv 3.3.0: 16.5 i/s
master: 16.3 i/s - 1.02x slower
RUBYLIB= BUNDLER_ORIG_RUBYLIB= /Users/vladimirkochnev/.asdf/installs/ruby/3.3.3/bin/ruby -v -S benchmark-driver /Users/vladimirkochnev/code/csv/benchmark/parse_liberal_parsing.yaml
ruby 3.3.3 (2024-06-12 revision f1c7b6f435) [arm64-darwin23]
Calculating -------------------------------------
csv 3.3.0 master
unquoted 8.152 8.035 i/s - 100.000 times in 12.266633s 12.445189s
unquoted_backslash_quote 3.834 3.847 i/s - 100.000 times in 26.082500s 25.994618s
quoted 3.604 3.599 i/s - 100.000 times in 27.744279s 27.787045s
quoted_double_quote_outside_quote 2.248 2.227 i/s - 100.000 times in 44.486324s 44.911118s
quoted_backslash_quote 1.774 1.782 i/s - 100.000 times in 56.372575s 56.103198s
include_col_sep 3.600 3.602 i/s - 100.000 times in 27.775529s 27.759234s
include_row_sep 3.569 3.592 i/s - 100.000 times in 28.019030s 27.838529s
encode_utf-8 8.104 8.008 i/s - 100.000 times in 12.339020s 12.486872s
encode_sjis 8.461 8.277 i/s - 100.000 times in 11.818396s 12.081458s
Comparison:
unquoted
csv 3.3.0: 8.2 i/s
master: 8.0 i/s - 1.01x slower
unquoted_backslash_quote
master: 3.8 i/s
csv 3.3.0: 3.8 i/s - 1.00x slower
quoted
csv 3.3.0: 3.6 i/s
master: 3.6 i/s - 1.00x slower
quoted_double_quote_outside_quote
csv 3.3.0: 2.2 i/s
master: 2.2 i/s - 1.01x slower
quoted_backslash_quote
master: 1.8 i/s
csv 3.3.0: 1.8 i/s - 1.00x slower
include_col_sep
master: 3.6 i/s
csv 3.3.0: 3.6 i/s - 1.00x slower
include_row_sep
master: 3.6 i/s
csv 3.3.0: 3.6 i/s - 1.01x slower
encode_utf-8
csv 3.3.0: 8.1 i/s
master: 8.0 i/s - 1.01x slower
encode_sjis
csv 3.3.0: 8.5 i/s
master: 8.3 i/s - 1.02x slower
RUBYLIB= BUNDLER_ORIG_RUBYLIB= /Users/vladimirkochnev/.asdf/installs/ruby/3.3.3/bin/ruby -v -S benchmark-driver /Users/vladimirkochnev/code/csv/benchmark/parse_quote_char_nil.yaml
ruby 3.3.3 (2024-06-12 revision f1c7b6f435) [arm64-darwin23]
Calculating -------------------------------------
csv 3.3.0 master
without_quote_char 22.291 22.468 i/s - 100.000 times in 4.486160s 4.450730s
quote_char_nil 32.097 43.310 i/s - 100.000 times in 3.115538s 2.308916s
col_sep_space 11.969 12.007 i/s - 100.000 times in 8.355107s 8.328530s
Comparison:
without_quote_char
master: 22.5 i/s
csv 3.3.0: 22.3 i/s - 1.01x slower
quote_char_nil
master: 43.3 i/s
csv 3.3.0: 32.1 i/s - 1.35x slower
col_sep_space
master: 12.0 i/s
csv 3.3.0: 12.0 i/s - 1.00x slower
RUBYLIB= BUNDLER_ORIG_RUBYLIB= /Users/vladimirkochnev/.asdf/installs/ruby/3.3.3/bin/ruby -v -S benchmark-driver /Users/vladimirkochnev/code/csv/benchmark/parse_strip.yaml
ruby 3.3.3 (2024-06-12 revision f1c7b6f435) [arm64-darwin23]
Calculating -------------------------------------
csv 3.3.0 master
default 12.810 12.927 i/s - 100.000 times in 7.806406s 7.735908s
no_quote_strip 8.933 8.910 i/s - 100.000 times in 11.194571s 11.223611s
Comparison:
default
master: 12.9 i/s
csv 3.3.0: 12.8 i/s - 1.01x slower
no_quote_strip
csv 3.3.0: 8.9 i/s
master: 8.9 i/s - 1.00x slower