820だけ$nがループの外でmyされてるので影響あるんじゃないか
という疑問があったのでとりなおしてみた。やっぱり影響あった
らしく820,827はやや速くなったまでは予想通りだが、820と827が
逆転したのはかなり不思議だ。誰か理由説明できる?

use Benchmark;

timethese(undef, {
820 => sub {
my $n;
for my $i (0..100) {
$n = $i? 1: 0;
}
},
821 => sub {
my $n = 0;
for my $i (0..100) {
$n = 1;
}
},
827 => sub {
my $n;
for my $i (0..100) {
$n = int !! $i;
}
},
});

Benchmark: running 820, 821, 827 for at least 3 CPU seconds...
820: 2 wallclock secs ( 3.14 usr + 0.00 sys = 3.14 CPU) @ 36769.75/s (n=115457)
821: 3 wallclock secs ( 3.05 usr + 0.00 sys = 3.05 CPU) @ 48989.51/s (n=149418)
827: 3 wallclock secs ( 3.12 usr + 0.00 sys = 3.12 CPU) @ 42848.40/s (n=133687)