#!/usr/bin/perl use strict; use warnings; use Benchmark qw/:all/; my $TIMES = 500000; my $upper_id_string = "ABCD1EFGHI2J.a01f2345b067cde890f12gab345678c9"; my $lower_id_string = "abcd1efghi2j.a01f2345b067cde890f12gab345678c9"; sub only_tr { my $string = shift; my( $id, $session ) = split( /\./, $string, 2 ); $id =~ tr/a-z/A-Z/; return( $id, $session ); } sub old { my $string = shift; return split( /\./, $string, 2 ); } my $only_tr_low = sub { my( $id, $session ) = only_tr( $lower_id_string ) }; my $only_tr_upp = sub { my( $id, $session ) = only_tr( $upper_id_string ) }; my $old_low = sub { my( $id, $session ) = match_and_tr( $lower_id_string ) }; my $old_upp = sub { my( $id, $session ) = match_and_tr( $upper_id_string ) }; cmpthese( $TIMES, { 'Old way ' => $old_low, 'Only TR LC' => $only_tr_low, }, ); cmpthese( $TIMES, { 'Only TR UC' => $only_tr_upp, 'Old way U' => $old_upp, }, );