#!/usr/bin/perl use common::sense; use Benchmark qw(cmpthese); my @N = qw(1230.1200 10332.0120 1200 153.56); cmpthese(-1, { 'single-splat' => sub { my @n = @N; for (@n) { s/(\.\d*?)0*$/$1/; } }, 'single' => sub { my @n = @N; for (@n) { s/(\.\d*?)0+$/$1/; } }, 'conditional' => sub { my @n = @N; for (@n) { s/0+$// if /\./; } }, 'conditional2' => sub { my @n = @N; for (@n) { s/0+$// if /\.\d+$/; } }, }); #### Rate single-splat single conditional2 conditional single-splat 156392/s -- -25% -43% -53% single 208524/s 33% -- -24% -38% conditional2 275692/s 76% 32% -- -17% conditional 334042/s 114% 60% 21% --