#!/usr/bin/perl -w use strict; use Benchmark; timethese( 1000, { '0while' => sub { $_ = 0; while (1) { $_++; last if ($_ == 10000); } }, '0for' => sub { $_ = 0; for (;;) { $_++; last if ($_ == 10000); } }, '0block' => sub { $_ = 0; { $_++; redo if ($_ < 10000); } }, '1while' => sub { $_ = 0; while (1) { $_++; last if ($_ == 10000); } }, '1for' => sub { $_ = 0; for (;;) { $_++; last if ($_ == 10000); } }, '1block' => sub { $_ = 0; { $_++; redo if ($_ < 10000); } }, }); __END__ Benchmark: timing 1000 iterations of 0block, 0for, 0while, 1block, 1for, 1while... 0block: 7 wallclock secs ( 6.81 CPU) @ 146.84/s 0for: 7 wallclock secs ( 6.98 CPU) @ 143.27/s 0while: 7 wallclock secs ( 6.70 CPU) @ 149.25/s 1block: 6 wallclock secs ( 6.37 CPU) @ 156.99/s 1for: 6 wallclock secs ( 6.26 CPU) @ 159.74/s 1while: 6 wallclock secs ( 6.32 CPU) @ 158.23/s