Prechádzať zdrojové kódy

Dpkg::Control::Hash: use lower-case internally for keys

Only use field_capitalize() when exporting keys names outside of the
object. lc() is way faster than field_capitalize() and that makes
a difference in performance when you're reading/setting values many
times.
Raphaël Hertzog 16 rokov pred
rodič
commit
0374e5565d
1 zmenil súbory, kde vykonal 8 pridanie a 8 odobranie
  1. 8 8
      scripts/Dpkg/Control/Hash.pm

+ 8 - 8
scripts/Dpkg/Control/Hash.pm

@@ -388,7 +388,7 @@ sub TIEHASH  {
 
 
 sub FETCH {
 sub FETCH {
     my ($self, $key) = @_;
     my ($self, $key) = @_;
-    $key = field_capitalize($key);
+    $key = lc($key);
     return $self->[0]->{$key} if exists $self->[0]->{$key};
     return $self->[0]->{$key} if exists $self->[0]->{$key};
     return undef;
     return undef;
 }
 }
@@ -407,16 +407,16 @@ sub STORE {
         internerr("field %s has trailing newline >%s<", $key, $value);
         internerr("field %s has trailing newline >%s<", $key, $value);
     }
     }
     # Store it
     # Store it
-    $key = field_capitalize($key);
+    $key = lc($key);
     if (not exists $self->[0]->{$key}) {
     if (not exists $self->[0]->{$key}) {
-	push @{$$parent->{'in_order'}}, $key;
+	push @{$$parent->{'in_order'}}, field_capitalize($key);
     }
     }
     $self->[0]->{$key} = $value;
     $self->[0]->{$key} = $value;
 }
 }
 
 
 sub EXISTS {
 sub EXISTS {
     my ($self, $key) = @_;
     my ($self, $key) = @_;
-    $key = field_capitalize($key);
+    $key = lc($key);
     return exists $self->[0]->{$key};
     return exists $self->[0]->{$key};
 }
 }
 
 
@@ -424,10 +424,10 @@ sub DELETE {
     my ($self, $key) = @_;
     my ($self, $key) = @_;
     my $parent = $self->[1];
     my $parent = $self->[1];
     my $in_order = $$parent->{'in_order'};
     my $in_order = $$parent->{'in_order'};
-    $key = field_capitalize($key);
+    $key = lc($key);
     if (exists $self->[0]->{$key}) {
     if (exists $self->[0]->{$key}) {
 	delete $self->[0]->{$key};
 	delete $self->[0]->{$key};
-	@{$in_order} = grep { $_ ne $key } @{$in_order};
+	@$in_order = grep { lc($_) ne $key } @$in_order;
 	return 1;
 	return 1;
     } else {
     } else {
 	return 0;
 	return 0;
@@ -438,7 +438,7 @@ sub FIRSTKEY {
     my $self = shift;
     my $self = shift;
     my $parent = $self->[1];
     my $parent = $self->[1];
     foreach (@{$$parent->{'in_order'}}) {
     foreach (@{$$parent->{'in_order'}}) {
-	return $_ if exists $self->[0]->{$_};
+	return $_ if exists $self->[0]->{lc($_)};
     }
     }
 }
 }
 
 
@@ -448,7 +448,7 @@ sub NEXTKEY {
     my $found = 0;
     my $found = 0;
     foreach (@{$$parent->{'in_order'}}) {
     foreach (@{$$parent->{'in_order'}}) {
 	if ($found) {
 	if ($found) {
-	    return $_ if exists $self->[0]->{$_};
+	    return $_ if exists $self->[0]->{lc($_)};
 	} else {
 	} else {
 	    $found = 1 if $_ eq $last;
 	    $found = 1 if $_ eq $last;
 	}
 	}