以下是將SQL查詢轉儲爲對齊文本表格格式的代碼。使用Text :: Table性能格式化SQL查詢性能
sub sql_command {
my ($self,$str) = @_;
my $s = $self->{_db}->prepare($str) or die $!;
$s->execute() or die $!;
my $table;
push @$table, [ map { defined $_ ? $_ : "undef" } @{$s->{'NAME'}}];
while(my $row = $s->fetch) {
push @$table, [ map{ defined $_ ? $_ : "undef" }@$row ];
}
return box_format($table);;
}
sub box_format {
my $table = shift;
my $n_cols = scalar @{$table->[0]};
my $tb = Text::Table->new(\'| ', '', (\' | ','')x($n_cols-1), \' |+');
$tb->load(@$table);
my $rule = $tb->rule(qw/- +/);
my @rows = $tb->body();
return $rule, shift @rows, $rule, @rows, $rule
if @rows;
}
輸出如預期。但是在性能方面,處理大約5MB大小的輸出文件需要大約30秒。
在性能方面是否有更好的方法來實現這一目標?
謝謝!
在'while'循環和'box_format'中花了多少時間? – 2013-03-12 08:44:16