Perl 性能测试与内存使用全解析
1. 思考在性能测试中的重要性
在进行性能测试时,如果完全依赖计算机得出的结果而不加以思考,可能会被误导。 Benchmark 模块虽能不断输出数据,但如果不理解测试内容和数据含义,这些数据便毫无用处,甚至可能让人得出错误结论。
以对文件名按修改日期排序的测试为例,原本使用 Benchmark 的 timethese 方法比较两种排序方式:
use Benchmark qw{ timethese };
timethese( -2, {
Ordinary =>
q{ my @results = sort { -M $a <=> -M $b } glob "/bin/*"; },
Schwartzian =>
q{ map $_->[0], sort { $a->[1] <=> $b->[1] } map [$_, -M], glob "/bin/*"; },
});
这段代码存在问题。为了准确比较,测试对象应尽可能相似,但此代码中 “Ordinary” 排序将结果存入 @results 数组,而 “Schwartzian” 排序使用 map() 在空上下文环境中,二者操作不同。并且, glob() 操作开销大,会影响排序结果。
为解决这些问题,可按以下步骤
Perl性能测试与内存使用解析
超级会员免费看
订阅专栏 解锁全文
757

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



