So most of my PowerShell scripts include logging or export functionality which requires the current date/time to be in a particular format. So this got me thinking, just which method actually performs better.
Get-Date Format Parameter
Command:
Individual Times (ms): 0.9507, 0.3538, 0.3797, 0.2996, 0.2996, 0.3575, 0.1991, 0.2011, 0.1297, 0.1625
Overall Avg (ms): 0.33333
Format Operator
Command:
Individual Times (ms): 1.6881, 0.4051, 1.2866, 0.7377, 0.1761, 0.4794, 0.9889, 0.7307, 0.5377, 0.8777
Overall Avg (ms): 0.7908
And the winner is....... Get-Date with the Format parameter, most likely because the formatting is conducted early in the stack, (i.e. closer to the .Net framework layer). However if you look at some of the individual results there isn't much in it at times.
The full script used to perform this test is as follows:
Get-Date Format Parameter
Command:
Get-Date -Format {yyyyMMddhhmmss}
Individual Times (ms): 0.9507, 0.3538, 0.3797, 0.2996, 0.2996, 0.3575, 0.1991, 0.2011, 0.1297, 0.1625
Overall Avg (ms): 0.33333
Format Operator
Command:
"{0:yyyy}{0:MM}{0:dd}{0:hh}{0:mm}{0:ss}" -f (Get-Date)
Individual Times (ms): 1.6881, 0.4051, 1.2866, 0.7377, 0.1761, 0.4794, 0.9889, 0.7307, 0.5377, 0.8777
Overall Avg (ms): 0.7908
And the winner is....... Get-Date with the Format parameter, most likely because the formatting is conducted early in the stack, (i.e. closer to the .Net framework layer). However if you look at some of the individual results there isn't much in it at times.
The full script used to perform this test is as follows:
[array]$Results = @(); for ($i=0; $i -lt 10; $i++) { $Results += Measure-Command { Get-Date -Format {yyyyMMddhhmmss} } | select TotalMilliseconds; #helps give real results by letting the system pause for a moment Start-Sleep -Seconds 1; } Write-Host "Get-Date format paramter results" $Results [array]$Results = @(); for ($i=0; $i -lt 10; $i++) { $Results += Measure-Command { "{0:yyyy}{0:MM}{0:dd}{0:hh}{0:mm}{0:ss}" -f (Get-Date) } | select TotalMilliseconds; #helps give real results by letting the system pause for a moment Start-Sleep -Seconds 1; } Write-Host "Format operator results" $Results
No comments:
Post a Comment