#!/usr/bin/perl -w use strict; use Benchmark; my $testlarge = "a " x 100000; my $testsmall = "a b c d e f"; timethese(-10,{ One => sub { my ($y) = (split(/\s+/,$testlarge))[0]; }, Two => sub { my ($y) = (split(/\s+/,$testsmall))[0]; }, Three => sub { $testsmall =~ /([^\s]*)\s+/; my $y = $1; }, Four => sub { $testlarge =~ /([^\s]*)\s+/; my $y = $1; }, }); #### Benchmark: running Four, One, Three, Two, each for at least 10 CPU seconds... Four: 10 wallclock secs ( 4.55 usr + 5.48 sys = 10.03 CPU) @ 439.88/s (n=4412) One: 13 wallclock secs (12.83 usr + 0.07 sys = 12.90 CPU) @ 4.88/s (n=63) Three: 11 wallclock secs (10.62 usr + 0.00 sys = 10.62 CPU) @ 94938.32/s (n=1008245) Two: 10 wallclock secs (10.01 usr + 0.00 sys = 10.01 CPU) @ 67121.98/s (n=671891)