Skip to content

Possible improvements of load time #76

@ShrykeWindgrace

Description

@ShrykeWindgrace

I noticed a couple of things with import time of this wonderful module:
On a debian machine I get half a second (TotalMilliseconds : 412.3335) for Import-Module Terminal-Icons in my $PROFILE. Same command on a windows machine report ~1s import time.

So, I've got a couple of questions:

  • Do you have an insight on the reason of such a difference of load time (x2)?
  • Can we further reduce load times? Say, we find a way to import existing xml files without rereading color theme and icon theme each time, and re-generate these xml's only upon explicit user call (I assume that color theme changes relatively rarely) - would that allow us to gain a significant amount of import time? Judging by the dump below, I am inclined to say yes, but I might not be taking something into account.

Cheers and thanks for the good work!

Here's the output of $trace = Trace-Script -ScriptBlock {Import-Module /nix/store/x4nsl5qaj4i38nrdy8qzkx597ha21dxx-Terminal-Icons-0.9.0/Terminal-Icons/0.9.0/Terminal-Icons.psd1 };$trace.AllLines | Format-Table

console dump
Percent HitCount Duration         Average          SelfDuration     SelfAverage      Name                                 Line Text
------- -------- --------         -------          ------------     -----------      ----                                 ---- ----
    100        3 00:00:00.4558292 00:00:00.1519431 00:00:00.0011815 00:00:00.0003938 cd767f82-914f-4658-900f-1af8848bfaff    1 {Import-Module /nix/store/x4nsl5qaj4i38nrdy8qzkx597ha21dxx-Terminal-Icons-0.9.0/Terminal-Icons/0.9.0/Termina…
  3.055        1 00:00:00.0139238 00:00:00.0139238 00:00:00.0139238 00:00:00.0139238 Terminal-Icons.psd1                     1 @{
  0.034        1 00:00:00.0001571 00:00:00.0001571 00:00:00.0001571 00:00:00.0001571 Terminal-Icons.psm1                  1144 $moduleRoot    = $PSScriptRoot
  9.431        1 00:00:00.0429906 00:00:00.0429906 00:00:00.0417988 00:00:00.0417988 Terminal-Icons.psm1                  1145 $glyphs        = . $moduleRoot/Data/glyphs.ps1
  0.127        1 00:00:00.0005770 00:00:00.0005770 00:00:00.0005770 00:00:00.0005770 Terminal-Icons.psm1                  1146 $escape        = [char]27
  0.107        1 00:00:00.0004870 00:00:00.0004870 00:00:00.0004870 00:00:00.0004870 Terminal-Icons.psm1                  1147 $colorReset    = "${escape}[0m"
  0.002        1 00:00:00.0000092 00:00:00.0000092 00:00:00.0000092 00:00:00.0000092 Terminal-Icons.psm1                  1148 $defaultTheme  = 'devblackops'
  8.891        1 00:00:00.0405275 00:00:00.0405275 00:00:00.0029284 00:00:00.0029284 Terminal-Icons.psm1                  1149 $userThemePath = Get-ThemeStoragePath
  0.004        1 00:00:00.0000175 00:00:00.0000175 00:00:00.0000175 00:00:00.0000175 Terminal-Icons.psm1                  1150 $userThemeData = @{
  0.002        1 00:00:00.0000071 00:00:00.0000071 00:00:00.0000071 00:00:00.0000071 Terminal-Icons.psm1                  1160 $colorSequences = @{}
 12.701        1 00:00:00.0578957 00:00:00.0578957 00:00:00.0005635 00:00:00.0005635 Terminal-Icons.psm1                  1161 $iconThemes     = Import-IconTheme
  9.116        1 00:00:00.0415548 00:00:00.0415548 00:00:00.0005767 00:00:00.0005767 Terminal-Icons.psm1                  1162 $colorThemes    = Import-ColorTheme
 26.476        1 00:00:00.1206831 00:00:00.1206831 00:00:00.0022422 00:00:00.0022422 Terminal-Icons.psm1                  1163 $colorThemes.GetEnumerator().ForEach({
  1.874        2 00:00:00.0085435 00:00:00.0042718 00:00:00.0033811 00:00:00.0016906 Terminal-Icons.psm1                  1168 $prefs = Import-Preferences
  0.258        1 00:00:00.0011783 00:00:00.0011783 00:00:00.0011783 00:00:00.0011783 Terminal-Icons.psm1                  1171 $userThemeData.CurrentIconTheme  = $prefs.CurrentIconTheme
  0.242        1 00:00:00.0011052 00:00:00.0011052 00:00:00.0011052 00:00:00.0011052 Terminal-Icons.psm1                  1172 $userThemeData.CurrentColorTheme = $prefs.CurrentColorTheme
  2.083        1 00:00:00.0094933 00:00:00.0094933 00:00:00.0017669 00:00:00.0017669 Terminal-Icons.psm1                  1176 (Get-ChildItem $userThemePath -Filter '*_icon.xml').ForEach({
 18.562        1 00:00:00.0846105 00:00:00.0846105 00:00:00.0017086 00:00:00.0017086 Terminal-Icons.psm1                  1180 (Get-ChildItem $userThemePath -Filter '*_color.xml').ForEach({
  0.082        1 00:00:00.0003717 00:00:00.0003717 00:00:00.0003344 00:00:00.0003344 Terminal-Icons.psm1                  1187 $colorThemes.GetEnumerator().ForEach({
  0.044        1 00:00:00.0001993 00:00:00.0001993 00:00:00.0001708 00:00:00.0001708 Terminal-Icons.psm1                  1190 $iconThemes.GetEnumerator().ForEach({
  2.363        1 00:00:00.0107692 00:00:00.0107692 00:00:00.0003624 00:00:00.0003624 Terminal-Icons.psm1                  1195 $userThemeData.Themes.Color.GetEnumerator().ForEach({
  0.921        1 00:00:00.0042001 00:00:00.0042001 00:00:00.0004601 00:00:00.0004601 Terminal-Icons.psm1                  1199 $userThemeData.Themes.Icon.GetEnumerator().ForEach({
  0.868        2 00:00:00.0039576 00:00:00.0019788 00:00:00.0018716 00:00:00.0009358 Terminal-Icons.psm1                  1204 Save-Preferences -Preferences $prefs
  2.498        1 00:00:00.0113886 00:00:00.0113886 00:00:00.0113886 00:00:00.0113886 Terminal-Icons.psm1                  1208 Update-FormatData -Prepend ([IO.Path]::Combine($moduleRoot, 'Terminal-Icons.format.ps1xml'))
  0.261        1 00:00:00.0011918 00:00:00.0011918 00:00:00.0011918 00:00:00.0011918 glyphs.ps1                              1 @{
  0.007        3 00:00:00.0000321 00:00:00.0000107 00:00:00.0000321 00:00:00.0000107 Terminal-Icons.psm1                   166 function Get-ThemeStoragePath {
  0.008        3 00:00:00.0000382 00:00:00.0000127 00:00:00.0000382 00:00:00.0000127 Terminal-Icons.psm1                   171 if ($IsLinux -or $IsMacOs) {
  0.249        6 00:00:00.0011342 00:00:00.0001890 00:00:00.0011342 00:00:00.0001890 Terminal-Icons.psm1                   172 if (-not ($basePath = $env:XDG_CONFIG_HOME)) {
  0.158        3 00:00:00.0007196 00:00:00.0002399 00:00:00.0007196 00:00:00.0002399 Terminal-Icons.psm1                   181 if ($basePath) {
  0.348        3 00:00:00.0015852 00:00:00.0005284 00:00:00.0015852 00:00:00.0005284 Terminal-Icons.psm1                   182 $storagePath = [IO.Path]::Combine($basePath, 'powershell', 'Community', 'Terminal-Icons')
  7.783        3 00:00:00.0354779 00:00:00.0118260 00:00:00.0354779 00:00:00.0118260 Terminal-Icons.psm1                   183 if (-not (Test-Path $storagePath)) {
  0.011        3 00:00:00.0000501 00:00:00.0000167 00:00:00.0000501 00:00:00.0000167 Terminal-Icons.psm1                   186 $storagePath
  0.371        3 00:00:00.0016907 00:00:00.0005636 00:00:00.0016907 00:00:00.0005636 Terminal-Icons.psm1                   188 }
  0.002        1 00:00:00.0000073 00:00:00.0000073 00:00:00.0000073 00:00:00.0000073 Terminal-Icons.psm1                   203 function Import-IconTheme {
  0.003        1 00:00:00.0000134 00:00:00.0000134 00:00:00.0000134 00:00:00.0000134 Terminal-Icons.psm1                   208 $hash = @{}
 12.474        1 00:00:00.0568603 00:00:00.0568603 00:00:00.0461060 00:00:00.0461060 Terminal-Icons.psm1                   209 (Get-ChildItem -Path $moduleRoot/Data/iconThemes).ForEach({
   0.08        1 00:00:00.0003646 00:00:00.0003646 00:00:00.0003646 00:00:00.0003646 Terminal-Icons.psm1                   212 $hash
  0.019        1 00:00:00.0000866 00:00:00.0000866 00:00:00.0000866 00:00:00.0000866 Terminal-Icons.psm1                   213 }
  0.003        1 00:00:00.0000137 00:00:00.0000137 00:00:00.0000137 00:00:00.0000137 Terminal-Icons.psm1                   209 {
  2.242        1 00:00:00.0102202 00:00:00.0102202 00:00:00.0102202 00:00:00.0102202 Terminal-Icons.psm1                   210 $hash.Add($_.Basename, (Import-PowerShellDataFile $_.FullName))
  0.114        1 00:00:00.0005204 00:00:00.0005204 00:00:00.0005204 00:00:00.0005204 Terminal-Icons.psm1                   211 }
  0.003        1 00:00:00.0000118 00:00:00.0000118 00:00:00.0000118 00:00:00.0000118 Terminal-Icons.psm1                   189 function Import-ColorTheme {
  0.003        1 00:00:00.0000155 00:00:00.0000155 00:00:00.0000155 00:00:00.0000155 Terminal-Icons.psm1                   194 $hash = @{}
  8.966        1 00:00:00.0408707 00:00:00.0408707 00:00:00.0326197 00:00:00.0326197 Terminal-Icons.psm1                   195 (Get-ChildItem -Path $moduleRoot/Data/colorThemes).ForEach({
  0.002        1 00:00:00.0000109 00:00:00.0000109 00:00:00.0000109 00:00:00.0000109 Terminal-Icons.psm1                   201 $hash
  0.015        1 00:00:00.0000692 00:00:00.0000692 00:00:00.0000692 00:00:00.0000692 Terminal-Icons.psm1                   202 }
  0.002        1 00:00:00.0000074 00:00:00.0000074 00:00:00.0000074 00:00:00.0000074 Terminal-Icons.psm1                   195 {
  0.453        1 00:00:00.0020642 00:00:00.0020642 00:00:00.0020642 00:00:00.0020642 Terminal-Icons.psm1                   196 $colorData = Import-PowerShellDataFile $_.FullName
  0.523        1 00:00:00.0023853 00:00:00.0023853 00:00:00.0023853 00:00:00.0023853 Terminal-Icons.psm1                   197 $hash[$colorData.Name] = $colorData
  0.681        1 00:00:00.0031039 00:00:00.0031039 00:00:00.0031039 00:00:00.0031039 Terminal-Icons.psm1                   198 $hash[$colorData.Name].Types.Directories[''] = $colorReset
  0.146        1 00:00:00.0006667 00:00:00.0006667 00:00:00.0006667 00:00:00.0006667 Terminal-Icons.psm1                   199 $hash[$colorData.Name].Types.Files['']       = $colorReset
  0.005        1 00:00:00.0000235 00:00:00.0000235 00:00:00.0000235 00:00:00.0000235 Terminal-Icons.psm1                   200 }
  0.001        1 00:00:00.0000060 00:00:00.0000060 00:00:00.0000060 00:00:00.0000060 Terminal-Icons.psm1                  1163 {
 25.978        1 00:00:00.1184134 00:00:00.1184134 00:00:00.0019178 00:00:00.0019178 Terminal-Icons.psm1                  1164 $colorSequences[$_.Name] = ConvertTo-ColorSequence -ColorData $_.Value
  0.005        1 00:00:00.0000215 00:00:00.0000215 00:00:00.0000215 00:00:00.0000215 Terminal-Icons.psm1                  1165 }
  0.003        2 00:00:00.0000150 00:00:00.0000075 00:00:00.0000150 00:00:00.0000075 Terminal-Icons.psm1                   132 process {
  0.491        2 00:00:00.0022359 00:00:00.0011180 00:00:00.0021205 00:00:00.0010602 Terminal-Icons.psm1                   133 $cs      = New-EmptyColorTheme
  0.281        2 00:00:00.0012805 00:00:00.0006402 00:00:00.0012805 00:00:00.0006402 Terminal-Icons.psm1                   134 $cs.Name = $ColorData.Name
   0.62        2 00:00:00.0028241 00:00:00.0014120 00:00:00.0028241 00:00:00.0014120 Terminal-Icons.psm1                   137 if ($ColorData.Types.Directories['symlink']) {
  1.657        2 00:00:00.0075518 00:00:00.0037759 00:00:00.0016133 00:00:00.0008066 Terminal-Icons.psm1                   138 $cs.Types.Directories['symlink']  = ConvertFrom-RGBColor -RGB $ColorData.Types.Directories['symlink']
  0.008        2 00:00:00.0000349 00:00:00.0000174 00:00:00.0000349 00:00:00.0000174 Terminal-Icons.psm1                   140 if ($ColorData.Types.Directories['junction']) {
  0.091        2 00:00:00.0004149 00:00:00.0002074 00:00:00.0002400 00:00:00.0001200 Terminal-Icons.psm1                   141 $cs.Types.Directories['junction'] = ConvertFrom-RGBColor -RGB $ColorData.Types.Directories['junction']
  5.286        2 00:00:00.0240972 00:00:00.0120486 00:00:00.0024481 00:00:00.0012240 Terminal-Icons.psm1                   143 $ColorData.Types.Directories.WellKnown.GetEnumerator().ForEach({
  0.205        2 00:00:00.0009349 00:00:00.0004674 00:00:00.0009349 00:00:00.0004674 Terminal-Icons.psm1                   148 if ($ColorData.Types.Files['symlink']) {
  0.088        2 00:00:00.0003989 00:00:00.0001994 00:00:00.0002298 00:00:00.0001149 Terminal-Icons.psm1                   149 $cs.Types.Files['symlink']  = ConvertFrom-RGBColor -RGB $ColorData.Types.Files['symlink']
  0.006        2 00:00:00.0000270 00:00:00.0000135 00:00:00.0000270 00:00:00.0000135 Terminal-Icons.psm1                   151 if ($ColorData.Types.Files['junction']) {
  0.076        2 00:00:00.0003466 00:00:00.0001733 00:00:00.0001815 00:00:00.0000908 Terminal-Icons.psm1                   152 $cs.Types.Files['junction'] = ConvertFrom-RGBColor -RGB $ColorData.Types.Files['junction']
  6.692        2 00:00:00.0305056 00:00:00.0152528 00:00:00.0003742 00:00:00.0001871 Terminal-Icons.psm1                   154 $ColorData.Types.Files.WellKnown.GetEnumerator().ForEach({
 27.401        2 00:00:00.1249035 00:00:00.0624518 00:00:00.0010738 00:00:00.0005369 Terminal-Icons.psm1                   159 $ColorData.Types.Files.GetEnumerator().Where({$_.Name -ne 'WellKnown' -and $_.Name -ne ''}).ForEach({
  0.004        2 00:00:00.0000196 00:00:00.0000098 00:00:00.0000196 00:00:00.0000098 Terminal-Icons.psm1                   163 $cs
  0.204        2 00:00:00.0009316 00:00:00.0004658 00:00:00.0009316 00:00:00.0004658 Terminal-Icons.psm1                   164 }
  0.002        2 00:00:00.0000097 00:00:00.0000048 00:00:00.0000097 00:00:00.0000048 Terminal-Icons.psm1                   245 function New-EmptyColorTheme {
  0.007        2 00:00:00.0000310 00:00:00.0000155 00:00:00.0000310 00:00:00.0000155 Terminal-Icons.psm1                   251 @{
  0.016        2 00:00:00.0000747 00:00:00.0000374 00:00:00.0000747 00:00:00.0000374 Terminal-Icons.psm1                   268 }
   0.74      780 00:00:00.0033748 00:00:00.0000043 00:00:00.0033748 00:00:00.0000043 Terminal-Icons.psm1                   116 process {
  1.714      780 00:00:00.0078151 00:00:00.0000100 00:00:00.0078151 00:00:00.0000100 Terminal-Icons.psm1                   117 $RGB = $RGB.Replace('#', '')
  3.203      780 00:00:00.0146011 00:00:00.0000187 00:00:00.0146011 00:00:00.0000187 Terminal-Icons.psm1                   118 $r   = [convert]::ToInt32($RGB.SubString(0,2), 16)
  1.066      780 00:00:00.0048576 00:00:00.0000062 00:00:00.0048576 00:00:00.0000062 Terminal-Icons.psm1                   119 $g   = [convert]::ToInt32($RGB.SubString(2,2), 16)
  1.038      780 00:00:00.0047293 00:00:00.0000061 00:00:00.0047293 00:00:00.0000061 Terminal-Icons.psm1                   120 $b   = [convert]::ToInt32($RGB.SubString(4,2), 16)
  1.736      780 00:00:00.0079142 00:00:00.0000101 00:00:00.0079142 00:00:00.0000101 Terminal-Icons.psm1                   122 "${script:escape}[38;2;$r;$g;$b`m"
  9.982      780 00:00:00.0455019 00:00:00.0000583 00:00:00.0455019 00:00:00.0000583 Terminal-Icons.psm1                   123 }
  0.062       80 00:00:00.0002845 00:00:00.0000036 00:00:00.0002845 00:00:00.0000036 Terminal-Icons.psm1                   143 {
  4.383       80 00:00:00.0199800 00:00:00.0002498 00:00:00.0080415 00:00:00.0001005 Terminal-Icons.psm1                   144 $cs.Types.Directories[$_.Name] = ConvertFrom-RGBColor -RGB $_.Value
  0.304       80 00:00:00.0013846 00:00:00.0000173 00:00:00.0013846 00:00:00.0000173 Terminal-Icons.psm1                   145 }
  0.113      148 00:00:00.0005156 00:00:00.0000035 00:00:00.0005156 00:00:00.0000035 Terminal-Icons.psm1                   154 {
  4.707      148 00:00:00.0214545 00:00:00.0001450 00:00:00.0106498 00:00:00.0000720 Terminal-Icons.psm1                   155 $cs.Types.Files.WellKnown[$_.Name] = ConvertFrom-RGBColor -RGB $_.Value
   1.79      148 00:00:00.0081613 00:00:00.0000551 00:00:00.0081613 00:00:00.0000551 Terminal-Icons.psm1                   156 }
   3.37     1644 00:00:00.0153595 00:00:00.0000093 00:00:00.0153595 00:00:00.0000093 Terminal-Icons.psm1                   159 {$_.Name -ne 'WellKnown' -and $_.Name -ne ''}
  0.391      544 00:00:00.0017823 00:00:00.0000033 00:00:00.0017823 00:00:00.0000033 Terminal-Icons.psm1                   159 {
 21.636      544 00:00:00.0986233 00:00:00.0001813 00:00:00.0390201 00:00:00.0000717 Terminal-Icons.psm1                   160 $cs.Types.Files[$_.Name] = ConvertFrom-RGBColor -RGB $_.Value
  1.769      544 00:00:00.0080646 00:00:00.0000148 00:00:00.0080646 00:00:00.0000148 Terminal-Icons.psm1                   161 }
  0.001        1 00:00:00.0000061 00:00:00.0000061 00:00:00.0000061 00:00:00.0000061 Terminal-Icons.psm1                   225 begin {
  0.005        1 00:00:00.0000216 00:00:00.0000216 00:00:00.0000216 00:00:00.0000216 Terminal-Icons.psm1                   226 $defaultPrefs = @{
  0.003        1 00:00:00.0000138 00:00:00.0000138 00:00:00.0000138 00:00:00.0000138 Terminal-Icons.psm1                   230 }
  0.001        1 00:00:00.0000067 00:00:00.0000067 00:00:00.0000067 00:00:00.0000067 Terminal-Icons.psm1                   232 process {
  0.288        1 00:00:00.0013107 00:00:00.0013107 00:00:00.0013107 00:00:00.0013107 Terminal-Icons.psm1                   233 if (Test-Path $Path) {
  0.326        1 00:00:00.0014866 00:00:00.0014866 00:00:00.0014866 00:00:00.0014866 Terminal-Icons.psm1                   235 Import-Clixml -Path $Path -ErrorAction Stop
  0.009        1 00:00:00.0000414 00:00:00.0000414 00:00:00.0000414 00:00:00.0000414 Terminal-Icons.psm1                   243 }
  0.001        1 00:00:00.0000066 00:00:00.0000066 00:00:00.0000066 00:00:00.0000066 Terminal-Icons.psm1                  1176 {
  1.192        1 00:00:00.0054335 00:00:00.0054335 00:00:00.0054335 00:00:00.0054335 Terminal-Icons.psm1                  1177 $userIconTheme = Import-CliXml -Path $_.FullName
  0.497        1 00:00:00.0022647 00:00:00.0022647 00:00:00.0022647 00:00:00.0022647 Terminal-Icons.psm1                  1178 $userThemeData.Themes.Icon[$userIconTheme.Name] = $userIconTheme
  0.005        1 00:00:00.0000216 00:00:00.0000216 00:00:00.0000216 00:00:00.0000216 Terminal-Icons.psm1                  1179 }
  0.002        1 00:00:00.0000070 00:00:00.0000070 00:00:00.0000070 00:00:00.0000070 Terminal-Icons.psm1                  1180 {
  0.421        1 00:00:00.0019182 00:00:00.0019182 00:00:00.0019182 00:00:00.0019182 Terminal-Icons.psm1                  1181 $userColorTheme = Import-CliXml -Path $_.FullName
  0.174        1 00:00:00.0007941 00:00:00.0007941 00:00:00.0007941 00:00:00.0007941 Terminal-Icons.psm1                  1182 $userThemeData.Themes.Color[$userColorTheme.Name] = $userColorTheme
 17.588        1 00:00:00.0801729 00:00:00.0801729 00:00:00.0001465 00:00:00.0001465 Terminal-Icons.psm1                  1183 $colorSequences[$userColorTheme.Name] = ConvertTo-ColorSequence -ColorData $userThemeData.Themes.Color[$user…
  0.002        1 00:00:00.0000097 00:00:00.0000097 00:00:00.0000097 00:00:00.0000097 Terminal-Icons.psm1                  1184 }
  0.001        1 00:00:00.0000059 00:00:00.0000059 00:00:00.0000059 00:00:00.0000059 Terminal-Icons.psm1                  1187 {
  0.005        1 00:00:00.0000206 00:00:00.0000206 00:00:00.0000206 00:00:00.0000206 Terminal-Icons.psm1                  1188 $userThemeData.Themes.Color[$_.Name] = $_.Value
  0.002        1 00:00:00.0000108 00:00:00.0000108 00:00:00.0000108 00:00:00.0000108 Terminal-Icons.psm1                  1189 }
  0.001        1 00:00:00.0000048 00:00:00.0000048 00:00:00.0000048 00:00:00.0000048 Terminal-Icons.psm1                  1190 {
  0.003        1 00:00:00.0000156 00:00:00.0000156 00:00:00.0000156 00:00:00.0000156 Terminal-Icons.psm1                  1191 $userThemeData.Themes.Icon[$_.Name] = $_.Value
  0.002        1 00:00:00.0000081 00:00:00.0000081 00:00:00.0000081 00:00:00.0000081 Terminal-Icons.psm1                  1192 }
  0.001        1 00:00:00.0000065 00:00:00.0000065 00:00:00.0000065 00:00:00.0000065 Terminal-Icons.psm1                  1195 {
  0.057        2 00:00:00.0002596 00:00:00.0001298 00:00:00.0002596 00:00:00.0001298 Terminal-Icons.psm1                  1196 $colorThemePath = Join-Path $userThemePath "$($_.Name)_color.xml"
   2.22        1 00:00:00.0101184 00:00:00.0101184 00:00:00.0101184 00:00:00.0101184 Terminal-Icons.psm1                  1197 $_.Value | Export-Clixml -Path $colorThemePath -Force
  0.005        1 00:00:00.0000223 00:00:00.0000223 00:00:00.0000223 00:00:00.0000223 Terminal-Icons.psm1                  1198 }
  0.001        1 00:00:00.0000064 00:00:00.0000064 00:00:00.0000064 00:00:00.0000064 Terminal-Icons.psm1                  1199 {
  0.048        2 00:00:00.0002193 00:00:00.0001096 00:00:00.0002193 00:00:00.0001096 Terminal-Icons.psm1                  1200 $iconThemePath = Join-Path $userThemePath "$($_.Name)_icon.xml"
  0.767        1 00:00:00.0034981 00:00:00.0034981 00:00:00.0034981 00:00:00.0034981 Terminal-Icons.psm1                  1201 $_.Value | Export-Clixml -Path $iconThemePath -Force
  0.004        1 00:00:00.0000162 00:00:00.0000162 00:00:00.0000162 00:00:00.0000162 Terminal-Icons.psm1                  1202 }
  0.001        1 00:00:00.0000067 00:00:00.0000067 00:00:00.0000067 00:00:00.0000067 Terminal-Icons.psm1                   410 process {
  0.178        1 00:00:00.0008099 00:00:00.0008099 00:00:00.0008099 00:00:00.0008099 Terminal-Icons.psm1                   411 Write-Debug ('Saving preferendces to [{0}]' -f $Path)
  0.086        1 00:00:00.0003900 00:00:00.0003900 00:00:00.0003900 00:00:00.0003900 Terminal-Icons.psm1                   412 $Preferences | Export-CliXml -Path $Path -Force
  0.006        1 00:00:00.0000260 00:00:00.0000260 00:00:00.0000260 00:00:00.0000260 Terminal-Icons.psm1                   413 }

Context

I am trying to reduce the load time of a new pwsh instance. Measure-Command {Import-Module Terminal-Icons} proves to be one of slow points of my $PROFILE.

Your Environment

  • Module version used: Terminal-Icons-0.9.0 from PSGallery, so the fixes from Slow import #13 are present.
  • Operating System and PowerShell version:
    pwsh 7.2.1 on a debian (installed via nix); pwsh-7.2.2 on a win10 (installed from MS Store)
    Both machines are well-off dev machines

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions