Use File#chmod rather than FileUtils.chmod #8965
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
We already have the open file descriptor, so we can avoid the overhead of resolving the filepath (as well as the overhead inside
FileUtils) by just callingchmodon the file descriptor itself.What was the end-user or developer problem that led to this PR?
Installing gems isn't as fast as I would like it to be, so I'm trying to speed it up.
What is your fix for the problem, implemented in this PR?
I have a branch that speeds up unpacking gems by about 20%, but it's a bunch of changes so I am trying to upstream the changes piecemeal so it's easier to review. The benchmark I'm using is here, it's just testing unpacking the gems a new Rails app depends on.
This PR changes
FileUtils.chmodforFile#chmod. Since we already have the file descriptor for the files we're writing to, we can avoid the overhead ofFileUtilsas well as usefchmodsystem call vs regularchmod.chmodhas to find the file, but since we already have a handle we may as well use it.Make sure the following tasks are checked