- 论坛徽章:
- 7
|
我又测试了两次,都是 shift 更快,所以,到底哪个快这个好像也不太好说。
一次代码如下:
- #!/usr/bin/env perl
- use 5.12.0;
- use Benchmark qw(timethese);
- sub sum_a {
- my $a = shift;
- my $b = shift;
- return $a + $b;
- }
- sub sum_b {
- my $a = $_[0];
- my $b = $_[1];
- return $a + $b;
- }
- timethese(90000000, {
- shift => sub {
- sum_a(3, 5)
- },
- index => sub {
- sum_b(3, 5)
- }
- });
- # vim: sw=4 ts=4 ft=perl expandtab
复制代码 输出:
- $ perl test.pl
- Benchmark: timing 90000000 iterations of index, shift...
- index: 46 wallclock secs (45.23 usr + 0.02 sys = 45.25 CPU) @ 1988950.28/s (n=90000000)
- shift: 43 wallclock secs (42.33 usr + 0.03 sys = 42.36 CPU) @ 2124645.89/s (n=90000000)
复制代码 另一次从 flw 版主那儿偷学来一个参数(-1):
- #!/usr/bin/env perl
- use 5.12.0;
- use Benchmark qw(cmpthese);
- sub sum_a {
- my $a = shift;
- my $b = shift;
- return $a + $b;
- }
- sub sum_b {
- my $a = $_[0];
- my $b = $_[1];
- return $a + $b;
- }
- cmpthese(-1, {
- shift => sub {
- sum_a(3, 5)
- },
- index => sub {
- sum_b(3, 5)
- }
- });
- # vim: sw=4 ts=4 ft=perl expandtab
复制代码 输出:- $ perl test2.pl
- Rate index shift
- index 1872457/s -- -6%
- shift 1989485/s 6% --
复制代码 这次我没有写错什么吧。 |
|