use Benchmark; sub p_add { for my $i (1..100) { for (1..100) { $_ + $i } } } sub p_sub { for my $i (1..100) { for (1..100) { $_ - $i } } } sub p_mul { for my $i (1..100) { for (1..100) { $_ * $i } } } sub p_div { for my $i (1..100) { for (1..100) { $_ / $i } } } sub p_pwr { for my $i (1..100) { for (1..100) { $_ ** $i } } } sub p_mod { for my $i (1..100) { for (1..100) { $_ % $i } } } sub p_and { for my $i (1..100) { for (1..100) { $_ & $i } } } sub p_or { for my $i (1..100) { for (1..100) { $_ | $i } } } sub p_xor { for my $i (1..100) { for (1..100) { $_ ^ $i } } } sub p_not { for my $i (1..100) { for (1..100) { ~$_ } } } sub p_shl { for my $i (1..100) { for (1..100) { $_ << $i } } } sub p_shr { for my $i (1..100) { for (1..100) { $_ >> $i } } } sub p_gt { for my $i (1..100) { for (1..100) { $_ > $i } } } sub p_gte { for my $i (1..100) { for (1..100) { $_ >= $i } } } sub p_lt { for my $i (1..100) { for (1..100) { $_ < $i } } } sub p_lte { for my $i (1..100) { for (1..100) { $_ <= $i } } } sub p_eq { for my $i (1..100) { for (1..100) { $_ == $i } } } sub p_ne { for my $i (1..100) { for (1..100) { $_ != $i } } } timethese(100000, { add => \&p_add, sub => \&p_sub, mul => \&p_mul, div => \&p_div, pwr => \&p_pwr, mod => \&p_mod, and => \&p_and, or => \&p_or, xor => \&p_xor, not => \&p_not, shl => \&p_shl, shr => \&p_shr, gt => \&p_gt, gte => \&p_gte, lt => \&p_lt, lte => \&p_lte, eq => \&p_eq, ne => \&p_ne });