2012-10-31 40 views
7
đang

mẫu:

# 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 

Kết quả:

1845,1056
3160,1808
5029,2877
5521,3158
4504,2576
1804,1032

không có câu hỏi về sự khác biệt giữa các bước 2-6. Nhưng sự khác biệt giữa 1 và 2 và 6 là không thể giải thích: $ i trong các trường hợp này có loại "System.Int32".

+0

Tôi thấy các kết quả tương tự như bạn. –

+3

Không có gì sai với cách bạn đang đo thời gian thực hiện, nhưng để thử nghiệm trong tương lai bạn có thể muốn kiểm tra điều này tại dấu nhắc: get-help Measure-Command – EBGreen

+2

Điều thú vị là bạn làm '$ i = new -object-type Int64' hoặc '$ i = new-object -type Int32' và sau đó là' for ($ i = 1; $ i -le 1000000; $ i ++) {} ', bạn nhận được kết quả tương tự trên bảng (cho ints). Một cái gì đó trong toán tử cast đó có lẽ ... – zdan

Trả lời

4

Nếu bạn muốn có một lời giải thích tốt về sự khác biệt giữa Bước 1 và Bước 2 chỉ thử tại dấu nhắc lệnh:

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

Và sau đó:

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

này giả định @zdan xác nhận sự khác biệt là trong dàn diễn viên được thực hiện trong mọi vòng lặp. Bước 1 và 6 là những cái tên.

+0

+1 Tôi đã viết cùng một câu trả lời trước khi SO cảnh báo tôi về –

Các vấn đề liên quan