Couple other additions to assortment of facts:
if loops are changed to
while(my $s = <$fh>) {
$s =~ /^ ?Query/ && $match_count1++;
}
then deterioration gets significantly worse (compare to parent node):
v5.32.1
tempfile.txt is size 29 Mb
0.121957 read lines from disk and do RE (32571 matches).
9.511288 read lines from in-memory file and do RE (32571 matches).
if loops are changed to
while(my $s = <$fh>) {
index( $s, 'Query' ) != -1 && $match_count1++;;
}
(the same without the "$s") then using in-memory string is (of course) faster:
v5.32.1
tempfile.txt is size 29 Mb
0.092390 read lines from disk and do RE (32571 matches).
0.051797 read lines from in-memory file and do RE (32571 matches).