Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #! /usr/bin/pwsh
- # Consider these variations on coding this series of
- # string concatenations
- $count=10000
- # get our 'native' end of line
- $eol=@'
- '@
- "eol is `"$eol`""
- '$s = $s + "xyzzy" + "`n"'
- $s = ""
- "$(Measure-Command {1..$count | ForEach-Object {$s = $s + "xyzzy" + "`n"} } | Select-Object -exp ticks)`t$($s.length)"
- '$s = $s + ("xyzzy" + "`n")'
- $s = ""
- "$(Measure-Command {1..$count | ForEach-Object {$s = $s + ("xyzzy" + "`n")} } | Select-Object -exp ticks)`t$($s.length)"
- '$s = $s + "xyzzy`n"'
- $s = ""
- "$(Measure-Command {1..$count | ForEach-Object {$s = $s + "xyzzy`n"} } | Select-Object -exp ticks)`t$($s.length)"
- '$s = $s + "xyzzy`n"'
- $s = ""
- "$(Measure-Command {1..$count | ForEach-Object {$s = $s + "xyzzy`n"} } | Select-Object -exp ticks)`t$($s.length)"
- '$s += "xyzzy" + "`n"'
- $s = ""
- "$(Measure-Command {1..$count | ForEach-Object {$s += "xyzzy" + "`n"} } | Select-Object -exp ticks)`t$($s.length)"
- # String formatting is faster than doing multiple concatenations if you can do multiple at once:
- '$s += "{0}{1}" -f "xyzzy", "`n"'
- $s = ""
- "$(Measure-Command {1..$count | ForEach-Object {$s += "{0}{1}" -f "xyzzy", "`n"} } | Select-Object -exp ticks)`t$($s.length)"
- # arrays are even worse
- '$sarray += "xyzzy`n"'
- $s = ""
- $sarray = @("")
- Measure-Command {
- 1..$count | ForEach-Object {$sarray += "xyzzy`n"}
- $s=$sarray -Join ""
- } | Select-Object -exp ticks
- $s.length
- #use StringBuilder.
- '$s.Append("xyzzy"); $s.Append("`n")'
- $s = New-Object Text.StringBuilder
- Measure-Command {1..$count | ForEach-Object {$s.Append("xyzzy"); $s.Append("`n")} } |
- Select-Object -exp ticks
- $s.length
- '$s.Append("xyzzy" + "`n")'
- $s = New-Object Text.StringBuilder
- Measure-Command {1..$count | ForEach-Object {$s.Append("xyzzy" + "`n")} } |
- Select-Object -exp ticks
- $s.length
- '$s.Append("xyzzy`n")'
- $s = New-Object Text.StringBuilder
- Measure-Command {1..$count | ForEach-Object {$s.Append("xyzzy`n")} } |
- Select-Object -exp ticks
- $s.length
- # @''@ used to include native newline.
- '$s.Append(@)'
- $s = New-Object Text.StringBuilder
- Measure-Command {1..$count | ForEach-Object {$s.Append(@'
- xyzzy
- '@
- )} } |
- Select-Object -exp ticks
- $s.length
- '$list.Add("xyzzy`n")'
- Measure-Command {
- $list = New-Object System.Collections.Generic.List[System.String]
- for ($i = 0; $i -lt $count; $i++)
- {
- $list.Add("xyzzy`n")
- }
- $s = $list.ToArray() -Join ""
- } |
- Select-Object -exp ticks
- $s.length
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement