Perl编程实践:排序、目录遍历、模块开发与测试
1. 排序优化:普通排序与Schwartzian变换对比
在处理文件排序时,有普通排序和Schwartzian变换两种方法。以下是使用Schwartzian变换对文件按大小排序的代码:
my $transform = sub {
map $_->[0],
sort { $a->[1] <=> $b->[1] }
map [$_, -s $_],
@files;
};
通过 timethese 函数对普通排序和Schwartzian变换进行性能测试:
timethese( -2, {
Ordinary => $ordinary,
Schwartzian => $transform,
});
测试结果显示,即使对于少量文件,Schwartzian变换的性能也有显著提升。例如,有21个文件进行比较时,普通排序在2.17 CPU秒内完成7680次操作,速率为3539.17次/秒;而Schwartzian变换在2.07 CPU秒内完成17840次操作,速率为8618.36次/秒。
字典排序
为了实现“字典”排序,我们可以使用Schwartzian变换。首先是一个简单但有局限性的实现:
my @dictiona
超级会员免费看
订阅专栏 解锁全文
704

被折叠的 条评论
为什么被折叠?



