#!/usr/bin/perl -w use Benchmark 'timethese'; use strict; print "split: ", use_split(), "\n"; print "regex: ", use_regex(), "\n"; sub use_split { $_ = " one two three four five six"; split; # See Jouke's post (this may be faster). This is deprecated though. return $_[3]; } sub use_regex { $_ = " one two three four five six"; s/^\s+//; m/^(?:[^\s]+\s+){3}([^\s]+)/; return $1; } timethese(-10, { regex => \&use_regex, split => \&use_split }); timethese(-50, { regex => \&use_regex, split => \&use_split }); timethese(-100, { regex => \&use_regex, split => \&use_split }); #### Benchmark: running regex, split, each for at least 10 CPU seconds... regex: 12 wallclock secs (10.64 usr + 0.00 sys = 10.64 CPU) @ 40522.18/s (n=431156) split: 10 wallclock secs (10.02 usr + 0.00 sys = 10.02 CPU) @ 37290.82/s (n=373654) #### Benchmark: running regex, split, each for at least 50 CPU seconds... regex: 68 wallclock secs (54.11 usr + 0.13 sys = 54.24 CPU) @ 40957.93/s (n=2221558) split: 56 wallclock secs (49.95 usr + 0.05 sys = 50.00 CPU) @ 38128.48/s (n=1906424) #### Benchmark: running regex, split, each for at least 100 CPU seconds... regex: 136 wallclock secs (110.38 usr + 0.32 sys = 110.70 CPU) @ 40548.93/s (n=4488766) split: 112 wallclock secs (100.00 usr + 0.02 sys = 100.02 CPU) @ 38995.86/s (n=3900366)