From dc659f5231b63321826ed378d2d9b5a252a664ee Mon Sep 17 00:00:00 2001 From: Svyatoslav Pidgorny <25411814+SP3269@users.noreply.github.com> Date: Tue, 27 May 2025 00:24:13 +1000 Subject: [PATCH] Add a note about array addition to the "PowerShell scripting performance considerations" page (#12106) * Add a note about array addition * Update script-authoring-considerations.md * Update script-authoring-considerations.md --------- Co-authored-by: Sean Wheeler --- .../performance/script-authoring-considerations.md | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/reference/docs-conceptual/dev-cross-plat/performance/script-authoring-considerations.md b/reference/docs-conceptual/dev-cross-plat/performance/script-authoring-considerations.md index 9d14e399bf7a..2e6895cd0421 100644 --- a/reference/docs-conceptual/dev-cross-plat/performance/script-authoring-considerations.md +++ b/reference/docs-conceptual/dev-cross-plat/performance/script-authoring-considerations.md @@ -113,6 +113,11 @@ $results += Get-SomethingElse $results ``` +>[!NOTE] +> In PowerShell 7.5, array addition was optimized and no longer creates a new array for each +> operation. The performance considerations described here still apply to PowerShell versions +> prior to 7.5. For more information, see [What's New in PowerShell 7.5][01]. + Array addition is inefficient because arrays have a fixed size. Each addition to the array creates a new array big enough to hold all elements of both the left and right operands. The elements of both operands are copied into the new array. For small collections, this overhead may not matter. @@ -880,21 +885,22 @@ Iterations Test TotalMilliseconds RelativeSpeed - [Add-Member][18] +[01]: ../../whats-new/what-s-new-in-powershell-75.md#engine-improvements [02]: ../../learn/deep-dives/everything-about-hashtable.md [03]: ../../learn/deep-dives/everything-about-null.md [04]: xref:System.Void [05]: xref:Microsoft.PowerShell.Core.Out-Null [06]: xref:System.Collections.Generic.List`1 -[07]: xref:System.Collections.Generic.List`1.Add* +[07]: xref:System.Collections.Generic.List`1.Add%2A [08]: xref:System.String [09]: xref:System.Int32 [10]: xref:System.Object -[11]: xref:System.Collections.Generic.List`1.ToArray*#system-collections-generic-list-1-toarray +[11]: xref:System.Collections.Generic.List%601.ToArray%2A#system-collections-generic-list-1-toarray [12]: xref:System.Collections.ArrayList [13]: /powershell/module/microsoft.powershell.core/about/about_join [14]: xref:System.Text.StringBuilder [15]: xref:System.IO.StreamReader -[16]: xref:System.IO.File.ReadLines* +[16]: xref:System.IO.File.ReadLines%2A [17]: xref:Microsoft.PowerShell.Utility.Write-Host [18]: xref:Microsoft.PowerShell.Utility.Add-Member [19]: /powershell/module/microsoft.powershell.core/about/about_hash_tables#creating-ordered-dictionaries