I had to add SQL (postgres) :P
Rate Span SQL (Pg) Perl Pair
Span 8489/s -- -44% -56% -86%
SQL (Pg) 15132/s 78% -- -22% -75%
Perl 19388/s 128% 28% -- -68%
Pair 60727/s 615% 301% 213% --
adding:
sub _sql {
return $dbh->selectrow_arrayref("
select array_to_string( array(
select lower(r) || '-' || upper(r)-1 from (
select
(select unnest(r1) limit 1 offset n -1) *
(select unnest(r2) limit 1 offset n -1) as r
from (values
(('{[' || replace(replace('$TM_part1', ',', '],['), '-', ','
+) || ']}')::int4multirange,
('{[' || replace(replace('$TM_part2', ',', '],['), '-', ','
+) || ']}')::int4multirange
)) as f(r1,r2)
, lateral generate_series(1, 4) as g(n)
) as g
), ',') as h
;
")->[0] ;
}
Update: see my next message; it has improved/faster SQL and different Benchmark