mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
csv.rb: optimize CSV::Table#to_a and #to_csv
* lib/csv.rb (CSV::Table#to_a, #to_csv): use Array#push instead of Array#concat for performance improvement. This performance improvement is proposed by zdennis <zach.dennis@gmail.com>. The patch is from Mau Magnaguagno <maumagnaguagno@gmail.com>. close #946 git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@59657 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
c0baa381b5
commit
20c5f60775
1 changed files with 9 additions and 13 deletions
22
lib/csv.rb
22
lib/csv.rb
|
@ -879,13 +879,11 @@ class CSV
|
|||
# then all of the field rows will follow.
|
||||
#
|
||||
def to_a
|
||||
@table.inject([headers]) do |array, row|
|
||||
if row.header_row?
|
||||
array
|
||||
else
|
||||
array + [row.fields]
|
||||
end
|
||||
array = [headers]
|
||||
@table.each do |row|
|
||||
array.push(row.fields) unless row.header_row?
|
||||
end
|
||||
return array
|
||||
end
|
||||
|
||||
#
|
||||
|
@ -896,13 +894,11 @@ class CSV
|
|||
# pass <tt>:write_headers => false</tt>.
|
||||
#
|
||||
def to_csv(write_headers: true, **options)
|
||||
@table.inject(write_headers ? [headers.to_csv(options)] : [ ]) do |rows, row|
|
||||
if row.header_row?
|
||||
rows
|
||||
else
|
||||
rows + [row.fields.to_csv(options)]
|
||||
end
|
||||
end.join('')
|
||||
array = write_headers ? [headers.to_csv(options)] : []
|
||||
@table.each do |row|
|
||||
array.push(row.fields.to_csv(options)) unless row.header_row?
|
||||
end
|
||||
return array.join('')
|
||||
end
|
||||
alias_method :to_s, :to_csv
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue