gpt4 book ai didi

powershell - 为什么在 PowerShell 中 "for($i=1; $i -le 1000000; $i++){}"的执行时间比 "for([int]$i=1; $i -le 1000000; $i++){}"快

转载 作者:行者123 更新时间:2023-12-03 16:34:36 27 4
gpt4 key购买 nike

示例代码:

# Step 1
$start = get-date
for($i=1; $i -le 1000000; $i++){}
$end = get-date
($end-$start).TotalMilliseconds
Remove-Variable i

# Step 2
$start = get-date
for([int]$i=1; $i -le 1000000; $i++){}
$end = get-date
($end-$start).TotalMilliseconds
Remove-Variable i

# Step 3
$start = get-date
for([int64]$i=1; $i -le 1000000; $i++){}
$end = get-date
($end-$start).TotalMilliseconds
Remove-Variable i

# Step 4
$start = get-date
for([float]$i=1; $i -le 1000000; $i++){}
$end = get-date
($end-$start).TotalMilliseconds
Remove-Variable i

# Step 5
$start = get-date
for([double]$i=1; $i -le 1000000; $i++){}
$end = get-date
($end-$start).TotalMilliseconds
Remove-Variable i

# Step 6
$start = get-date
for($i=1; $i -le 1000000; $i++){}
$end = get-date
($end-$start).TotalMilliseconds
Remove-Variable i

结果:

1845.10563160.18085029.28775521.31584504.25761804.1032

步骤 2-6 之间的差异毫无疑问。但是 1 和 2 和 6 之间的差异是莫名其妙的:在这些情况下,$i 的类型为“System.Int32”。

最佳答案

如果您想很好地解释第 1 步和第 2 步之间的区别,只需在命令提示符下尝试:

Remove-Variable i
Trace-Command -Name TypeConversion -Expression {for($i=1; $i -le 1000000; $i++){}} -PSHost

进而 :
Remove-Variable i
Trace-Command -Name TypeConversion -Expression {for([int]$i=1; $i -le 1000000; $i++){}} -PSHost

这证实了@zdan 假设的不同之处在于每个循环中完成的类型转换。步骤 1 和 6 相同。

关于powershell - 为什么在 PowerShell 中 "for($i=1; $i -le 1000000; $i++){}"的执行时间比 "for([int]$i=1; $i -le 1000000; $i++){}"快,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13163635/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com