use strict;
use warnings;
use Memchmark qw(cmpthese);
use Spreadsheet::ParseExcel;
use Spreadsheet::ParseExcel::Stream;
my $xls_file = 'Book1.xls';
cmpthese(
Spreadsheet_ParseExcel_Stream => sub {
my $xls = Spreadsheet::ParseExcel::Stream->new($xls_file);
while ( my $sheet = $xls->sheet() ) {
my $cellA1 = $sheet->row->[0];
}
},
Spreadsheet_ParseExcel => sub {
my $parser = Spreadsheet::ParseExcel->new();
my $workbook = $parser->parse($xls_file);
for my $worksheet ( $workbook->worksheets() ) {
my $cellA1 = $worksheet->get_cell( 0, 0 )->value;
}
}
);
Results:
test: Spreadsheet_ParseExcel, memory used: 199147520 bytes
test: Spreadsheet_ParseExcel_Stream, memory used: 17633280 bytes
As a side note, Spreadsheet::ParseExcel::Stream is a front end for Spreadsheet::ParseExcel, and its author asserts that its memory management is optimized.
|