-
Notifications
You must be signed in to change notification settings - Fork 1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Extremely slow performance when running in directory with lots of modules #5711
Comments
From @zoffixznetTo reproduce: cd $(mktemp -d); git clone https://github.com/perl6/mu; touch Foo.pm6; The perl6 command will appear to hang, although it will finish after a The problem is due to repo ID being calculated [^1] by slurping ALL of To fix the issue, and different method of coming up with the repo ID [1] |
From @LLFournString concat takes On2 in rakudo I think. Using join in this kind of
|
The RT System itself - Status changed from 'new' to 'open' |
From @timoOn 02/10/16 04:41, Lloyd Fournier wrote:
MoarVM implements "ropes" which make the performance a whole lot better. |
From @timoHere's the results from a --profile-compile: 1. match (gen/moar/m-CORE.setting:12064), 12750 entries, 25.66% I think the fourth spot, "canonpath" taking 40% inclusive time, is |
From @timoSorry, I was running the profile on a 4-weeks-old rakudo. After the FILETEST-D and FILETEST-F are in spots 3 and 4, but they only take 3594 next up is the loop from dir(), the one inside the gather. it sits at dir itself takes 17.8% inclusive time and 3.12% exclusive time, which match is up next at about 8.8% inclusive and 2.91% exclusive. I'm not AUTOTHREAD is at 12% inclusive time, which i find interesting. Perhaps That's all my thoughts for now. |
From @lizmatBy re-implementing Rakudo::Internals.DIR-RECURSE, the time has gone down to about a second. This is still calculating a SHA1 of ~1000 files for the perl6/mu case, but the overhead of scanning the directories is now much less because directory entries are pruned much earlier, and directories like .git are now skipped (they weren’t before). And there also some junctions in there that weren’t strictly necessary. Also dir() got a bit faster in the process as well (although DIR-RECURSE now no longer uses dir()).
|
From @zoffixznetAs there have been improvements to the feature as well as discussions on the challenges faced to making it blazing fast, I'm going to close this ticket. |
@zoffixznet - Status changed from 'open' to 'resolved' |
Migrated from rt.perl.org#129776 (status was 'resolved')
Searchable as RT129776$
The text was updated successfully, but these errors were encountered: