mirror of
https://github.com/PowerShell/PowerShell
synced 2026-06-08 12:12:50 +00:00
* The major refactoring changes are: - In `ModuleIntrisic.cs`, remove unneeded Windows-PowerShell-only code. - In `ModuleUtils.cs` - use the new API `Directory.GetDirectories(string path, string searchPattern, EnumerationOptions enumerationOptions)` and `Directory.GetFiles(string path, string searchPattern, EnumerationOptions enumerationOptions)` to enumerate files and sub-directories within a directory path. - remove the unused parameter `bool force` from `GetDefaultAvailableModuleFiles(bool force, bool isForAutoDiscovery, ExecutionContext context)` - refactor the method `GetModuleVersionsFromAbsolutePath`. Add more comments and rename the method name. - In `ModuleCmdletBase.cs`, refactor the method `GetModuleForNonRootedPaths` to `GetModuleForNames` to simply its implementation. - In `PSModuleInfo.cs` - group the declarations of `Declared*Exports` fields together - rename `_detected*Exports` fields to `Detected*Exports` to group them together. They are internal fields and used outside `PSModuleInfo`. * There is some perf improvement after this refactoring change: - For `Get-Module -ListAvailable`, there is about 36% speed improvement for 94 default modules. - For `Get-Module -ListAvailable -All`, there is about 14% speed improvement for totally 600 module files. - For `Get-Module <name> -ListAvailable -List`, there is over 17x speed improvement for finding 13 modules from 600 modules. This is because we now filter names using the module file before creating a `PSMdouleInfo` object.