in reply to Strawberry: Both IO and global match are VERY SLOW. Unless pre-heated (but why?)

... it's Windows issue

Yes - and I think it's worth raising at https://github.com/Perl/perl5/issues.
I'm getting similar results on Windows 11, with both perl-5.38.0 and the latest devel release (perl-5.39.4).
Update: If this is the same issue as https://github.com/Perl/perl5/issues/21360, then it has not been fixed.

My system seems to be roughly twice as fast as yours. For the final block I get:
Array size: 5000000 split, no pre-heat: 3.296 split, pre-heat: 3.421 match, no pre-heat: 38.257 match, pre-heat: 1.578 io(list), no pre-heat: 38.547 io(list), pre-heat: 1.280
With cygwin's perl-5.38.0 on this same Windows 11 system, I see:
Array size: 5000000 split, no pre-heat: 3.280 split, pre-heat: 3.265 match, no pre-heat: 6.952 match, pre-heat: 1.734 io(list), no pre-heat: 5.920 io(list), pre-heat: 0.969
So there's still a 6x slowdown for "match" and "io(list)" - but that's nowhere near as bad as the native windows perl.
I think that demonstrates there's a potential for significant improvement in the performance of the native windows builds.

With perl-5.38.0 on freebsd12, I see no timing disparity:
Array size: 5000000 split, no pre-heat: 10.392 split, pre-heat: 10.533 match, no pre-heat: 3.642 match, pre-heat: 3.593 io(list), no pre-heat: 3.166 io(list), pre-heat: 3.081
Cheers,
Rob