I ran the code using use re 'debug' and there is no difference in the regex processing.
I then instrumented the code with some metamod::Devel::Peek Dumps. The in-memory strings have rapidly increasing amounts of memory allocated (the LEN field), plateauing at close to the size of the input string. This pattern is the same for both Strawberry Perl and MSYS2 Perl, which makes me wonder if the delay is related to memory management. Others are more qualified to comment on that front than me, though.
Edit: Just for completeness I also tested using Perl 5.36.0 on Ubuntu via WSL and the memory usage is the same.
Updated code is below behind inside the readmore tags.
tempfile.txt is size 35 Mb
SV = PV(0x177f89db120) at 0x177f88bcca0
REFCNT = 1
FLAGS = (POK,IsCOW,pPOK)
PV = 0x177fa280250 " Querysome random text 0.271320203145251\n"\0
CUR = 41
LEN = 408
COW_REFCNT = 2
SV = PV(0x177f89db120) at 0x177f88bcca0
REFCNT = 1
FLAGS = (POK,IsCOW,pPOK)
PV = 0x177fa34f4d0 " Querysome random text 0.775348369818055some ran
+dom text 0.775348369818055\n"\0
CUR = 75
LEN = 201
COW_REFCNT = 2
SV = PV(0x177f89db120) at 0x177f88bcca0
REFCNT = 1
FLAGS = (POK,IsCOW,pPOK)
PV = 0x177fa3a28b0 " Querysome random text 0.785001144808529\n"\0
CUR = 41
LEN = 43
COW_REFCNT = 2
SV = PV(0x177f89db120) at 0x177f88bcca0
REFCNT = 1
FLAGS = (POK,IsCOW,pPOK)
PV = 0x177fa297c60 " Querysome random text 0.894431999356865\n"\0
CUR = 41
LEN = 309
COW_REFCNT = 2
SV = PV(0x177f89db120) at 0x177f88bcca0
REFCNT = 1
FLAGS = (POK,IsCOW,pPOK)
PV = 0x177f88a13b0 " Querysome random text 0.412049736815259some ran
+dom text 0.412049736815259some random text 0.412049736815259some rand
+om text 0.412049736815259some random text 0.412049736815259some rando
+m text 0.412049736815259some random text 0.412049736815259some random
+ text 0.412049736815259some random text 0.412049736815259\n"\0
CUR = 313
LEN = 392
COW_REFCNT = 2
SV = PV(0x177f89db120) at 0x177f88bcca0
REFCNT = 1
FLAGS = (POK,IsCOW,pPOK)
PV = 0x177fa3750d0 " Querysome random text 0.809515115277865\n"\0
CUR = 41
LEN = 275
COW_REFCNT = 2
0.005142 read lines from disk and do RE (6 matches).
SV = PV(0x177f89db120) at 0x177f88bcca0
REFCNT = 1
FLAGS = (POK,IsCOW,pPOK)
PV = 0x177f88b3ed0 " Querysome random text 0.271320203145251\n"\0
CUR = 41
LEN = 656
COW_REFCNT = 2
SV = PV(0x177f89db120) at 0x177f88bcca0
REFCNT = 1
FLAGS = (POK,IsCOW,pPOK)
PV = 0x1778000b070 " Querysome random text 0.775348369818055some ran
+dom text 0.775348369818055\n"\0
CUR = 75
LEN = 37784908
COW_REFCNT = 2
SV = PV(0x177f89db120) at 0x177f88bcca0
REFCNT = 1
FLAGS = (POK,IsCOW,pPOK)
PV = 0x1778242b070 " Querysome random text 0.785001144808529\n"\0
CUR = 41
LEN = 37784634
COW_REFCNT = 2
SV = PV(0x177f89db120) at 0x177f88bcca0
REFCNT = 1
FLAGS = (POK,IsCOW,pPOK)
PV = 0x1778000d070 " Querysome random text 0.894431999356865\n"\0
CUR = 41
LEN = 37784593
COW_REFCNT = 2
SV = PV(0x177f89db120) at 0x177f88bcca0
REFCNT = 1
FLAGS = (POK,IsCOW,pPOK)
PV = 0x1778242b070 " Querysome random text 0.412049736815259some ran
+dom text 0.412049736815259some random text 0.412049736815259some rand
+om text 0.412049736815259some random text 0.412049736815259some rando
+m text 0.412049736815259some random text 0.412049736815259some random
+ text 0.412049736815259some random text 0.412049736815259\n"\0
CUR = 313
LEN = 37784176
COW_REFCNT = 2
SV = PV(0x177f89db120) at 0x177f88bcca0
REFCNT = 1
FLAGS = (POK,IsCOW,pPOK)
PV = 0x1778000f070 " Querysome random text 0.809515115277865\n"\0
CUR = 41
LEN = 37783182
COW_REFCNT = 2
0.004073 read lines from in-memory file and do RE (6 matches).
|