The code for this is:Six: 10 wallclock secs ( 4.82 usr + 5.18 sys = 10.00 CPU) @ 43 +7.30/s (n=4373) One: 13 wallclock secs (12.92 usr + 0.01 sys = 12.93 CPU) @ 4 +.87/s (n=63) Five: 13 wallclock secs (13.39 usr + 0.00 sys = 13.39 CPU) @ 5 +.15/s (n=69) Four: 10 wallclock secs ( 4.74 usr + 5.56 sys = 10.30 CPU) @ 44 +3.69/s (n=4570)
Note that using an equivalent regex is slightly faster, but the split done properly (using the third arguement) preforms at the "correct" level.#!/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; }, Five => sub { my $y = split(/\s+/,$testlarge) }, Six => sub { my ($y) = split(/\s+/,$testlarge,1) } });
Thanks for submitting the correct answer :) hehe.
Chow,
Gryn
In reply to Using the third arguement for split
by gryng
in thread is split optimized?
by Anonymous Monk
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |