summaryrefslogtreecommitdiffhomepage
path: root/test/benchmark.rb
diff options
context:
space:
mode:
authorPaul Kmiec <[email protected]>2023-04-29 16:22:39 -0700
committerPaul Kmiec <[email protected]>2023-05-05 09:29:58 -0700
commit1c355c83a9603f835dfe59ef4473df2b8cc3534c (patch)
treeb1dc4d05e5cd19ce48d0b86dc5ac8e8140a465a3 /test/benchmark.rb
parent916ba45a77302bcd6e81f2a61a6cff6a2f1f8367 (diff)
downloadcaxlsx-1c355c83a9603f835dfe59ef4473df2b8cc3534c.tar.gz
caxlsx-1c355c83a9603f835dfe59ef4473df2b8cc3534c.zip
Improve benchmarking / profiling
Added zip_command variant to benchmark.rb and added profile_memory.rb based on the `memory_profiler` gem.
Diffstat (limited to 'test/benchmark.rb')
-rwxr-xr-xtest/benchmark.rb25
1 files changed, 20 insertions, 5 deletions
diff --git a/test/benchmark.rb b/test/benchmark.rb
index 38dcc8fc..d5ccdf64 100755
--- a/test/benchmark.rb
+++ b/test/benchmark.rb
@@ -5,11 +5,14 @@ $LOAD_PATH.unshift "#{File.dirname(__FILE__)}/../lib"
require 'axlsx'
require 'csv'
require 'benchmark'
-Axlsx::trust_input = true
+# Axlsx::trust_input = true
row = []
-input = (32..126).to_a.pack('U*').chars.to_a
-20.times { row << input.shuffle.join }
+input1 = (32..126).to_a.pack('U*').chars.to_a # these will need to be escaped
+input2 = (65..122).to_a.pack('U*').chars.to_a # these do not need to be escaped
+10.times { row << input1.shuffle.join }
+10.times { row << input2.shuffle.join }
times = 3000
+
Benchmark.bmbm(30) do |x|
x.report('axlsx_noautowidth') do
p = Axlsx::Package.new
@@ -24,7 +27,7 @@ Benchmark.bmbm(30) do |x|
p.serialize("example_noautowidth.xlsx")
end
- x.report('axlsx') do
+ x.report('axlsx_autowidth') do
p = Axlsx::Package.new
p.workbook do |wb|
wb.add_worksheet do |sheet|
@@ -62,6 +65,18 @@ Benchmark.bmbm(30) do |x|
File.binwrite('example_streamed.xlsx', s.read)
end
+ x.report('axlsx_zip_command') do
+ p = Axlsx::Package.new
+ p.workbook do |wb|
+ wb.add_worksheet do |sheet|
+ times.times do
+ sheet << row
+ end
+ end
+ end
+ p.serialize("example_zip_command.xlsx", zip_command: 'zip')
+ end
+
x.report('csv') do
CSV.open("example.csv", "wb") do |csv|
times.times do
@@ -70,4 +85,4 @@ Benchmark.bmbm(30) do |x|
end
end
end
-File.delete("example.csv", "example_streamed.xlsx", "example_shared.xlsx", "example_autowidth.xlsx", "example_noautowidth.xlsx")
+File.delete("example.csv", "example_streamed.xlsx", "example_shared.xlsx", "example_autowidth.xlsx", "example_noautowidth.xlsx", "example_zip_command.xlsx")