2009-12-31 4 views

Trả lời

37

Đối với VBScript bạn có thể sử dụng Timer: (. Đó là một môi trường ASP)

StartTime = Timer() 
EndTime = Timer() 
Response.Write("Seconds to 2 decimal places: " & FormatNumber(EndTime - StartTime, 2)) 

Hoặc ASP Profiler

Đối với JavaScript bạn có thể sử dụng ngày:

var start = new Date().getTime() 
alert("Milliseconds: " + (new Date().getTime() - start)) 

Firebug cũng có một profiler cho JavaScript.

+0

Wow đã có một loạt phản hồi tuyệt vời ở đây. Tôi nghĩ rằng phương pháp "StartTime = Timer() EndTime = Timer()" sẽ hoạt động tốt nhất cho tôi. Tôi không cần bất cứ điều gì quá phức tạp hoặc chi tiết tốt và điều này làm việc cho mục đích của tôi. Cảm ơn. –

0

Điều này thực sự phụ thuộc vào những gì bạn đang cố gắng đo lường?

Nếu đang thử nghiệm một cái gì đó và muốn biết mảnh nào đó đi bao lâu, bạn chỉ có thể tuyên bố một sự khởi đầu và ngăn chặn biến thời gian, sau đó làm nên sự khác biệt giữa chúng ....

0
d = new Date(); 
x = 0; 
for (i = 0; i < 1e7; ++i) { x += i; } 
d2 = new Date(); 
d2 - d 

12296 

Sử dụng các đối tượng Date , trả về một số valueOf() tính bằng mili giây kể từ ngày 1 tháng 1 năm 1970. Sau đó, bạn có thể trừ thời gian để có thời gian trôi qua tính bằng mili giây.

+0

Lưu ý: Không phải 100% chính xác http: // ejohn.org/blog/accuracy-of-javascript-time/ –

4

Đối với Javascript, tôi sẽ khuyên bạn nên sử dụng một hồ sơ, giống như một built-in trong Firebug:

alt text http://getfirebug.com/screenScript-profile.gif

lựa chọn thay thế khác có thể là một sự đi kèm với Google Chrome, hoặc IE8

Nếu bạn muốn thực hiện theo chương trình, bạn có thể sử dụng các đối tượng Date để có sự khác biệt về thời gian:

var startTime = new Date(); 
// ... 
// ... 
var endTime = new Date(); 
var delta = endTime - startTime; // difference in milliseconds 
+3

Lưu ý: sử dụng phương pháp Ngày, mong đợi độ chính xác của thời gian tối đa là 15ms (trên Windows, ít nhất): http://ejohn.org/blog/ precision-of-javascript-time/ –

+0

Cảm ơn Josh !, Tôi đang tìm kiếm bài viết đó! – CMS

+0

Bạn có thể mong đợi cùng một vấn đề về độ chính xác trong một con bọ lửa giống như khi thực hiện JavaScript bình thường. Nó cũng có vấn đề về hiệu ứng người quan sát, làm chậm JavaScript của bạn vì nó chạy trong cùng một chuỗi giao diện người dùng của trình duyệt mà javascript thực hiện. – Annie

0

This là một bài viết tuyệt vời về thời gian JavaScript, từ cuốn sách "Ngay cả trang web nhanh hơn". Hai điều cần ghi nhớ là các đối tượng JavaScript Date thường có độ phân giải lớn tới 15ms (điều này thay đổi tùy theo trình duyệt và hệ điều hành), và hầu hết các trình profilers có một số observer effect. Lưu ý rằng Google Speed Tracer (mới kể từ khi bài viết được xuất bản) hết quá trình và thu thập dữ liệu không đồng bộ để giảm thiểu hiệu ứng của người quan sát.

1

Tìm thấy chức năng hoàn hảo với đúng Giờ/Phút/Giây định dạng ở đây: https://social.technet.microsoft.com/wiki/contents/articles/633.vbscript-determine-script-execution-time.aspx

Cách sử dụng:

dtmStartTime = Timer 
Wscript.Echo "Hello, World!" 
Wscript.Sleep 1000 
Wscript.Echo "Script completed in " & GetElapsedTime 

Chức năng:

Function GetElapsedTime 
    Const SECONDS_IN_DAY = 86400 
    Const SECONDS_IN_HOUR = 3600 
    Const SECONDS_IN_MINUTE = 60 
    Const SECONDS_IN_WEEK = 604800 

    dtmEndTime = Timer 

    seconds = Round(dtmEndTime - dtmStartTime, 2) 
    If seconds < SECONDS_IN_MINUTE Then 
     GetElapsedTime = seconds & " seconds " 
     Exit Function 
    End If 
    If seconds < SECONDS_IN_HOUR Then 
     minutes = seconds/SECONDS_IN_MINUTE 
     seconds = seconds MOD SECONDS_IN_MINUTE 
     GetElapsedTime = Int(minutes) & " minutes " & seconds & " seconds " 
     Exit Function 
    End If 
    If seconds < SECONDS_IN_DAY Then 
     hours = seconds/SECONDS_IN_HOUR 
     minutes = (seconds MOD SECONDS_IN_HOUR)/SECONDS_IN_MINUTE 
     seconds = (seconds MOD SECONDS_IN_HOUR) MOD SECONDS_IN_MINUTE 
     GetElapsedTime = Int(hours) & " hours " & Int(minutes) & " minutes " & seconds & " seconds " 
     Exit Function 
    End If 
    If seconds < SECONDS_IN_WEEK Then 
     days = seconds/SECONDS_IN_DAY 
     hours = (seconds MOD SECONDS_IN_DAY)/SECONDS_IN_HOUR 
     minutes = ((seconds MOD SECONDS_IN_DAY) MOD SECONDS_IN_HOUR)/SECONDS_IN_MINUTE 
     seconds = ((seconds MOD SECONDS_IN_DAY) MOD SECONDS_IN_HOUR) MOD SECONDS_IN_MINUTE 
     GetElapsedTime = Int(days) & " days " & Int(hours) & " hours " & Int(minutes) & " minutes " & seconds & " seconds " 
     Exit Function 
    End If 
End Function