use strict; use warnings; use Benchmark qw(cmpthese); my @strings = qw( xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz ppppppppppppppppppppppppppppppppppppppppppppppppppppppppp qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr sssssssssssssssssssssssssssssssssssssssssssssssssssssssss ttttttttttttttttttttttttttttttttttttttttttttttttttttttttt ); cmpthese (-1, { join => sub {join '', @strings}, pack => sub {pack("a*" x ($#strings + 1), @strings)}, } ); #### Rate pack join pack 452302/s -- -58% join 1073851/s 137% --