In warnings.pm, delete a hash slice, instead of using a loop.
authorNicholas Clark <nick@ccl4.org>
Sun, 17 Feb 2013 08:16:01 +0000 (09:16 +0100)
committerNicholas Clark <nick@ccl4.org>
Sun, 17 Feb 2013 08:16:01 +0000 (09:16 +0100)
Deleting a hash slice compiles 5 fewer ops, and executes 21 fewer than
looping over the keys to delete each in turn. Whilst this is arguably a
micro-optimisation, it does not increase obfuscation and is in code loaded
by nearly every Perl program, so feels worthwhile.

lib/warnings.pm
regen/warnings.pl

index 5777723..cafda2d 100644 (file)
@@ -5,7 +5,7 @@
 
 package warnings;
 
-our $VERSION = '1.16';
+our $VERSION = '1.17';
 
 # Verify that we're called correctly so that warnings will work.
 # see also strict.pm.
@@ -577,7 +577,7 @@ sub warnif
 
 # These are not part of any public interface, so we can delete them to save
 # space.
-delete $warnings::{$_} foreach qw(NORMAL FATAL MESSAGE);
+delete @warnings::{qw(NORMAL FATAL MESSAGE)};
 
 1;
 
index e0f3583..93b26fe 100644 (file)
@@ -439,7 +439,7 @@ read_only_bottom_close_and_rename($pm);
 __END__
 package warnings;
 
-our $VERSION = '1.16';
+our $VERSION = '1.17';
 
 # Verify that we're called correctly so that warnings will work.
 # see also strict.pm.
@@ -825,6 +825,6 @@ sub warnif
 
 # These are not part of any public interface, so we can delete them to save
 # space.
-delete $warnings::{$_} foreach qw(NORMAL FATAL MESSAGE);
+delete @warnings::{qw(NORMAL FATAL MESSAGE)};
 
 1;