-
-
Notifications
You must be signed in to change notification settings - Fork 17
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
fix: avoid globbing non-dynamic paths #121
base: main
Are you sure you want to change the base?
Conversation
ci is failing, will debug tomorrow |
Could you also test if there are improvements with the Seems now it went down to 2min: https://github.com/yao-pkg/pkg/actions/runs/11675697212/job/32510712730?pr=121#step:7:20 :) I think there is still range of improvement here. Could you try enabling that test also for windows and mac? Just remove this lines: pkg/test/test-80-compression-node-opcua/main.js Lines 17 to 21 in 8913dff
|
I also created #122, I would like to compare performances of tests in this two PR |
In fact seems this is faster 👍🏼 |
if (isDynamicPattern(pattern)) { | ||
patterns.push(pattern); | ||
} else if (existsSync(pattern)) { | ||
paths.push(pattern); | ||
} | ||
} | ||
|
||
if (patterns.length !== 0) { | ||
return [...paths, ...globSync(patterns, { absolute: true, dot: true })]; | ||
} | ||
|
||
return paths; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm wondering why tinyglobby cannot use isDynamicPattern
his own by default before starting parsing a pattern?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
consistency shenanigans, but mainly just that i don't think it will be needed once its optimization pr gets fixed and lands
okay i see why at least some tests fail, it's due to this project using directory expansion, which means that globbing |
@SuperchupuDev Yep understood, could you fix that? |
trying |
okay, fixing it would just make all patterns dynamic, making performance not change whatsoever. we need a better solution. there needs to be a refactor in the walker logic so that all patterns are pushed into an array and then when all of them are collected call |
@SuperchupuDev Makes sense, agreee |
fixes #119
the problem with glob usage in this project is that
globSync
is called multiple times which isn't optimal, as it forcestinyglobby
to traverse the filesystem multiple times. in theory,globSync
could be called just once during the walking process, but that would be a bigger refactor, although a possible oneit looks like under a default config most patterns passed to
globSync
aren't even globs, so this PR avoids unnecessaryglobSync
calls when none of the patterns are globsscreenshot of patterns passed to tinyglobby in 6.1.0, each log is a different glob call
locally (windows) this change makes it faster than 5.15.0, with the reproduction from #119 taking 25s in 5.15.0 and 13s in latest with the change (latest without the change took too long to measure)