my %cache3; sub to_cache3 { my( $ticker, $data ) = @_; $cache3{$ticker} = pack "(A10FFFFL)*", map @$_, @$data; } sub from_cache3 { my $ticker = shift; return [ map[ unpack("A10FFFFL", $_) ], unpack '(A[A10FFFFL])*', $cache3{$ticker} ]; } C:\test>880868-2 Rate mod2 orig mod1 mod2 18.9/s -- -3% -76% orig 19.4/s 3% -- -75% mod1 78.5/s 316% 304% --