in reply to Re^6: "exists $hash{key}" is slower than "$hash{key}"
in thread "exists $hash{key}" is slower than "$hash{key}"
The difference in performance between exists and a plain hash lookup is negligible, although exists should be slightly faster. The slowdown being seen is due to assigning a boolean return value to a scalar. Perl's boolean values (as returned by exists etc) are multi-valued scalars containing an int value of 0/1, a floating value of 0.0/1.0 and a string value of ""/"1". If this value is assigned to a scalar, all three parts need to be copied, including the string. Boolean values are optimised for use in conditionals. If you replace the assignment with something like $xx_global = exists $hash{$key2} ? 1 : 2 you'll see exists becomes faster than a hash lookup.
Dave.
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^8: "exists $hash{key}" is slower than "$hash{key}"
by swl (Prior) on Jan 09, 2020 at 03:00 UTC | |
by dave_the_m (Monsignor) on Jan 09, 2020 at 08:17 UTC | |
by swl (Prior) on Jan 09, 2020 at 21:56 UTC | |
by Anonymous Monk on Jan 09, 2020 at 09:15 UTC | |
|
Re^8: "exists $hash{key}" is slower than "$hash{key}"
by LanX (Saint) on Jan 07, 2020 at 16:00 UTC | |
by dave_the_m (Monsignor) on Jan 07, 2020 at 17:03 UTC |